taro(React Native)集成个推
开早会的时候,突然就被安排了集成个推的任务,emmm……有点不知所措。(本人是android 开发,学习taro还不到一周,一行代码还没有写过。可能是我高度不够,所以技术水平也就停留在这一般的一般层次了。)
其实集成第三方SDK各个平台的步骤都差不多,一般第三方都会提供各个平台的集成文档,根据文档一步步来基本上都能完成。这篇文章只记录集成过程中遇到的问题和坑,不代表最终可以达到推送功能的过程和代码。
去个推官网,emmm,没有找到任何关于taro(react-native)相关的文档。幸好之前有加过个推的客服,通过咨询之后给到了rn的集成地址:GitHub - GetuiLaboratory/react-native-getui: 个推官方提供的推送SDK React Native 插件(支持 Android & iOS)
一:配置Android
1、根据文档流程开始,通过终端进入到taro-native-shell文件夹,分别执行命令npm install react-native-getui --save和react-native link react-native-getui,终端显示link成功
link成功再执行官方文档(上面的链接)的这个命令
但在Android studio中进行rebuild时,会出现这样的错误
Android studio报错 报错的引用当然终端执行react-native run-android 同样会报错,这里就不贴出报错信息了(其实是报错后的截图我找不到了,总是就是报一些啥啥文件找不到,还有什么什么函数找不到的错误)
在build.gradle文件中添加如下代码
build.gradle配置maven{
url"http://mvn.gt.igexin.com/nexus/content/repositories/releases/"
}
2、继续执行,又出现了这样的错误
终端报错在AndroidManifest.xml文件个推配置中,添加如下代码
清单文件添加配置继续运行,又出现啥魅族、小米、华为啥啥的,这是多厂商配置的问题
多厂商配置报错根据终端的错误进行配置即可
多厂商配置开通了多厂商就配置上相应的appId和appKey,没有开通设置为空就好了。
3、再在android/app/build.gradle 的defaultConfig节点中添加如下代码
再在MainActivity中添加如下代码:
至此,react native 配置Android 个推就完成了,剩下的就是要在taro框架中的页面完成推送的功能。
完结撒花,👏👏👏👏👏👏👏👏
哦,还有ios的,阿西吧~~~~~~~
二:配置ios
先运行一下ios,看会报什么错
使用Xcode打开taro-native-shell/ios/taroDemo.xcodeproj。打开AppDelegate.h文件,发现引用的个推(在上面的步骤中,执行link和npm run GetuiConfigure。。。命令后,一般Xcode引用会自动生成)的头部文件没找到
依次找到target-build setting-search paths-header search paths添加路径$(SRCROOT)/../node_modules/react-native-getui/iOS/RCTGetuiModule
然后终端cd ios执行pod install,cd .. ,执行react-native run-ios 正常编译运行。再根据个推文档在AppDelegate.h和AppDelegate.m文件中添加相应的代码(上边也说过了,执行link和npm run GetuiConfigure。。。命令后,Xcode一般会把需要添加的代码自动引入,不需要手动添加。但还是需要检查一下,如果没有的话还是需要手动添加的),react native 集成个推的ios端就算完成了(感觉比配置Android 要简单。。。。。)。
三、集成个推代码后报错
引入
终端运行npm run dev:rn报错:
这个也算是集成的一个问题吧(其实就是自己没反应过来,个推提供的rn的文档,不是taro的,并不是完全一样的),原因就是只在taro-native-shell壳子中引入了个推,没有在自己的taro项目目录中引入。在自己项目中引入之后,问题就解决了。完美获取到了clientId