推送已经是是手机应用的基本功能,如果自己实现一套推送系统费时费力,所有一般我们会使用第三方的推送服务,这里我使用「极光推送」作为集成推送的例子,因为有现成的 react native 插件 jpush-react-native 可以使用。

前置准备工作

安装软件

  • react native (0.41.2)
  • npm (V3.10.3)
  • xcode (V8.2.1)

创建工程

  • 在 Apple developer 上创建应用
  • 并且给应用配置推送功能,创建推送证书
  • 极光官网 上创建自己的应用,并上传证书
  • 创建 React-Native 工程,修改 bundle identifier ,保证和在 Apple developer 上创建的应用一直。(Project -> Target -> General -> bundle identifier)
  • xcode 8 版本的话还需要在 (Project -> Target -> Capabilities ) 吧Push Notification 选项点开

    第一、二、三 步骤的详细介绍可以观看 官方集成视频, 这里就不在重复。

    (如果已有工程,则只需要完成第二和第三项步骤)

集成 jpush-react-native

配置工程

在完成上面的准备工作后,我们就可以正式开始插件的集成,这里会解释每个步骤背后都做了哪些操作。

按照官方的集成说明安装 jpush-react-native (这里使用最新版本 V1.5.0)

1. 安装 jpush-react-native 插件

npm install jpush-react-native --save

安装完后可以看到 package.json 的 dependencies 字段多了 "jpush-react-native" 依赖

2. 然后安装 jcore-react-native 插件

npm install jcore-react-native --save

安装完后可以看到 package.json 的 dependencies 字段多了 "jcore-react-native" 依赖。 由于极光开发者服务 SDK 采用了模块化的使用模式,即一个核心(JCore)+N种服务(JPush,JAnalytics,...)的使用方式,所以把公共核心代码分离出来,这样在使用极光推送多种服务的时候不会出现冲突。

3. 链接工程

react-native link

这个步骤,其实是吧 jpush plugin 工程添加到 自己的项目工程里面,可以看到 Libraries 目录多了一个 RCTJPushModule.xcodeproj 工程文件,如下图所示

同时这个步骤还会自动把 JPush 所依赖的库自动添加到工程中,可以看到

TARGETS -> Build phases -> Link Binary With Libraries 多了几个系统库,如下图所示



这些步骤都是自动完成的,不需要额外的操作。

然后把 其中一个库 UserNotification.framework status 设为 Optional

添加代码

1. 自动添加代码

jpush-react-native 插件提供了自动配置脚本

npm run configureJPush <yourAppKey> <yourModuleName>

把 换成自己的 AppKey (在极光官网上创建应用可以获得一个 Appkey)

指的是你 Android 项目中的模块名字(对 iOS 没有影响,不填写的话默认值为 app,会影响到查找 AndroidManifest 问题。

这个脚本会自动吧极光推送的代码插入到 Appdelegate.m 中。

到这一步 jpush-react-native 插件已经集成完毕。

我们试着这编译自己工程,如果出现找不到头文件的情况则需要在 iOS 工程中如果找不到头文件可能要在 TARGETS-> BUILD SETTINGS -> Search Paths -> Header Search Paths 添加如下如路径

$(SRCROOT)/../node_modules/jpush-react-native/ios/RCTJPushModule/RCTJPushModule

2. 手动添加代码

手动添加代码部分 jpusn-react-native ReadMe 已经说得很清楚了,这里就不再重复


作者:HuminiOS - 极光(JPush 为极光团队账号,欢迎关注)

原文:React-Native 工程添加推送功能 (iOS 篇)

知乎专栏:极光日报

React-Native 工程添加推送功能 (iOS 篇)的更多相关文章

  1. React Native 之极光推送jpush-react-native 手把手配置

    这是 react native 配置极光推送使用的组件,比较常用https://github.com/jpush/jpush-react-native 先把组件地址贴出来,方便大家使用参考.如果这个大 ...

  2. React Native 实现MQTT 推送调研 (1)

    一.推送几种实现方式: (1)通过SMS(Short Message Service,短信群发服务系统) 进行服务器端和客户端的交流通信.在Android平台上,可以通过拦截SMS消息并解析内容来了解 ...

  3. WP8.1StoreApp(WP8.1RT)---添加推送功能和获取系统信息

    添加推送通知 1:Package.appxmanifest中的声明添加后台任务的推送通知权限 2:var channel = await PushNotificationChannelManager. ...

  4. iOS 推送功能打包后获取不到deviceToken

    公司项目用ionic3构建, 用了极光推送插件(cordova-plugin-jpush). 开发时一切将各种Bundle Id, 推送证书等都绑定完测试一切正常. 可是要给测试人员打Ad-Hoc包时 ...

  5. 苹果IOS、安卓推送功能开发

    IOS推送开发:以下是基于开源javapns推送开发1.DerInputStream.getLength(): lengthTag=111, too big.先排除是否由于打包时证书 .p12 文件被 ...

  6. 关于ios 推送功能的终极解决

    刚刚做了一个使用推送功能的应用 遇到了一些问题整的很郁闷 搞了两天总算是弄明白了 特此分享给大家 本帖 主要是针对产品发布版本的一些问题 综合了网上一些资料根据自己实践写的 不过测试也可以看看 首先要 ...

  7. [转]关于ios 推送功能的终极解决

    刚刚做了一个使用推送功能的应用 遇到了一些问题整的很郁闷 搞了两天总算是弄明白了 特此分享给大家 本帖 主要是针对产品发布版本的一些问题 综合了网上一些资料根据自己实践写的 不过测试也可以看看 首先要 ...

  8. 转:关于ios 推送功能的终极解决

    刚刚做了一个使用推送功能的应用 遇到了一些问题整的很郁闷 搞了两天总算是弄明白了 特此分享给大家 本帖 主要是针对产品发布版本的一些问题 综合了网上一些资料根据自己实践写的 不过测试也可以看看 首先要 ...

  9. React Native 简介:用 JavaScript 搭建 iOS 应用(2)

    [编者按]本篇文章的作者是 Joyce Echessa--渥合数位服务创办人,毕业于台湾大学,近年来专注于协助客户进行 App 软体以及网站开发.本篇文章中,作者介绍通过 React Native 框 ...

随机推荐

  1. 解剖Nginx·自动脚本篇(4)工具型脚本系列

    目录 auto/have 向自动配置头文件追加可用宏定义(objs/ngx_auto_config.h) auto/nohave 向自动配置头文件追加不可用宏定义(objs/ngx_auto_conf ...

  2. centos6.5系统hadoop2.7安装sqoop

    一.sqoop简介 Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ...

  3. linux系统如何安装vmware Tools(下面以CentOS为例)

    VMwareTools是VMware虚拟机中很重要的一个工具包,有些时候在虚拟机中安装完操作系统会缺少网卡驱动,不能上网,这时只要安装VMwareTools就可以解决问题,下面以CentOS为例,来说 ...

  4. Monkey&Monkey Runner使用

    adb shell monkey -p com.ajb.sp -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v ...

  5. Openssl rand命令

    一.简介 rand命令用来产生伪随机字节,随机数字产生器需要一个seed,在没有/dev/srandom系统下的解决方法是自己做一个~/.rnd文件 二.语法 openssl rand [-out f ...

  6. java 将一个数组中的值按逆序重新存放,例如,原来顺序为:9,5,7,4,8,要求改为:8,4,7, 5,9。

    public class Test3 { public static void main(String[] args) { int[] grade = {87,88,89,98,78}; int m; ...

  7. https://itunes.apple.com/cn/app/apache-overkill/id410553807?mt=8uo%3D6

    https://itunes.apple.com/cn/app/apache-overkill/id410553807?mt=8uo%3D6 http://eplusgames.net/games/s ...

  8. Perl 学习笔记-列表和数组

    笔记来自<<Perl语言入门第5版>> 1. Perl中列表指标量的有序集合,数组则是存储列表的变量, 这两个术语经常混用,不过更精确地说,列表指数据,而数组指变量.数组的表示 ...

  9. 阿里云OSS-web直传---在服务端c#签名,浏览器直传

    OSS web直传---在服务端php签名,浏览器直传 本文:OSS web直传---在服务端c#签名,浏览器直传 其他语言的范例地址:https://help.aliyun.com/document ...

  10. ASP.NET’s compilation system

    Compilation in ASP.NET applications First, let’s take a moment to revisit compilation in the context ...