reactNative 極光推送踩過的坑

這個安卓的極光推送搞了一個月,當然,中間有很多事情要忙,所以拖了一個月的時間.

此處我用的是jpush-react-native,這個是極光官網(wǎng)維護的,還有一個是react-antive-jpush,這是中文網(wǎng)的,官網(wǎng)的已經(jīng)停止維護,大家要使用極光維護的插件.

我這里只介紹一下安卓吧,iOS的可以自行百度,沒任何問題,我iOS至少配置了10幾次,重來沒出過錯.

一、手動配置

1.1、進入你的項目目錄,然后打開命令終端輸入:

npm install jpush-react-native --save

rnpm link jpush-react-native(這個貌似只對iOS有作用)

Android

使用 Android Studio import 你的 React Native 應用(選擇你的 React Native 應用所在目錄下的 android 文件夾即可)

二、修改 android 項目下的 settings.gradle 配置:

settings.gradle

include ':app', ':jpush-react-native
project(':jpush-react-native').projectDir = new File(rootProject.projectDir, ../node_modules/jpush-react-native/android')

修改 app 下的 AndroidManifest 配置,將 jpush 相關(guān)的配置復制到這個文件中,參考 demo 的 AndroidManifest:(增加了 <meta-data> 部分)

your react native project/android/app/AndroidManifest.xml

<application
        android:name=".MainApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />

        <!-- Required . Enable it you can get statistics data with channel -->
        <meta-data android:name="JPUSH_CHANNEL" android:value="${APP_CHANNEL}"/>
        <meta-data android:name="JPUSH_APPKEY" android:value="${JPUSH_APPKEY}"/>

    </application>

修改 app 下的 build.gradle 配置:
your react native project/android/app/build.gradle

android {
    defaultConfig {
        applicationId "yourApplicationId"
        ...
        manifestPlaceholders = [
                JPUSH_APPKEY: "yourAppKey", //在此替換你的APPKey
                APP_CHANNEL: "developer-default"    //應用渠道號
        ]
    }
}
...
dependencies {
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile project(':jpush-react-native')
    compile "com.facebook.react:react-native:+"  // From node_modules
}

將此處的 yourApplicationId 替換為你的項目的包名;yourAppKey 替換成你在官網(wǎng)上申請的應用的 AppKey。到此為止,配置完成。

現(xiàn)在重新 sync 一下項目,應該能看到 jpush-react-native 作為一個 android Library 項目導進來了

Paste_Image.png

如果你還是不能集成的話加如下代碼MainApplication.js下加入如下代碼
android/src/main/com/你的項目名/MainApplication

Paste_Image.png

這里配置就結(jié)束了,對了 就這么簡單.

三、集成成功所需要的

RegistrationID  這個如果你沒獲取到的話,那么證明你沒有集成成功

怎么獲取看下面代碼

首先導入

import JPushModule from 'jpush-react-native';//極光推送

componentDidMount() {
        //---------------------------------android start---------------------------------


        JPushModule.addReceiveCustomMsgListener((message) => {
            this.setState({ pushMsg: message });
            alert(message)
        });
        JPushModule.addReceiveNotificationListener((message) => {
            console.log("receive notification: " + message);
            alert(JSON.stringify(message));
        });
        //獲取RegistrationID  
        JPushModule.getRegistrationID((id)=>{
            console.debug(JSON.stringify(id));
        })
}

不要以為這樣就完成了
你會發(fā)現(xiàn)開始還是無法獲取到
那么你就要加上如下代碼,
這段代碼要在RN啟動的時候加進去,別忘記導入包

JPushModule.initPush()

好了完成,如果你還是收不到消息再看下面
android/build.gradle

Paste_Image.png

版本如果是1.2.3的話 那么是不支持的,請更新到1.3.1以上.

關(guān)于這個版本的問題以后有時間再貼出來

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容