安裝
- RN版本 0.49
npm i jpush-react-native --save
npm i jcore-react-native --save ## jpush-react-native 1.4.2 版本以后需要同時(shí)安裝
1.配置
- 執(zhí)行腳本
npm run configureJPush <yourAppKey> <yourModuleName>
//module name 指的是你 Android 項(xiàng)目中的模塊名字(對 iOS 沒有影響,不填寫的話默認(rèn)值為 app欺殿,會影響到查找 AndroidManifest 問題婶肩,
//如果沒找到 AndroidManifest棠赛,則需要手動(dòng)修改
//舉個(gè)例子:
npm run configureJPush d4ee2375846bc30fa51334f5 app
//執(zhí)行完畢再link
react-native link
- 檢查配置項(xiàng)
/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') // 添加 jpush 依賴
compile project(':jcore-react-native') // 添加 jcore 依賴
compile "com.facebook.react:react-native:+"
}
android/settings.gradle 沒有就加上
include ':app', ':jpush-react-native', ':jcore-react-native'
project(':jpush-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/jpush-react-native/android')
project(':jcore-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/jcore-react-native/android')
android/app/src/main/AndroidManifest.xml 下面沒有的就加上
<permission android:name="${applicationId}.permission.JPUSH_MESSAGE" android:protectionLevel="signature" /> //可以把權(quán)限也加上
<application
...
<!-- 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>
更新 MainActivity.java 文件
import cn.jpush.android.api.JPushInterface; //導(dǎo)入
public class MainActivity extends ReactActivity {
//方法沒有就全部加上
@Override
protected void onCreate(Bundle savedInstanceState) {
JPushInterface.init(this); //添加到這里
super.onCreate(savedInstanceState);
}
@Override
protected String getMainComponentName() {
return "RNTEST";
}
@Override
protected void onPause() {
super.onPause();
JPushInterface.onPause(this);
}
@Override
protected void onResume() {
super.onResume();
JPushInterface.onResume(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
更新 MainApplication.java 文件
import cn.jpush.reactnativejpush.JPushPackage; //導(dǎo)入
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
protected boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new JPushPackage(SHUTDOWN_TOAST, SHUTDOWN_LOG) //這行沒有就加上
);
}
};
···
}
3.使用
import JPushModule from 'jpush-react-native';
export default class WelcomePage extends Component {
componentWillMount() {
//必須先調(diào)用這個(gè)方法
JPushModule.notifyJSDidLoad((resultCode) => {
if (resultCode === 0) {
}
});
//這是點(diǎn)擊通知觸發(fā)的事件
JPushModule.addReceiveNotificationListener((map) => {
});
}
}