版本号
"react-native": "0.57.2",
"jcore-react-native": "^1.3.0",
"jpush-react-native": "^2.5.0",
创建极光账号新建app
新建app
安卓填写包名
ios上传APNS证书文件(推送证书,和开发证书不同,需要单独申请,区分开发环境和生产环境)
安装依赖
注意: jpush-react-native
自 1.4.4 之后, 需要安装 jcore-react-native
yarn add jpush-react-native jcore-react-native
android
- 修改 app 下的 build.gradle 配置:
android {
defaultConfig {
applicationId "yourApplicationId"
...
manifestPlaceholders = [
JPUSH_APPKEY: "yourAppKey", //在此替换你的APPKey
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
}
- 修改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')
- 修改app 下的 AndroidManifest 配置(project/android/app/src/main/AndroidManifest.xml)
<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>
- 在MainApplication.java注册模块(MainApplication.java)
import java.util.Arrays;
import java.util.List;
import cn.jpush.reactnativejpush.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() {
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(new MainReactPackage(), new JPushPackage(SHUTDOWN_TOAST, SHUTDOWN_LOG));
}
@Override
用Android Studio 打开项目,File => Sync
成功可以看到 jpush-react-native 以及 jcore-react-native 作为 android Library 项目导进来了
IOS
- react-native link jpush-react-native
- 在 iOS 工程中设置 TARGETS-> BUILD Phases -> LinkBinary with Libraries 找到 UserNotifications.framework 把 status 设为 optional
- 在 iOS 工程中如果找不到头文件可能要在 TARGETS-> BUILD SETTINGS -> Search Paths -> Header Search Paths 添加如下路径
$(SRCROOT)/../node_modules/jpush-react-native/ios/RCTJPushModule
- 在 xcode8 之后需要点开推送选项: TARGETS -> Capabilities -> Push Notification 设为 on 状态
- 这两个库包含原生代码,在它们的文件夹下有一个
.xcodeproj
文件。 把这个文件拖到你的XCode工程下(通常拖到XCode的Libraries
分组里)
RCTJCoreModule.xcodeproj
RCTJPushModule.xcodeproj
- 添加
Link Binary With Libraries
静态库文件
libRCTJCoreModule.a
libRCTJPushModule.a
CFNetwork.framework
CoreFoundation.framework
CoreTelephony.framework
SystemConfiguration.framework
CoreGraphics.framework
Foundation.framework
UIKit.framework
Security.framework
libz.tbd(Xcode 7 以下版本是 libz.dylib)
AdSupport.framework(获取 IDFA 需要;如果不使用 IDFA,请不要添加)
UserNotifications.framework(Xcode 8 及以上)
libresolv.tbd(JPush 2.2.0 及以上版本需要,Xcode 7 以下版本是 libresolv.dylib)
至此集成完毕