守望者--AIR技术交流

标题: 微信ANE使用教程 [打印本页]

作者: 破晓    时间: 2015-4-23 13:56
标题: 微信ANE使用教程
本帖最后由 破晓 于 2015-4-23 14:06 编辑

微信ANE使用教程
在flash air ios和android移动应用中使用微信分享,登录和支付功能



[attach]1123[/attach]




简介
  微信ane是微信开放平台sdk的flash版本,是基于微信SDK1.5(2015.1.4发布日sdk最新版本)air sdk15编译,支持ios和android双平台。Flash air开发者可以通过微信ane实现分享文字,图片,链接,gif等到微信朋友圈,聊天框。只需要纯as3代码即可以实现功能,代码也还简单,只要简单几行
警告
如果签名没有和微信后台所填对应上,或者包名称没有和微信后台的对应上,微信android无法分享,现象是一闪而过,调用返回true,却没有任何反应。
注册微信开发者账号
  在开始编写as3代码之前,需要先在open.weixin.qq.com 创建微信开发者账号,然后创建应用,等审核通过才可以进行测试。 如果是android应用,则需要设置好包名,也就是air 应用的ID;应用的签名,签名获得工具在微信开放管理平台在资源中心可以下载到。 正确签名应该是这样的形式 “e6468ae7278ef0cf58a0e2b23826c903”。
如果需要使用微信登录功能和支付功能,需要向微信平台申请额外权限,一般只有企业才能申请。
编写代码
  调用微信接口,首先当然就得初始化应用,设置App ID ,向微信客户端注册说明,我是开放平台的应用,我的ID号码是xxx,不过很简单,且看代码。
  1. WeChat.getInstance().registerApp("wx21fb4d35f5eba37b");
复制代码
是不是相当简单?只要一句话,把微信管理中心获得的ID输入就ok。当然,如果想做得严谨点可以这样做,先检查下插件是否支持当前平台,如果是在iphone或者android机子上跑,都是会执行到registerApp的。
  1. if(WeChat.getInstance().supportDevice){
  2.         WeChat.getInstance().registerApp("wx21fb4d35f5eba37b");
  3. }
复制代码
好了,下面是重头戏,是关键,是你所渴望的东西了,通过微信ane调用微信,分享东西。
  1. WeChat.getInstance().sendTextMessage("分享的文字消息",WechatScene.WXSceneTimeline);
复制代码
就这样,一行代码,是不是即激动又失落,就这么一行代码就实现了flash air中分享到微信朋友圈,简直简单得有点让人不敢相信了。 不过请相信你的眼睛,这是真的,就是这么简单。分享文字还不够,那分享图片呢,adobe air ios和android应用中怎么分享图片到微信呢? 是否一样简单?答案是肯定的,且看代码
  1. WeChat.getInstance().sendWebImageMessage("http://s0.hao123img.com/res/r/image/2014-05-07/bcb15a0409c0eb0a87cf0c2ac3e04c05.gif","title image test",WechatScene.WXSceneTimeline);
复制代码
flash 分享图片到微信中,也就一行代码,一点没忽悠吧。类似的还有air中分享链接到微信朋友圈,聊天框,as3分享本地图片到朋友圈等,都差不多的方法WeChat.getInstance().sendXXX,就不一一介绍,自己查看api或者demo。

好了下面看微信登录
  1. WeChat.getInstance().sendAuthRequest(int(Math.random()*10000)+"");
复制代码
参数是一个你自己随意的字符串,表示一个状态,就这样,会启动微信登录功能。登录成功或者失败,成功后获取到的用户信息,会在WeChatEvent.onSendResult事件中。什么?事件?什么事件,没听过啊。没听过,那现在就说给你听听,如何在flash air应用中处理微信分享登录和支付相关的事件。
微信的各种操作的结果如果有反馈,都是通过一个事件通知到flash air中的。具体处理事件的方法是
  1. WeChat.getInstance().addEventListener(WeChatEvent.onSendResult,onSendResult);
  2.     protected function onSendResult(event:WeChatEvent):void
  3.                 {
  4.                         if(event.data==WechatError.WXErrCodeUserCancel){
  5.                                 trace2("用户取消了发送");
  6.                         }
  7.                         trace2(event.type+"  "+event.data);
  8.                 }
复制代码
根据操作不同,event.data不一样,可以根据操作,观察下。如果是登录则是登录是否成功,成功的用户信息,如果是支付则可能是订单失败与否的信息和订单详情。

air中使用微信支付一句话总结就是功能简单,流程复杂。
使用微信支付接口,需要先认真阅读微信官方的《微信支付接口上手指南》,然后一步一步按照他的流程通过http的形式获得支付的参数 prepayID,结合微信有的appID,parterID,时间戳等然后传入微信ANE的支付接口
  1. WeChat.getInstance().sendPayRequest(appId,partnerId,prepayId,nonceStr,packageValue,sign,timeStamp);
复制代码
各个参数的意义可以从微信官方文档《微信支付接口上手指南》里面找到。支付的结果微信会通过事件通知应用,应用可以在WeChatEvent.onSendResult事件中处理

flash air ios和android应用中添加 微信分享功能,代码集成就说这么多了。demo.as中有更多的接口例子可以参考。不过对微信集成来说,添加代码还只是走了一半路。后面一半就是修改配置。

修改配置  

怎么修改air移动应用配置呢?无论是flash builder还是flash cc之类工具在创建了移动项目后都会自动生成一个xxx-app.xml在项目的目录下面,修改配置就是这对此文件进行修改。
然后确认软件工具是否自动添加了微信ANE扩展ID,如果没添加的,先手动添加上。
  1. so.cuo.platform.wechat
复制代码
进行上面通用的配置后,添加微信IOS的回调配置。
  1. <InfoAdditions>
  2. <![CDATA[
  3.                         <key>UIDeviceFamily</key>
  4.                         <array>
  5.                                 <string>1</string>
  6.                                 <string>2</string>
  7.                         </array>
  8.                         <key>CFBundleURLTypes</key>
  9.                 <array>
  10.                     <dict>
  11.                          <key>CFBundleURLSchemes</key>
  12.                         <array>
  13.                             <string>wx21fb4d35f5eba37b</string>
  14.                         </array>
  15.                         <key>CFBundleURLName</key>
  16.                         <string>weixin</string>
  17.                     </dict>
  18.                 </array>
  19. ]]>
  20. </InfoAdditions>
复制代码
把代码中的wx21fb4d35f5eba37b替换为微信管理平台处获得的微信App ID。这样在ios上发送完小心就能自动返回应用了。
如果只做微信ios平台则上面已经够了,但如果要做android平台,则还需要配置android相关信息。
添加android权限
  1. <uses-permission android:name="android.permission.INTERNET"/>
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  3. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  4. <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  5. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
复制代码
如果只是分享,配置上面权限就够了,如果要实现微信登录和微信支付则还需要配置activity,并且此activity需要定制的ane才能实现,需要联系作者。
  1. <application>
  2.         <activity
  3.             android:name="so.cuo.platform.wechat.wxapi.WXEntryActivity"
  4.             android:exported="true">
  5.         </activity>
  6. </application>
复制代码
获得定制ANE后把so.cuo.platform.wechat替换为你在微信管理平台设置的包名。

只有定制的ANE配置activity才有用,否则微信回调无法成功

打包和测试

  万事俱备,只欠安装包了。按F11 进行debug或者file-->export进行导出都可以产生ipa和apk。air 导出ios没什么问题,按普通的export或者debug都OK。主要是android,导出的时候选择的证书一定要是填在微信管理平台签名的那个证书和注意adt自动加前后缀导致包名称修改的问题。 必须保证包名称和签名完全一致才会成功,否则测试所有接口都会失败,虽然返回true,但内容不会发布到微信中去。

注意事项












本文来自:http://www.cuo.so/ane-list/wechat-ane.html


作者: 刀客    时间: 2015-10-13 13:23
谢谢提供的帮助
作者: 我是一个兵    时间: 2016-8-17 17:00
看看。。。。。。。
作者: 破晓    时间: 2016-8-23 17:47

其他资源:
微信ANE for iOS & Android
http://www.airmyth.com/thread-1036-1-1.html

微信ANE需求外包
[出售应用] [项目出售] 微信登录,支付,分享ANE 双平台
http://www.airmyth.com/thread-1713-1-1.html




欢迎光临 守望者--AIR技术交流 (http://www.airmyth.com/)