极光推送
jpush-react-native是极光推送官方开发的 React Native 版本插件,用于消息推送。
// 安装
$ npm install jpush-react-native --save
$ npm install jcore-react-native --save
$ react-native link jpush-react-native
$ react-native link jcore-react-native
link后需要输入极光推送的appkey
image.png
link完成后会自动添加一些配置,有一些手动的配置仍然需要更改,参考 https://github.com/jpush/jpush-react-native, 可以详细查看一下文档,容易遗漏的是我下面的内容,不细看容易忽略,吃过的亏啊~
import cn.jpush.reactnativejpush.JPushPackage; // <-- 导入 JPushPackage!!!!!!!!!!!
public class MainApplication extends Application implements ReactApplication {
// 设置为 true 将不会弹出 toast!!!!!!!!!!!!!
private boolean SHUTDOWN_TOAST = false;
// 设置为 true 将不会打印 log!!!!!!!!!!!!!!
private boolean SHUTDOWN_LOG = false;
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected String getJSMainModuleName() { // rn 0.49 后修改入口为 index
return "index";
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new JPushPackage(SHUTDOWN_TOAST, SHUTDOWN_LOG) // <-- 添加 JPushPackage!!!!!!!!
);
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
}
}
另外在推送时模拟器报错,提示appkey和包名不一致,主要原因是在创建极光应用时包名和本地项目名称不一致,统一一下即可~,可以参考导入极光包时的手动配置第一项:如下
android {
defaultConfig {
applicationId "yourApplicationId" //在此修改包名,
...
manifestPlaceholders = [
JPUSH_APPKEY: "yourAppKey", //在此替换你的APPKey(第一次link时会自动生成)
APP_CHANNEL: "developer-default" //应用渠道号
]
}
}
...
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation project(':jpush-react-native') // 添加 jpush 依赖
implementation project(':jcore-react-native') // 添加 jcore 依赖
implementation "com.facebook.react:react-native:+" // From node_modules
}
注意如果报错:appkey无效还是什么玩意的,是因为一旦极光创建的包名修改,appkey会失效,需要删除应用重新创建一个
网友评论