美文网首页react-native
React-native 之极光推送

React-native 之极光推送

作者: 秃头大叔 | 来源:发表于2019-03-28 18:35 被阅读0次

    极光推送

    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会失效,需要删除应用重新创建一个

    相关文章

      网友评论

        本文标题:React-native 之极光推送

        本文链接:https://www.haomeiwen.com/subject/oswtbqtx.html