极光推送实战感受

最近公司的项目新增一个消息中心的功能,使用的是极光推送,现在项目上线了,分享一下做这个功能的感受。写的不好,希望大家多多指正

第一步: 集成极光SDK

  集成极光文档主要的还是按照极光文档一步步来,导入一些系统框架,添加极光的.a文件和极光头文件,然后在相应的地方添加代码。添加代码极光文档都写的很详细,极光也有案例,可以参考案例

第二步:创建应用,或者appKey

  创建应用需要到登陆自己的极光账号(没有注册一个),到控制台创建一个应用,填写应用相应的信息。其中涉及到开发环境和开发环境的p12文件,这就需要到苹果开发者平台去配置推送证书,我这儿有一个网址 http://jingyan.baidu.com/article/5d6edee20f3ae599eadeec35.html 。 推送证书配置好了下载下来之后,双击会放到钥匙串中,在钥匙串中,选中推送证书右键,就有一个导出的选项,导出之后就是p12文件,这时候就可以选择了。创建完应用之后便可以拿到一个appKey,在程序的didFinishLaunchingWithOptions 集成的极光代码中,需要使用的这个appKey. 此时极光推送也就集成好了,在极光的后台也可以测试推送。 推送是根据程序bundle Id来识别某个app的,所以在极光上创建应用的时候跟配置证书的时候bundle Id 一定要跟程序bundle ID 一致

第三步:点击通知栏进行页面跳转

  推送的目的就是为了增加用户的活跃度,所以推送推到用户手机上之后,点击通知栏应该进行相应的页面跳转。页面跳转就设计到程序内部的了,每一个程序结构和内容都不一样,所以我就不做详细介绍了。我讲解一下我是如何进行页面跳转的吧。 首先后台开发人员会给客户端提供他们推送的数据包含哪些字段,这些字段分别都表示什么,有什么作用。当点击通知栏的时候这些数据会传递过来,这里又分为几种清空。

第一种程序没有杀死,app在后台的时候,并且手机系统为10.0以下的时候,点击通知栏会调用下面这个方法,后台推送的数据会包含在userInfo这个字典当中

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo }
span.s1 { }
span.s2 { color: #0433ff }
span.s3 { color: #3495af }

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

10.0 以上的系统调用下面这个方法,后台推送的数据包含在response.notification.request.content.userInfo里面

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo }
span.s1 { }
span.s2 { color: #0433ff }
span.s3 { color: #3495af }

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center

didReceiveNotificationResponse:(UNNotificationResponse *)response

withCompletionHandler:(void (^)())completionHandler

第二种程序没有杀死,app在前台的时候,这种情况咱就不考虑了,因为app在前台的时候通常是不会进行界面跳转的

第三种情况就是程序杀死了,点击通知栏会调用didFinishLaunchingWithOptions 方法,后台推送的数据包含在launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey],launchOptions这个字典的这个UIApplicationLaunchOptionsRemoteNotificationKey字段中

我们需要进行界面跳转,以及数据展示,那么就必须把这些数据保存起来,我的做法是定义一个单利模型,用KVC的方式,为模型赋值,将数据保存到单例模型中。然后跳转的话,可以通过通知的方式,在app首页接收通知,一律在首页进行界面跳转,因为首页一定是存在的(app登陆之后到退出的这段时间)。然后实现通知观察者的方法,在根据推送数据模型的数据进行页面跳转。

说到这儿,我不得不提出我在开发当中遇到的两个比较严重的问题

1. 页面连续跳转多次

2. 当程序杀死的时候,收到通知,点击通知栏无法进行跳转

第一个问题跳转多次的原因是通知观察者没有移除的原因。或许跟我的项目框架有关系,我们的项目框架是从登陆控制器push到tabBar控制器,这样就可能导致退出登陆之后首页控制器没有及时被销毁,然后再次登陆,首页就注册了两个通知观察者,就会导致重复跳转的清空,所以通知观察者一定要记得移除,还有推送数据单利模型的值在退出登陆之后也应该清空

第二个问题程序杀死了收不到通知,这就涉及到程序的生命周期了。程序杀死了,收到通知,点击通知栏进入的是didFinishLaunchingWithOptions这个方法,推送的数据也是在这个方法中进行存储的。然后程序启动进入到首页(因为程序杀死了之后一定会进入到首页,所以这里就不发送通知了),在首页我们手动在调一次接收到推送通知后执行的方法进行界面跳转,当然在这个方法中需要做判断,判断单例模型的某一个属性的值是否为空(这个值必须确保有推送的时候一定是不为空的),然后在进行页面跳转。不然的话,即使没有通知,首页进行初始化也进行跳转的话就出问题了。但是!!!!! 这个但是很重要,主动调用接收到通知的方法 这是一定要加的,还要将这个方法放到异步主线程中执行。因为程序杀死之后点击通知栏需要重新初始化首页控制器,而在viewDidLoad调用界面跳转的方法跳转的时候,首页控制器还没有初始化完毕,需要等到viewDidLoad执行完毕之后才能进行跳转,所以要加一个异步主线程,这样才能在程序杀死之后也能进行界面跳转

p.p1 { margin: 0.0px 0.0px 0.0px 60.0px; font: 16.0px Courier; color: #93a1a1 }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3495af }
span.s1 { color: #000000 }
span.s2 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3495af }
span.s1 { color: #000000 }
span.s2 { }

时间: 2024-10-10 02:44:24

极光推送实战感受的相关文章

JPush 极光推送 实战

极光推送的"自定义消息"很给力啊,他不是发送一条消息到状态栏,而是直接把消息内容传到APP中需要的地方,估计很多APP的验证码就是通过这种形式搞出来的. 简介 官网:https://www.jpush.cn/ 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度.提高应用的留存率. 主要功能 保持与服务器的长连接,以便消息能够即时推送到达客户端 接收通知与自定义消息,并向开发者App传递相关信息

wex5 实战 极光推送(1)自定义通知步骤与要领

相信最初接触wex5的人,一定看过官方的极光推送的教学视频,个人认为不够系统明白.今天用自定义通知,对每一步进进行详细说明,帮助大家初步认识极光推送,并集成到app中,打包并上线成功.相关教学视频随后录制. 一 效果演示: 1  极光官网后台推送 2 安卓手机推送效果 二  设计思路 用极光推送插件,集成到app应用中,调用插件api实现app端的通知推送(这里以安卓手机为例) 三  代码实现与步骤 1 注册极光推送帐号,并得到相关key和参数 官网地址:https://www.jiguang.

项目实战:iOS极光推送集成(30分钟搞定)

推送有非常多,如个推.友盟.融云和极光等等.在这里就讲下怎样使用极光推送. 主要内容是将官方文档资料详细汇总并一步一步集成到项目中,您也能够直接去官方文档阅览. 极光推送SDK下载 直接打开官方文档下载最新的SDK 极光网创建APP并上传证书 一.制作推送证书和描写叙述文件:须要注意要制作两个证书,一个是測试证书,一个是公布证书,详细看官方文档截图:点击查看证书制作 直接看<iOS 证书 设置指南>其它的不用看了,废话太多 二.在极光推送官网注冊你的APP吧. bundle id要和你项目一直

[APICloud教程] 极光推送(ajpush)demo

注意:使用极光推送,必须到官网编译正式版本并且勾选极光推送模块,apploader中目前暂时未包含极光推送模块,所以无法在apploader中直接使用,通常会报类似:cannot call method 'init' of undefind at xxx.html 的错误. 官方版极光推送模块各个api的简单代码示例. 使用前请将config中的appkey换成你的app的. 使用步骤: 1.在APICloud云端新建app并获取应用包名:预览->端开发->证书->获取ios和andro

关于极光推送Jpush的demo

关于极光推送Jpush 推送是手机app必不可少的一样功能,这次由于公司项目需要研究了一下.由于推送一般写于服务端,所以对于不会Android的javaweb程序员要写出一个完整的demo是一件很头痛的事情.所以我就在这里从头到尾写一个例子以示参考.由于我也不懂Android 只是由于项目需要百度了一个demo,当中有很多不足的地方忘各位大神指正. 一.首先先简单的介绍一下什么是极光推送 ①为什么需要推送:为了解决数据同步的问题,在手机平台上,常用的方法有2种.一种是定时去服务器上查询数据,也叫

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

这是 react native 配置极光推送使用的组件,比较常用https://github.com/jpush/jpush-react-native 先把组件地址贴出来,方便大家使用参考.如果这个大家不能配置成功,欢迎大家一起入坑交流,有问题联系 QQ379038610(添加备注说明原因) 不扯没用的,还要洗洗睡觉,直接把自己配置iOS极光的步骤给大家贴出来 1,首先大家项目环境,签名证书什么都配置完毕,开始集成推送的前提下 在项目当前目录执行: npm install jpush-react

iOS: 极光推送

之前做过环信和友盟的推送,照着官方文档集成其实挺简单的,今天公司需要,特地做了一下极光推送.不用不知道,原来极光推送集成如此简单,不得不说说了. 当然做推送钱需要做一些准备工作了,就是推送必须的p12推送证书:开发环境(开发时测试需要的推送证书).生产环境(发布到AppStore时需要的推送证书),因为xcode已经升级到了7.0以上,所以一些真机测试的配置文件证书就不需要自己手动去创建了,只要有Apple ID,真机测试时,就能自动生成,免费测试: 制作证书的过程就不啰嗦了,详细看官方文档或者

极光推送配置注意事

1. 首先进入苹果开发者中心,创建证书,包括,调试(真机测试)证书(开发和发布),这两个证书将用在xcode中, 2.再创建推送证书,需要导出钥匙串文件.cer,也是发布推送证书和开发推送证书,并且在push Notifications 勾选,表示允许推送. 3.需要创建appid,创建的时候需要设置xcode的bundle ID(bundle id 又包括完整的如,www.xxx.dddd,带*号的如,www.xxx.*,一般还是用完整的), 4.证书都创建好了以后,创建配置文件,也是包括开发

关于Android端配置极光推送

因为业务需要,android客户端需要加推送,原来采用的百度推送,但是小米手机有时候收不到,后来换成了极光推送,极光的话所有设备都能收到推送,但是在高峰的时候会推迟,博主说的免费版的,收费的没用过,也不错评论 博主用的android studio开发的,.so文件放置的位置啥的可能和eclipse有点不同,感觉用android studio开发jni一类的真的好费劲,博主现在老腻歪了,唉,废话不多说,进入正题: 首先,去极光推送官网注册一系列流程,不过貌似不用认证,老长时间注册的了,忘得差不多了