第10章 App微信分享的实现 倚动实验室.

Slides:



Advertisements
Similar presentations
“后PC”时代 移动电子商务创新型人才培养 2016年4月28日 中国.重庆 北京博导前程信息技术股份有限公司 杨东飞.
Advertisements

第13章 繪圖與多媒體 13-1 顯示圖檔-行動相簿 13-2 音樂播放-音樂播放器 13-3 影片播放-視訊播放器
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
C#程序设计案例教程 第3章 程 序 结 构.
實驗五:多媒體播放器選單介面.
尔雅慕课学生操作手册说明.
Part 2 開發Android應用程式的流程
锡域社会化分销系统 (第二版).
位置與地圖應用 此投影片為講解Android如何取得定位經緯度和使用Google Map地圖.
第 5 章 流程控制 (一): 條件分支.
第二章 JAVA语言基础.
選擇 運算式 邏輯運算 if指令 流程圖基本觀念 程式註解 巢狀if指令 switch指令.
第三章 控制结构.
第1章 导论 倚动实验室.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
實驗四:單位轉換程式.
第二十八章 開發新的VCL元件 雖然BCB內提供了很多VCL元件,但是一定還有一些我們常常需要用的介面並沒有製作成VCL元件,或是一些個人化的介面,我們也有需要做成VCL元件。在第十三章,我們將介紹如何自行開發新的VCL元件。
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
程式設計實作.
實驗十三:顯示目前經緯度位置.
Ch06 再談選單元件 物件導向系統實務.
使用Android控制Arduino 史先强
7.3 Intent传值.
C++Primer 3rd edition 中文版 Chap 5
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
第8章 Android内容提供者(ContentProvider)应用
Android智慧型手機程式設計實務應用班
Chapter 7 Android應用元件 Android應用元件可以幫助我們獲得系統資源訊息(ActivityManager)、提供系統服務(Service)、搜尋系統服務(SearchManager)、監聽Intent訊息(Broadcast Receiver)以及資料共享(ContentProvider和ContentResolver)。
Android Intent 建國科技大學 資管系 饒瑞佶 2011/1.
K/3 Cloud 技术开发培训 ----BOS 业务插件开发
Lesson 2 十分钟完成照片雕刻 建议您用大屏幕观看教学,并同时用手机进行操作 官方网站 : cubiio.muherz.com
第4章 Android生命周期.
ContentProvider與資料共享
第9章 使用意圖啟動活動與內建應用程式 9-1 意圖的基礎 9-2 使用意圖啟動活動
程式設計實作.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Android + Service 建國科技大學 資管系 饒瑞佶.
實驗十四:顯示與控制地圖.
教務行政資訊系統 簡介 資訊科技中心 資訊系統組 徐振琦
第2讲 移动应用开发基础知识(二) 宋婕
SPOTO TM JAVA课程 JAVA中的OO语法
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
K/3 Cloud V1.0技术开发培训 ----BOS 业务插件开发
實驗十一:待辦事項程式 (儲存在手機上).
第三章 C# 基础知识.
主编:钟元生 赵圣鲁.
Intent.
开放平台示例使用说明 企业QQ.
網路應用.
Chapter 5 Basic UI Design.
Location Based Services - LBS
第二章 Java基本语法 讲师:复凡.
主编:钟元生 赵圣鲁.
第二章 Java语法基础.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
Android Speech To Text(STT)
C# 匿名委派 + Lambda + Func 建國科技大學 資管系 饒瑞佶.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
用Intent啟動程式中的其他Activity、運用WebView顯示網頁 靜宜大學資管系 楊子青
第2章 Java语言基础.
第6章 Android客户端模块实现 QQ群(App开发案例教程--清华) :
讀取網路資料及JSON開放資料 靜宜大學資管系 楊子青
104學年度 進修學校期初工作報告.
第二章 Java基础语法 北京传智播客教育
第二章 Java基本语法 讲师:复凡.
Presentation transcript:

第10章 App微信分享的实现 倚动实验室

CONTENTS 目录 Android平台分享到微信开发流程 10.1 App微信分享的操作流程 10.2 10.3 IOS平台分享到微信开发流程

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 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导入Libraries目录下

(3) 在AndroidManifest.xml文件中进行设置,添加必要的权限支持。 程序清单:SourceCode\Chapter10\Android\NewScore\AndroidManifest.xml <code class="code"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> </code>

(4)在代码中使用开发工具包 I .注册到微信 要使程序启动后微信终端能响应程序,必须在代码中向微信终端注册“豹考通”的id,可以在程序入口Activity的onCreate回调函数处或其他合适的地方将应用id注册到微信。 程序清单:SourceCode\Chapter10\Android\NewScore\ wxapi\ WXEntryActivity.java private static final int TIMELINE_SUPPORTED_VERSION = 0x********;//从官网上申请到的合法AppID 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); //将“豹考通”的AppID注册到微信 api.handleIntent(getIntent(), this); }

II. .发送请求或响应到微信 “豹考通”的程序要发送请求或发送响应到微信终端,可以通过IWXAPI的 sendReq 和 sendResp 两个方法来实现。sendReq是“豹考通”主动发送消息给微信,发送完成之后会切回到“豹考通”界面。sendResp是微信向“豹考通”请求数据,“豹考通”回应数据之后会切回到微信界面。sendReq的实现示例,如下面的清单文件所示。 程序清单:SourceCode\Chapter10\Android\NewScore\ 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);

sendResp的实现示例,如下面的清单文件所示。 public void onResp(BaseResp resp) {// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法 String result = ""; switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: result = "分享成功!"; break; case BaseResp.ErrCode.ERR_USER_CANCEL: result = "取消分享!"; case BaseResp.ErrCode.ERR_AUTH_DENIED: result = "分享拒绝!"; default: result = "分享失败!"; } Toast.makeText(this, result, Toast.LENGTH_LONG).show(); Intent intent=new Intent(this,MainActivity.class); startActivity(intent); this.finish();

III. 接收微信的请求及返回值 为了接收微信发送的请求或者接收发送到微信请求的响应结果,需要下面操作: a. 在“豹考通”包目录下面新增加一个包,并再该包下新增一个WXEntryActivity类,该类继承自Activity, 新增WXEntryActivity类

并在AndroidManifest.xml清单文件里面加上exported属性,设置为true。 程序清单:SourceCode\Chapter10\Android\NewScore\AndroidManifest.xml <activity android:name="iet.jxufe.cn.android.score.wxapi.WXEntryActivity" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> b. 实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法。 c. 在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法。 程序清单:SourceCode\Chapter10\Android\NewScore\ score\util\ Util api.handleIntent(getIntent(), this); 当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,类似的,应用请求微信的响应结果将通过onResp回调。

10.3IOS平台分享到微信的开发流程 10.3.1向微信注册AppID

10.3.2下载微信终端SDK文件 在微信开发平台资源中心下载分享微信开发工具包,主要包含三部分内容: libWeChatSDK.a,WXApi.h,WXApiObject.h, IOS资源下载中心

10.3.3搭建开发环境 (1)将下载好的SDK文件中 libWeChatSDK.a,WXApi.h,WXApiObject.h 三个文件添加到“豹考通”工程中SDKExport文件中, 添加SDK文件

(2)微信开放平台新增了微信模块用户统计功能,便于开发者统计微信功能模块的用户使用和活跃情况。开发者需要在工程中链接上:SystemConfiguration.framework,libz.dylib, Libsqlite3.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返回时,会切回到微信终端程序界面。而Resp方法是“豹考通”向微信发送了sendReq的请求,那么onResp会被回调。sendReq请求调用后,会切到微信终端程序界面。 (3)如果“豹考通”程序要发消息给微信,那么需要调用WXApi的sendReq函数。(BOOL) sendReq:(BaseReq*)req其中req参数为SendMessageToWXReq类型。需要注意的是,SendMessageToWXReq的scene成员,如果scene填WXSceneSession,那么消息会发送至微信的会话内。如果scene填WXSceneTimeline,那么消息会发送至朋友圈。如果scene填WXSceneFavorite,那么消息会发送到“我的收藏”中。scene默认值为WXSceneSession。

接下来了解了IOS客户端微信分享的环境搭建及相关知识后,在项目中创建一个UIButton,用于进行微信分享。 程序清单:SourceCode\Chapter10\IOS\NewScore\ReportViewController.m 1. - (void)shareAction 2. { 3. _ShareStyleActionSheet = [[UIActionSheet alloc]initWithTitle: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)sceneType 2. { 3. SendMessageToWXReq *req = [[[SendMessageToWXReq alloc] init]autorelease]; 4. req.text = WeChatMessage; 5. req.bText = YES; 6. req.scene = sceneType; 7. [WXApi sendReq:req]; 8. }

这是微信API为我们提供的分享图片的方法,调用此方法时,将需要分享的图片作为此方法的参数传入即可。 这个方法是分享文字的方法,注意方法里面通过SendMessageToWXReq 类的实例调用了sceneType方法,当值为0时,将文本消息发送给微信好友;当值为1时,将文本消息分享到朋友圈;当值为2时,将文本消息加入到微信收藏中。 1. - (void)sharedByWeChatWithImage:(UIImage *)image sceneType:(int)sceneType 2. { 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] init]autorelease]; 9. req.bText = NO; 10. req.message = message; 11. req.scene = sceneType; 12. [WXApi sendReq:req]; 13. } 这是微信API为我们提供的分享图片的方法,调用此方法时,将需要分享的图片作为此方法的参数传入即可。

最后,我们需要实现UIActionSheet的协议方法,注意使用协议方法前,我们需要在 最后,我们需要实现UIActionSheet的协议方法,注意使用协议方法前,我们需要在.h文件中引入<UIActionSheetDelegate>。 1. #pragma mark - UIActionSheet Delegate 2. - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 3. { 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:”方法发送文本,同样的,你也可以调用sharedByWeChatWithImage方法发送图片,运行程序即可实现微信分享功能。

课后练习 1、在微信开发平台分别注册Android和IOS微信分享开发的AppId。 2、在微信平台上分别下载Android和IOS微信分享开发的工具,搭建Android和IOS微信分享开发的环境。 3、思考“豹考通”微信分享设计的思路,提出自己可以改进的见解。 4、从微信开发平台下载Android 平台参考手册或微信SDK Sample Demo源码查看相关内容。