细节1
想要接入微信,如接入分享微信功能、跳转小程序功能等;首先需要到微信开放平台申请AppId,如何申请在开放平台上的流程很清楚,就不赘述了
但有个细节就是应用包名签名,这个应用包名签名记得是以app有正式签名文件条件下获取的,先打包出release apk,再用签名生成工具输入包名即可获得应用签名
细节2
很多时候为了快速方便的接入,可能微信那么多的文档,比如我这次接入的是拉起微信小程序,但微信开放平台给的文档很简单:
好吧,为了快速接入,我也不管那么多,前面的接入指南都没看就直接写上代码了,出现了以下报错:
E/MicroMsg.SDK.WXApiImplV10: sendReq failed for wechat app signature check failed
最后通过反复折腾,原来是还没有register微信SDK,并且Manifest.xml文件也没配好
- AndroidManifest.xml配置
<manifest ....>....<!-- 跟微信相关的必须添加--><queries><package android:name="com.tencent.mm" /></queries>.....
</manifest>
- 注册SDK
在app入口界面(比如MainActivity)注册SDK
fun regToWx(context: Context) {// 通过 WXAPIFactory 工厂,获取 IWXAPI 的实例val api = WXAPIFactory.createWXAPI(context, APP_ID)// 将应用的 appId 注册到微信api.registerApp(APP_ID)//建议动态监听微信启动广播进行注册到微信context.registerReceiver(object : BroadcastReceiver() {override fun onReceive(context: Context, intent: Intent) {// 将该 app 注册到微信api?.registerApp(APP_ID)}}, IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP))
}
细节3
在包名下创建:WXEntryActivity,继承Activity,实现IWXAPIEventHandler接口
其中的细节
比如app的应用包名为:com.company.test,那么WXEntryActivity则必须建在com.company.test.wxapi的包中,因为有时候遇到了组件化开发/插件化开发时候,会习惯性以模块作为包名,从而导致了包名错误,无法正常使用微信AP
最后再在AndroidManifest.xml中配置:
<activityandroid:name="com.company.test.wxapi.WXEntryActivity"android:exported="true"android:taskAffinity="com.company.test"android:launchMode="singleTop" />