React-native 之极光推送

极光推送

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 getPackages() {
            return Arrays.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会失效,需要删除应用重新创建一个

你可能感兴趣的:(React-native 之极光推送)