react native jpush
原文链接:https://blog.csdn.net/qq_38719039/article/details/80684144
1 npm install jpush-react-native --save
2 npm install jcore-react-native --save
自动关联配置部分
$ react-native link
2. 手动配置部分
在 Android Studio 中打开你的项目,然后找到 app 或者你自己定义的需要集成 jpush-react-native 的模块,打开此模块下的 build.gradle 文件,做以下改动:
project/android/app/build.gradle
- android {
- ...
- 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 以上版本
打开 android-->app-->src 下的 MainApplication.java 文件,然后加入 JPushPackage,参考 demo:
// 设置为 true 将不弹出 toastprivate boolean SHUTDOWN_TOAST = false;// 设置为 true 将不打印 logprivate boolean SHUTDOWN_LOG = false;private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {@Overrideprotected boolean getUseDeveloperSupport() {return BuildConfig.DEBUG;}@Overrideprotected List<ReactPackage> getPackages() {return Arrays.<ReactPackage>asList(new MainReactPackage(),new JPushPackage(SHUTDOWN_TOAST, SHUTDOWN_LOG));}};
然后在 MainActivity 中加入一些初始化代码即可:
project/android/app/src/java/.../MainActivity.java
import android.os.Bundle; import com.facebook.react.ReactActivity; import cn.jpush.android.api.JPushInterface; public class MainActivity extends ReactActivity { ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); JPushInterface.init(this); } @Override protected void onPause() { super.onPause(); JPushInterface.onPause(this); } @Override protected void onResume() { super.onResume(); JPushInterface.onResume(this); } @Override 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();
}
react native jpush的更多相关文章
- react native jpush跳转页面不成功解决方法
在点击事件时加入如下红色代码即可 import JPushModule from 'jpush-react-native'; ... componentDidMount() { // 新版本必需写回调 ...
- react native 常用组件汇总
react-native-uploader //文件上传https://github.com/aroth/react-native-uploader jpush-react-native //官方版本 ...
- React Native实现一个自定义模块
概述 在 前期介绍React Native 项目结构的时候,我们讲解过React的项目组成,其中说过 node_modules 文件夹,这是一个存放 node 模块的地方.我们知道React是用npm ...
- React Native 之极光推送jpush-react-native 手把手配置
这是 react native 配置极光推送使用的组件,比较常用https://github.com/jpush/jpush-react-native 先把组件地址贴出来,方便大家使用参考.如果这个大 ...
- 《React Native 精解与实战》书籍连载「React Native 源码学习方法及其他资源」
此系列文章将整合我的 React 视频教程与 React Native 书籍中的精华部分,给大家介绍 React Native 源码学习方法及其他资源. 最后的章节给大家介绍 React Native ...
- React Native之通知栏消息提示(ios)
React Native之通知栏消息提示(ios) 一,需求分析与概述 详情请查看:React Native之通知栏消息提示(android) 二,极光推送注册与集成 2.1,注册 详情请查看:Rea ...
- React Native之通知栏消息提示(android)
React Native之通知栏消息提示(android) 一,需求分析与概述 1.1,推送作为手机应用的基本功能,是手机应用的重要部分,如果自己实现一套推送系统费时费力,所以大部分的应用都会选择使用 ...
- 你不可不知的 React Native 混合用法(Android 篇)
前言 当前 React Native 虽说版本更新比较快,各种组件也提供的很全面了,但是在某些情况下,混合开发的方式才会快速缩短开发周期,原因无非就是原生平台的"底蕴"无疑更深,拥 ...
- 在 React Native 中使用 Redux 架构
前言 Redux 架构是 Flux 架构的一个变形,相对于 Flux,Redux 的复杂性相对较低,而且最为巧妙的是 React 应用可以看成由一个根组件连接着许多大大小小的组件的应用,Redux 也 ...
随机推荐
- [LeetCode] 228. Summary Ranges 总结区间
Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...
- Exsi6.6主机网络不通解决办法
Exsi虚拟机网络偶尔不通,防火墙性能不足 解决办法,断开网络连接再重连
- Unreal Engine 4 中的 UI 优化技巧
转自:https://mp.weixin.qq.com/s/bybEHM9tF-jBPxxqXfrPOQ## Unreal Open Day 2017 活动上 Epic Games 开发者支持工程师郭 ...
- centos 如何修改docker镜像和容器的默认存放路径
原因:通过df -h查看磁盘利用的时候,目前挂载的太小了,所以尝试挂载到其他地方 1 先看看默认存放的路径在哪儿 方法1:docker info 方法2:sudo docker info | grep ...
- Saltack 针对用户进行权限控制
一. client_acl 配置使用 1.1 client_acl概述 开启对系统上非root的系统用户在master上执行特殊的模块,这些模块名可以使用正则表达式进行表示,不能指定对那些minion ...
- TCP/IP学习笔记13--IP地址的构成,广播地址,IP多播,子网掩码
现在,我是蔚蓝的 :在此岸或彼岸,我都是蔚蓝的. ---李瑾 IP对应的是OSI模型中的网络层,TCP对应的是传输层.每一个参与通信的主机都会有一个IP地址. IP地址(IPv4地址)含4个字节,每 ...
- Java生成菜单树(目录树)的几种方式
本文介绍两种不同生成多级目录树的方式:1. 递归生成,2. map+list 集合生成.最下方会附上完整代码. 生成树的基本规则:子节点的par_id等于父节点的id. 1. 实体类 import ...
- array_merge_recursive 的使用
作用:递归合并数组 场景:在平时开发中,我们可能遇到获取的数据是多个维度的数据,而我们只需要其中的一个. 代码如下: $project_id = 'project_id'; $arr1 = [ 'pr ...
- SAS学习笔记62 通过压缩变量长度来实现数据集压缩
有时候从其他数据库过来的字符型变量Length很长,导致数据集文件很大,可以通过压缩变量长度来实现数据集压缩 具体思路: LENGTH语句设置所有变量真实长度 SET数据集的时候对原有变量进行RENA ...
- Tkinter & mysql 的登录框练习
import tkinter as tk from tkinter import messagebox import pymysql class SignIn(object): def __init_ ...