细节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中配置:
<activity
android:name="com.company.test.wxapi.WXEntryActivity"
android:exported="true"
android:taskAffinity="com.company.test"
android:launchMode="singleTop" />