react reactnative 消息推送极光推送 本地推送消息

react native 整合极光推送(Android)
最近项目中需要用到通知,综合比较决定使用极光推送,看了看网上的教程好像都没有一个整合好的例子,或者是步骤有些问题,自己也折腾了很长时间,在此把极光推送配置的步骤整理一下,提供给各位有需要的朋友
我的react native使用的是最新版本0.43.3,对应的极光推送需要同时安装jpush和jcore,
npm install jcore-react-native
npm install jpush-react-native
react-native link
1、在android/app/build.gradle里android&&defaultConfig中加入:
manifestPlaceholders = [
JPUSH_APPKEY: "yourAppKey",
APP_CHANNEL: "developer-default"
在dependencies中加入:(link后自动加入,需检查)
compile project(':jpush-react-native')
compile project(':jcore-react-native')
2、在项目的settings.gradle中加入(link后自动加入,需检查):
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')
3、在android/app/manifests/AndroidManifests.xml的&application&加入:
android:name="JPUSH_CHANNEL" android:value="${APP_CHANNEL}/&
android:name="JPUSH_APPKEY" android:value="${JPUSH_APPKEY}/&
并在上方加入极光推送权限:
android:name="${applicationId}
android:protectionLevel="signature" /&
4、在MainActivity中加入如下代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
JPushInterface.init(this);
protected void onPause() {
super.onPause();
JPushInterface.onPause(this);
protected void onResume() {
super.onResume();
JPushInterface.onResume(this);
protected void onDestroy() {
super.onDestroy();
5、在MainApplication类里加入如下代码:
private boolean SHUTDOWN_TOAST = false;
private boolean SHUTDOWN_LOG = false;
在getPackages()方法中加入:
new JPushPackage(SHUTDOWN_TOAST, SHUTDOWN_LOG)
至此,native端需要配置的工作已经全部完成,此时就可以用js进行调用。
demo的代码已上传到,下下来直接npm install就行,以上就是react native 极光推送的安装配置过程。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!极光推送 react-native SDK 使用中遇到的问题记录React Native 集成极光推送 jpush-react-native - 简书
React Native 集成极光推送 jpush-react-native
是极光推送官方开发的 React Native 版本插件,可以快速集成推送功能。现在最新版本的 JPush SDK 分离了 JPush 及 JCore,让开发者可以分开集成 JMessage 及 JPush(以前 JMessage 包含了 JPush)。
我没有 mac 设备,所以只说 Android 的配置。
打开终端,进入项目文件夹,执行以下命令:
$ npm install jpush-react-native --save
# jpush-react-native 1.4.2 版本以后需要同时安装 jcore-react-native
$ npm install jcore-react-native --save
1. 自动配置部分
$ react-native link
# 针对性的link,避免之前手动配置的其它插件重复配置造成报错
$ react-native link jpush-react-native
$ react-native link jcore-react-native
执行完 link 项目后可能会出现报错,这没关系,需要手动配置一下 build.gradle 文件。
2. 手动配置部分
在 Android Studio 中打开你的项目,然后找到 app 或者你自己定义的需要集成 jpush-react-native 的模块,打开此模块下的 build.gradle 文件,做以下改动:
project/android/app/build.gradle
defaultConfig {
applicationId "yourApplicationId" // 此处改成你在极光官网上申请应用时填写的包名
manifestPlaceholders = [
JPUSH_APPKEY: "yourAppKey", //在此替换你的 APPKey
APP_CHANNEL: "developer-default"
//应用渠道号, 默认即可
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:+"
// From node_modules
检查 android 项目下的 settings.gradle 配置有没有包含以下内容:
project/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 配置,有没有增加 &meta-data& 部分。
project/android/app/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&
现在重新 sync 一下项目,应该能看到 jpush-react-native 以及 jcore-react-native 作为 android Library 项目导进来了。
接下来加入 JPushPackage
RN 0.29.0 以下版本
打开 app 下的 MainActivity,在 ReactInstanceManager 的 build 方法中加入 JPushPackage:
project/android/app/MainActivity.java
RN 0.29.0 以上版本
打开 app 下的 MainApplication.java 文件,然后加入 JPushPackage,:
// 设置为 true 将不弹出 toast
private boolean SHUTDOWN_TOAST =
// 设置为 true 将不打印 log
private boolean SHUTDOWN_LOG =
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
protected boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
protected List&ReactPackage& getPackages() {
return Arrays.&ReactPackage&asList(
new MainReactPackage(),
new JPushPackage(SHUTDOWN_TOAST, SHUTDOWN_LOG)
然后在 MainActivity 中加入一些初始化代码即可:
project/android/app/src/java/.../MainActivity.java
public class MainActivity extends ReactActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
JPushInterface.init(this);
protected void onPause() {
super.onPause();
JPushInterface.onPause(this);
protected void onResume() {
super.onResume();
JPushInterface.onResume(this);
protected void onDestroy() {
super.onDestroy();
这样就完成了所有的配置。接下来就可以在 JS 中调用插件提供的 API 了。
import JPushModule from 'jpush-react-native';
componentDidMount() {
// 新版本必需写回调函数
// JPushModule.notifyJSDidLoad();
JPushModule.notifyJSDidLoad((resultCode) =& {
if (resultCode === 0) {}
// 接收自定义消息
JPushModule.addReceiveCustomMsgListener((message) =& {
this.setState({pushMsg: message});
// 接收推送通知
JPushModule.addReceiveNotificationListener((message) =& {
console.log("receive notification: " + message);
// 打开通知
JPushModule.addReceiveOpenNotificationListener((map) =& {
console.log("Opening notification!");
console.log("map.extra: " + map.extras);
// 可执行跳转操作,也可跳转原生页面
// this.props.navigation.navigate("SecondActivity");
componentWillUnmount() {
JPushModule.removeReceiveCustomMsgListener();
JPushModule.removeReceiveNotificationListener();
& Could not expand ZIP 'F:\workspace\rn\node_modules\jpush-react-native\android\build\outputs\aar\jpush-react-native-release.aar'.
问题是使用命令行窗口时缺少权限,不能解压文件。
解决办法是以管理员身份运行命令,删除...\node_modules\jpush-react-native\android\build,...\node_modules\jcore-react-native\android\build\和...\android\app\build\,然后尝试重新运行
管理员身份运行命令.png
& ... set canOverrideExistingModule=true
问题是在/android/app/src/java/.../MainApplication.java的getPackages()中重复引用了某个package,删除掉重复内容即可
更多高级应用查看
GitHub:https://github.com/hongye567
微博:https://weibo.com/u/
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
此处我用的是jpush-react-native,这个是极光官网维护的,还有一个是react-antive-jpush,这是中文网的,我这里没用这个 上一篇讲了如何申请ios的开发和生产证书的流程,http://blog.csdn.net/liu__520/article/...
写这篇博文的目的 1、官方原生Android集成react native,根据官方文档配置后的总结与填坑(新版的配置手法上还是有些不同)。2、官方jpush-react-native github文档写的配置过程在新版的react native中并不完整,使用最新的reac...
准备工作 https://www.jiguang.cn/accounts/login/form 在极光推送平台上注册账号,新建应用,获取AppKey 一、安装 我的react-native版本是0.42.0 npm install jcore-react-native --...
又是一个梦。 我在一个大城市繁华地带工作,四周盖楼大厦林立,一面面巨大如墙壁的横幅随处可见。我在人来人往中穿梭。 在大厦的一处暗角,有一个横幅,看上去已经很老旧了,内容依旧很清晰,是一个关于丧葬的广告。 广告牌下面就是这家店铺,我被它吸引力。店铺里面只是平常宾馆招待的半圆桌...
1、不要让情绪控制我们的行为 上个周末,跟家人一起在商场里面吃饭,吃完之后在商场散步,等到下电梯的时候,突然老婆发现围巾丢了,那是她最喜欢的一条蓝色的围巾,这下郁闷加难过加愤怒,立刻指责我们没看好衣物,不就是一条围巾吗?我们就劝她别找了,下次再买一条就是。 后来老婆意识到继...
今天,又是一个大热天。只见万里晴空漂浮着几朵淡淡的白云。
总想写点什么 关于你和我 可是却没有言语表达 因为没有交集 因为只是我一厢情愿 蜻蜓点水的打扰 希望没有造成你的困扰 你在我的世界里总是那么美好 完美无暇 那么喜欢你却只是我的事 好了 今天听了这首,点水 一时兴致勃勃想写点什么 写来写去也没什么 晚安 男神
Methods 每个组件根据自身特性都有一组方法,有几种方法是所有组件共有的。 option 在组件初始化后我们可以通过option方法改变参数配置。 “option”是方法 {参数,值} disable 取消一个组件 调用disable方向相当于设置option方法的di...用 jpush-react-native 插件快速集成推送功能(Android 篇)
用 jpush-react-native 插件快速集成推送功能(Android 篇)
jpush-react-native 是极光推送官方开发的 React Native 版本插件,可以快速集成推送功能。现在最新版本的 JPush SDK 分离了 JPush 及 JCore,让开发者可以分开集成 JMessage 及 JPush(以前 JMessage 包含了 JPush)。
用云栖社区APP,舒服~
【云栖快讯】云栖社区技术交流群汇总,阿里巴巴技术专家及云栖社区专家等你加入互动,老铁,了解一下?&&
文章25029篇
基于大数据的移动云服务。帮助App快速集成移动推送的功能,在实现高效、精确、实时的移动推送的...
用配置管理(Application Configuration Management,简称 ...
是一款简单高效的电子邮件发送服务,它构建在可靠稳定的阿里云基础之上,帮助您快速、精准地实现事...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效...
阿里中间件云大使react native 通知推送? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。7被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答0添加评论分享收藏感谢收起0添加评论分享收藏感谢收起写回答1 个回答被折叠()}

我要回帖

更多关于 react native消息推送 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信