這個安卓的極光推送搞了一個月,當(dāng)然,中間有很多事情要忙,所以拖了一個月的時間.
此處我用的是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 應(yīng)用(選擇你的 React Native 應(yīng)用所在目錄下的 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)的配置復(fù)制到這個文件中,參考 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" //應(yīng)用渠道號
]
}
}
...
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)上申請的應(yīng)用的 AppKey登淘。到此為止,配置完成封字。
現(xiàn)在重新 sync 一下項目黔州,應(yīng)該能看到 jpush-react-native 作為一個 android Library 項目導(dǎo)進來了
如果你還是不能集成的話加如下代碼MainApplication.js下加入如下代碼
android/src/main/com/你的項目名/MainApplication
這里配置就結(jié)束了,對了 就這么簡單.
三、集成成功所需要的
RegistrationID 這個如果你沒獲取到的話,那么證明你沒有集成成功
怎么獲取看下面代碼
首先導(dǎo)入
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啟動的時候加進去,別忘記導(dǎo)入包
JPushModule.initPush()
好了完成,如果你還是收不到消息再看下面
android/build.gradle
版本如果是1.2.3的話 那么是不支持的,請更新到1.3.1以上.
關(guān)于這個版本的問題以后有時間再貼出來