资源预览内容
第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
第9页 / 共28页
第10页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第10章App微信分享的实现倚动实验室CONTENTS10.1App微信分享的操作流程目录10.2Android平台分享到微信开发流程10.3IOS平台分享到微信开发流程10.1App微信分享的操作流程微信分享的操作流程10.1.1微信开放平台 分享到微信时需要用到微信开放平台,微信开放平台实际上是第三方移动程序提供接口。用户在APP上可以把看到的内容通过微信开放平台提供的接口发送给微信好友或分享至朋友圈,这样App上的内容就可以在微信平台获得更广泛的传播。10.1.2将App内容分享给微信好友 在App中想把一些截图、链接等分享给自己的微信好友的时候,需要点击“分享”、“通发送给好友”按钮,就能把信息发送给微信好友。好友收到信息后,轻轻一点,就可以查看详情。还可以使用你的微信App来查看内容(没有安装微信的用户将会被提示去下载安装)。将App内容分享给微信好友10.1.2将App内容分享给微信好友 如果我们想如果我们想APP软件中想把一些截图、链接等精彩内容分享到微信朋友圈,需要软件中想把一些截图、链接等精彩内容分享到微信朋友圈,需要点点击“分享分享”、“分享到朋友圈分享到朋友圈”按钮,按钮,完成授完成授权后,内容就可以后,内容就可以发送到微信的服送到微信的服务器器。自己。自己好友在朋友圈中就能好友在朋友圈中就能马上看到上看到分享的内容。分享的内容。还可以使用你的可以使用你的微信微信来来查看看分享分享内容(没有安装内容(没有安装微信微信的用的用户将会被提示去下将会被提示去下载安装)安装),将将App内容分享到微信朋友内容分享到微信朋友圈圈10.2Android 平台分享到微信开发流程平台分享到微信开发流程10.2.1申请AppID 开发者开发微信分享功能需要到微信开放平台官网的移动应用开发界面,通过填写应用名称、开发者开发微信分享功能需要到微信开放平台官网的移动应用开发界面,通过填写应用名称、应用简介、应用图标,各平台的下载地址等信息创建应用。将开发应用的信息进行提交审核,只有审核应用简介、应用图标,各平台的下载地址等信息创建应用。将开发应用的信息进行提交审核,只有审核通过的应用才能获取通过的应用才能获取AppID,才能进行进一步的开发。,才能进行进一步的开发。10.2.2下载微信终端开发工具包 到微信开发平台资源中心下载开发工具包,主要包含到微信开发平台资源中心下载开发工具包,主要包含3部分内容:部分内容:libammsdk.jar(每个第三方应(每个第三方应用必须要导入该用必须要导入该sdk库,用于实现与微信的通信)、库,用于实现与微信的通信)、API文档(供开发者查阅使用)、文档(供开发者查阅使用)、 界面小工具源码界面小工具源码(封装了界面表现的工具类,以及一些界面风格)。(封装了界面表现的工具类,以及一些界面风格)。10.2.3搭建开发环境(1)在)在“豹考通豹考通”工程中找到工程中找到libs目录,将开发工具包中目录,将开发工具包中libs目录下的目录下的libammsdk.jar复制到该目录复制到该目录中中将将libammsdk.jar包复制到包复制到libs目录目录下下(2) 右击右击“豹考通豹考通”工程,找到工程,找到Build Path中的中的Configure Build Path,在,在Libraries通过通过Add Jars导入工程导入工程libs目录下的目录下的libammsdk.jar文件,文件,将将libammsdk.jar导入导入LibrariesLibraries目录目录下下(3) 在在AndroidManifest.xml文件中进行设置,添加必要的权限支文件中进行设置,添加必要的权限支持。持。程序清单:程序清单:SourceCodeChapter10AndroidNewScoreAndroidManifest.xml uses-permission android:name=android.permission.WRITE_EXTERNAL_STORAGE/ (4)在代码中使用开发工)在代码中使用开发工具包具包I .I .注册到微信注册到微信要使程序启动后微信终端能响应程序,必须在代码中向微信终端注册要使程序启动后微信终端能响应程序,必须在代码中向微信终端注册“豹考通豹考通”的的id,可以在程,可以在程序入口序入口Activity的的onCreate回调函数处或其他合适的地方将应用回调函数处或其他合适的地方将应用id注册到微信。注册到微信。程序清单:程序清单:SourceCodeChapter10AndroidNewScore wxapi WXEntryActivity.java.javaprivate static final int TIMELINE_SUPPORTED_VERSION = 0x*;/从官网上申请到的合法从官网上申请到的合法AppIDAppID private IWXAPI api;/ IWXAPI 是第三方是第三方app和微信通信的和微信通信的openapi接口接口 Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); / 通过通过WXAPIFactory工厂,获取工厂,获取IWXAPI的实例的实例 api = WXAPIFactory.createWXAPI(this, Constants.WeiXin_App_Id, false); /将将“豹考通豹考通”的的AppIDAppID注册到微信注册到微信 api.handleIntent(getIntent(), this); II. .II. .发送请求或响应到微发送请求或响应到微信信 “豹考通豹考通”的程序要发送请求或发送响应到微信终端,可以通过的程序要发送请求或发送响应到微信终端,可以通过IWXAPI的的 sendReq 和和 sendResp 两个方法来实现。两个方法来实现。sendReq是是“豹考通豹考通”主动发送消息给微信,发送完成之后会切回到主动发送消息给微信,发送完成之后会切回到“豹豹考通考通”界面。界面。sendResp是微信向是微信向“豹考通豹考通”请求数据,请求数据,“豹考通豹考通”回应数据之后会切回到微信界面。回应数据之后会切回到微信界面。sendReq的实现示例,如下面的清单文件所示。的实现示例,如下面的清单文件所示。程序清单:程序清单:SourceCodeChapter10AndroidNewScore score util Util/初始化一个初始化一个WXAppExtendObject对象对象final WXAppExtendObject appdata = new WXAppExtendObject();appdata.fileData = 豹考通贴心的志愿填报助手:豹考通贴心的志愿填报助手:n查询学校学校历年年录取取线n预测学校的投档学校的投档线n推荐学校和推荐学校和专业n生成志愿生成志愿报告告单,n详情请参详情请参考:考:http:/www.xs360.cn/.getBytes();appdata.extInfo = 来自豹考通的信息来自豹考通的信息;/用用WXAppExtendObject对象初始化一个对象初始化一个WXMediaMessage对象对象final WXMediaMessage msg = new WXMediaMessage();msg.setThumbImage(ThumbnailUtils.extractThumbnail(bmp, 200, 200);msg.title = 豹考通豹考通;msg.description = 豹考通贴心的志愿填报助手:豹考通贴心的志愿填报助手:n查询学校学校历年年录取取线n预测学校的投档学校的投档线n推荐学校和推荐学校和专业n生成志愿生成志愿报告告单,n详情请参考:详情请参考:http:/www.xs360.cn/;msg.mediaObject = appdata;/构造一个构造一个req对象象SendMessageToWX.Req req = new SendMessageToWX.Req();req.transaction = String.valueOf(System.currentTimeMillis();req.message = msg;req.scene = flag = 0 ? SendMessageToWX.Req.WXSceneSession: SendMessageToWX.Req.WXSceneTimeline;/调用调用api接口接口发送数据到送数据到wxApi.sendReq(req);sendRespsendResp的实现示例,如下面的清单文件所示。的实现示例,如下面的清单文件所示。public void onResp(BaseResp resp) / 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法第三方应用发送到微信的请求处理后的响应结果,会回调到该方法String result = ;switch (resp.errCode) case BaseResp.ErrCode.ERR_OK:result = 分享成功!分享成功!;break;case BaseResp.ErrCode.ERR_USER_CANCEL:result = 取消分享!取消分享!;break;case BaseResp.ErrCode.ERR_AUTH_DENIED:result = 分享拒绝!分享拒绝!;break;default:result = 分享失败!分享失败!;break;Toast.makeText(this, result, Toast.LENGTH_LONG).show();Intent intent=new Intent(this,MainActivity.class);startActivity(intent);this.finish();III. 接收微信的请求及返回接收微信的请求及返回值值 为了接收微信发送的请求或者接收发送到微信请求的响应结果,需要下面操作:为了接收微信发送的请求或者接收发送到微信请求的响应结果,需要下面操作:a. a. 在在“豹考通豹考通”包目录下面新增加一个包,并再该包下新增一个包目录下面新增加一个包,并再该包下新增一个WXEntryActivity类,该类继承类,该类继承自自Activity,新增新增WXEntryActivity类类并在并在AndroidManifest.xml清单文件里面加上清单文件里面加上exported属性,设置为属性,设置为true。程序清单:程序清单:SourceCodeChapter10AndroidNewScoreAndroidManifest.xmlb. b. 实现实现IWXAPIEventHandler接口,微信发送的请求将回调到接口,微信发送的请求将回调到onReq方法,发送到微信请方法,发送到微信请求的响应结果将回调到求的响应结果将回调到onResp方法。方法。c. c. 在在WXEntryActivity中将接收到的中将接收到的intent及实现了及实现了IWXAPIEventHandler接口的对象传递接口的对象传递给给IWXAPI接口的接口的handleIntent方法。方法。程序清单:程序清单:SourceCodeChapter10AndroidNewScore score util Utilapi.handleIntent(getIntent(), this);当微信发送请求到你的应用,将通过当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的接口的onReq方法进行回调,类似的,方法进行回调,类似的,应用请求微信的响应结果将通过应用请求微信的响应结果将通过onResp回调。回调。10.3IOS平台分享到微信的开发流程平台分享到微信的开发流程10.3.1向微信注册AppID IOS IOS开发者开发微信分享功能需要到微信开放平台官网的移动应用开发界面,通过填写应用名开发者开发微信分享功能需要到微信开放平台官网的移动应用开发界面,通过填写应用名称、应用简介、应用图标,各平台的下载地址等信息创建应用。将开发应用的信息进行提交审核,只称、应用简介、应用图标,各平台的下载地址等信息创建应用。将开发应用的信息进行提交审核,只有审核通过的应用才能获取有审核通过的应用才能获取AppID,才能进行进一步的开发,申请成功的效果如下图所示。,才能进行进一步的开发,申请成功的效果如下图所示。微信开放平台微信开放平台AppID申请成功界面申请成功界面10.3.2下载微信终端SDK文件 在在微信开发平台资源中心下载分享微信开发工具包,主要包含三部分内容:微信开发平台资源中心下载分享微信开发工具包,主要包含三部分内容: libWeChatSDK.a,WXApi.h,WXApiObject.h,IOSIOS资源下载中心资源下载中心10.3.3搭建开发环境(1)将下载好的)将下载好的SDK文件中文件中 libWeChatSDK.a,WXApi.h,WXApiObject.h 三个文件添加到三个文件添加到“豹考通豹考通”工程中工程中SDKExport文件中,文件中,添加添加SDK文件文件(2)微信开放平台新增了微信模块用户统计功能,便于开发者统计微信功能模块的用户使用和)微信开放平台新增了微信模块用户统计功能,便于开发者统计微信功能模块的用户使用和活跃情况。开发者需要在工程中链接上活跃情况。开发者需要在工程中链接上:SystemConfiguration.framework,libz.dylib, Libsqlite3.0.dylibibsqlite3.0.dylib。(3)在)在“豹考通豹考通”工程文件中选择工程文件中选择Build Setting,在,在Search Paths中添加中添加 libWeChatSDK.a ,WXApi.h,WXApiObject.h 三个文件所在位置,如图三个文件所在位置,如图10-9所示。所示。( (注:请使用注:请使用Xcode4.5及以上版本及以上版本)添加添加SDK文件所在位置文件所在位置(4) 在在Xcode中,选择你的工程设置项,选中中,选择你的工程设置项,选中“TARGETS”一栏,在一栏,在“info”标签栏的标签栏的“URL type“添加添加“URL scheme”,也就是也就是“豹考通豹考通”注册的注册的 AppID.添加添加SDK文件所在位置文件所在位置(5)在)在“豹考通豹考通”API的文件中的文件中import WXApi.h 头文件,并增加头文件,并增加 WXApiDelegate 协议。协议。导入导入WXApi.h头文件和增加头文件和增加WXApiDelegate 协协议议10.3.4在代码中使用开发工具包(1) 要使要使“豹考通豹考通”程序启动后微信终端能响应程序启动后微信终端能响应“豹考通豹考通”,必须在代码中向微信终端注册,必须在代码中向微信终端注册“豹考通豹考通”的的id,如下图所示。这个,如下图所示。这个id也就是开始我们在微信开放平台中申请的也就是开始我们在微信开放平台中申请的App id。向微信终端注册向微信终端注册“豹考通豹考通”的的id(2)现在)现在“豹考通豹考通”要实现和微信终端交互的具体请求与回应,因此需要实现要实现和微信终端交互的具体请求与回应,因此需要实现WXApiDelegate协议的协议的reqonReq和和resp两个方法。两个方法。reqonReq方法是微信终端向方法是微信终端向“豹考通豹考通”发起发起请求,要求请求,要求“豹考通豹考通”响应。响应。“豹考通豹考通”响应完后必须调用响应完后必须调用sendRsp返回。在调用返回。在调用sendRsp返回返回时,会切回到微信终端程序界面。而时,会切回到微信终端程序界面。而Respesp方法是方法是“豹考通豹考通”向微信发送了向微信发送了sendReq的请求,那的请求,那么么onResp会被回调。会被回调。sendReq请求调用后,会切到微信终端程序界面。请求调用后,会切到微信终端程序界面。(3)如果)如果“豹考通豹考通”程序要发消息给微信,那么需要调用程序要发消息给微信,那么需要调用WXApi的的sendReq函数。函数。(BOOL) sendReq:(BaseReq*)req其中其中req参数为参数为SendMessageToWXReq类型。需要注意的是,类型。需要注意的是,SendMessageToWXReq的的scene成员,如果成员,如果scene填填WXSceneSession,那么消息会发送至微信的,那么消息会发送至微信的会话内。如果会话内。如果scene填填WXSceneTimeline,那么消息会发送至朋友圈。如果,那么消息会发送至朋友圈。如果scene填填WXSceneFavorite,那么消息会发送到那么消息会发送到“我的收藏我的收藏”中。中。scene默认值为默认值为WXSceneSession。 接下来了解了接下来了解了IOS客户端微信分享的环境搭建及相关知识后,在项目中创建一个客户端微信分享的环境搭建及相关知识后,在项目中创建一个UIButton,用,用于进行微信分享。于进行微信分享。程序清单:程序清单:SourceCodeChapter10IOSNewScoreReportViewController.m1. - (void)shareAction2. 3. _ShareStyleActionSheet = UIActionSheet allocinitWithTitle:nil delegate:self cancelButtonTitle:取取消消 destructiveButtonTitle:nil otherButtonTitles:发送给好友发送给好友,分享到朋友圈分享到朋友圈, nil;4. _ShareStyleActionSheet.tag =1;5. _ShareStyleActionSheet.actionSheetStyle = UIActionSheetStyleBlackTranslucent;6. _ShareStyleActionSheet showInView:self.myScrollView;7. _ShareStyleActionSheet release;8. 这里我们创建了一个这里我们创建了一个UIActionSheet的实例,并进行初始化,设置了三个按钮,分别是的实例,并进行初始化,设置了三个按钮,分别是“发送发送给好友给好友”、“分享到朋友圈分享到朋友圈”和和“取消取消”,然后设置了,然后设置了UIActionSheet实例的实例的tag值,便于调用它的协值,便于调用它的协议方法。议方法。1. - (void)sharedByWeChatWithText:(NSString *)WeChatMessage sceneType:(int)sceneType2. 3. SendMessageToWXReq *req = SendMessageToWXReq alloc initautorelease;4. req.text = WeChatMessage;5. req.bText = YES;6. req.scene = sceneType;7. WXApi sendReq:req;8. 这个方法是分享文字的方法,注意方法里面通过这个方法是分享文字的方法,注意方法里面通过SendMessageToWXReq SendMessageToWXReq 类的实例调用了类的实例调用了sceneType方法,当值为方法,当值为0时,将文本消息发送给微信好友;当值为时,将文本消息发送给微信好友;当值为1时,将文本消息分享到朋友圈;时,将文本消息分享到朋友圈;当值为当值为2时,将文本消息加入到微信收藏中。时,将文本消息加入到微信收藏中。1. - (void)sharedByWeChatWithImage:(UIImage *)image sceneType:(int)sceneType2. 3. WXMediaMessage *message = WXMediaMessage message;4. message setThumbImage:image;5. WXImageObject *ext = WXImageObject object;6. ext.imageData = UIImagePNGRepresentation(image);7. message.mediaObject = ext;8. SendMessageToWXReq *req = SendMessageToWXReq alloc initautorelease;9. req.bText = NO;10. req.message = message;11. req.scene = sceneType;12. WXApi sendReq:req;13. 这是微信这是微信API为我们提供的分享图片的方法,调用此方法时,将需要分享的图片作为此方法为我们提供的分享图片的方法,调用此方法时,将需要分享的图片作为此方法的参数传入即可。的参数传入即可。 最后,我们需要实现最后,我们需要实现UIActionSheet的协议方法,注意使用协议方法前,我们需要在的协议方法,注意使用协议方法前,我们需要在.h文件中文件中引入引入。1. #pragma mark - UIActionSheet Delegate2. - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex3. 4. if (actionSheet.tag=1) 5. if (buttonIndex = 0) 6. self sharedByWeChatWithText:欢迎使用豹考通迎使用豹考通https:/itunes.apple.com/cn/app/bao-kao-tong/id886998965?mt=8 sceneType:0;7. 8. else if (buttonIndex = 1) 9. self sharedByWeChatWithText:欢迎使用豹考通迎使用豹考通https:/itunes.apple.com/cn/app/bao-kao-tong/id886998965?mt=8 sceneType:1;10. 11. 12. 当单击当单击buttonIndex为为0的按钮,也就是的按钮,也就是“发送给好友发送给好友”时,我们的时,我们的sceneType为为0;当;当buttonIndxe为为1时,也就是时,也就是“分享到朋友圈分享到朋友圈”,sceneType为为1,调用,调用“sharedByWeChatWithText:”方法发送文本,同样的,你也可以调用方法发送文本,同样的,你也可以调用sharedByWeChatWithImagesharedByWeChatWithImage方法发送图片,运行程序方法发送图片,运行程序即可实现微信分享功能。即可实现微信分享功能。课后练习1、在微信开发平台分别注册Android和IOS微信分享开发的AppId。2、在微信平台上分别下载Android和IOS微信分享开发的工具,搭建Android和IOS微信分享开发的环境。3、思考“豹考通”微信分享设计的思路,提出自己可以改进的见解。4、从微信开发平台下载Android平台参考手册或微信SDKSampleDemo源码查看相关内容。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号