JPush's officially supported React Native plugin (Android & iOS). 极光推送官方支持的 React Native 插件(Android & iOS)。
See the codenpm install jpush-react-native --save
注意:如果项目里没有jcore-react-native,需要安装
npm install jcore-react-native --save
安装完成后连接原生库
进入到根目录执行
react-native link
或
react-native link jpush-react-native
react-native link jcore-react-native
build.gradle
android {
defaultConfig {
applicationId "yourApplicationId" //在此替换你的应用包名
...
manifestPlaceholders = [
JPUSH_APPKEY: "yourAppKey", //在此替换你的APPKey
JPUSH_CHANNEL: "yourChannel" //在此替换你的channel
]
}
}
dependencies {
...
implementation project(':jpush-react-native') // 添加 jpush 依赖
implementation project(':jcore-react-native') // 添加 jcore 依赖
}
setting.gradle
include ':jpush-react-native'
project(':jpush-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/jpush-react-native/android')
include ':jcore-react-native'
project(':jcore-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/jcore-react-native/android')
AndroidManifest.xml (从插件3.2.6版本开始,不需要配置该内容)
<meta-data
android:name="JPUSH_CHANNEL"
android:value="${JPUSH_CHANNEL}" />
<meta-data
android:name="JPUSH_APPKEY"
android:value="${JPUSH_APPKEY}" />
注意:您需要打开ios目录下的.xcworkspace文件修改您的包名
pod install
注意:如果项目里使用pod安装过,请先执行命令
pod deintegrate
Libraries
Add Files to "your project name"
node_modules/jcore-react-native/ios/RCTJCoreModule.xcodeproj
node_modules/jpush-react-native/ios/RCTJPushModule.xcodeproj
Capabilities
Push Notification --- ON
Build Settings
All --- Search Paths --- Header Search Paths --- +
$(SRCROOT)/../node_modules/jcore-react-native/ios/RCTJCoreModule/
$(SRCROOT)/../node_modules/jpush-react-native/ios/RCTJPushModule/
Build Phases
libz.tbd
libresolv.tbd
UserNotifications.framework
libRCTJCoreModule.a
libRCTJPushModule.a
参考:App.js
详见:index.js
JPush Android SDK 6.2.0 起支持请求订阅厂商通知通道。当前仅支持已集成并注册小米通道的小米设备,且调用时应用需处于前台、屏幕已点亮。
const commandListener = result => {
if (result.command === 2012) {
const channelResults = result.openChannelResult
? JSON.parse(result.openChannelResult)
: [];
console.log(result.commandResult, result.platform, channelResults);
}
};
JPush.addCommandEventListener(commandListener);
JPush.requestSubscribeChannel(["YOUR_XIAOMI_CHANNEL_ID"]);
// 页面销毁时移除监听
JPush.removeListener(commandListener);
channelIds:在小米后台审核通过的订阅类 channel ID 数组,单次最多处理 3 个。commandResult:请求结果码;0 表示正常拉起弹窗并返回用户操作结果。openChannelResult:各 channel 处理结果的 JSON 数组字符串,例如 [{"channelId":"xxx","code":100}]。platform:厂商平台,当前小米为 1。command === 2012。弹窗 30 秒内最多拉起一次,同一 channel 每月最多拉起两次。commandResult 常见结果码:
0:正常拉起弹窗并返回用户操作结果。-100:当前版本不支持;-200:鉴权失败;-300:应用不在前台或屏幕未点亮。-500:触发频控;-700:用户取消;-800:应用没有通知权限。openChannelResult 中每个 channel 的 code:100 成功,-100 失败,
-200 用户拒绝,-300 已存在且开启,-400 已存在但关闭,-500 channel ID 非法。
Overall
Maintained
Code review
Latest release
Releases this year
JPush's officially supported React Native plugin (Android & iOS). 极光推送官方支持的 React Native 插件(Android & iOS)。
See the codenpm install jpush-react-native --save
注意:如果项目里没有jcore-react-native,需要安装
npm install jcore-react-native --save
安装完成后连接原生库
进入到根目录执行
react-native link
或
react-native link jpush-react-native
react-native link jcore-react-native
build.gradle
android {
defaultConfig {
applicationId "yourApplicationId" //在此替换你的应用包名
...
manifestPlaceholders = [
JPUSH_APPKEY: "yourAppKey", //在此替换你的APPKey
JPUSH_CHANNEL: "yourChannel" //在此替换你的channel
]
}
}
dependencies {
...
implementation project(':jpush-react-native') // 添加 jpush 依赖
implementation project(':jcore-react-native') // 添加 jcore 依赖
}
setting.gradle
include ':jpush-react-native'
project(':jpush-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/jpush-react-native/android')
include ':jcore-react-native'
project(':jcore-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/jcore-react-native/android')
AndroidManifest.xml (从插件3.2.6版本开始,不需要配置该内容)
<meta-data
android:name="JPUSH_CHANNEL"
android:value="${JPUSH_CHANNEL}" />
<meta-data
android:name="JPUSH_APPKEY"
android:value="${JPUSH_APPKEY}" />
注意:您需要打开ios目录下的.xcworkspace文件修改您的包名
pod install
注意:如果项目里使用pod安装过,请先执行命令
pod deintegrate
Libraries
Add Files to "your project name"
node_modules/jcore-react-native/ios/RCTJCoreModule.xcodeproj
node_modules/jpush-react-native/ios/RCTJPushModule.xcodeproj
Capabilities
Push Notification --- ON
Build Settings
All --- Search Paths --- Header Search Paths --- +
$(SRCROOT)/../node_modules/jcore-react-native/ios/RCTJCoreModule/
$(SRCROOT)/../node_modules/jpush-react-native/ios/RCTJPushModule/
Build Phases
libz.tbd
libresolv.tbd
UserNotifications.framework
libRCTJCoreModule.a
libRCTJPushModule.a
参考:App.js
详见:index.js
JPush Android SDK 6.2.0 起支持请求订阅厂商通知通道。当前仅支持已集成并注册小米通道的小米设备,且调用时应用需处于前台、屏幕已点亮。
const commandListener = result => {
if (result.command === 2012) {
const channelResults = result.openChannelResult
? JSON.parse(result.openChannelResult)
: [];
console.log(result.commandResult, result.platform, channelResults);
}
};
JPush.addCommandEventListener(commandListener);
JPush.requestSubscribeChannel(["YOUR_XIAOMI_CHANNEL_ID"]);
// 页面销毁时移除监听
JPush.removeListener(commandListener);
channelIds:在小米后台审核通过的订阅类 channel ID 数组,单次最多处理 3 个。commandResult:请求结果码;0 表示正常拉起弹窗并返回用户操作结果。openChannelResult:各 channel 处理结果的 JSON 数组字符串,例如 [{"channelId":"xxx","code":100}]。platform:厂商平台,当前小米为 1。command === 2012。弹窗 30 秒内最多拉起一次,同一 channel 每月最多拉起两次。commandResult 常见结果码:
0:正常拉起弹窗并返回用户操作结果。-100:当前版本不支持;-200:鉴权失败;-300:应用不在前台或屏幕未点亮。-500:触发频控;-700:用户取消;-800:应用没有通知权限。openChannelResult 中每个 channel 的 code:100 成功,-100 失败,
-200 用户拒绝,-300 已存在且开启,-400 已存在但关闭,-500 channel ID 非法。
Overall
Maintained
Code review
Latest release
Releases this year