極光推送
jpush-react-native是極光推送官方開發(fā)的 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, 可以詳細查看一下文檔,容易遺漏的是我下面的內(nèi)容,不細看容易忽略,吃過的虧啊~
import cn.jpush.reactnativejpush.JPushPackage; // <-- 導(dǎo)入 JPushPackage!!!!!!!!!!!
public class MainApplication extends Application implements ReactApplication {
// 設(shè)置為 true 將不會彈出 toast!!!!!!!!!!!!!
private boolean SHUTDOWN_TOAST = false;
// 設(shè)置為 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和包名不一致,主要原因是在創(chuàng)建極光應(yīng)用時包名和本地項目名稱不一致,統(tǒng)一一下即可~,可以參考導(dǎo)入極光包時的手動配置第一項:如下
android {
defaultConfig {
applicationId "yourApplicationId" //在此修改包名,
...
manifestPlaceholders = [
JPUSH_APPKEY: "yourAppKey", //在此替換你的APPKey(第一次link時會自動生成)
APP_CHANNEL: "developer-default" //應(yīng)用渠道號
]
}
}
...
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無效還是什么玩意的,是因為一旦極光創(chuàng)建的包名修改,appkey會失效,需要刪除應(yīng)用重新創(chuàng)建一個