iOS -- 处理推送消息
简介
很多应用都会实现推送功能,我们可以集成第三方框架实现推送功能,比如:
JPush推送:https://www.jpush.cn
下面来说说收到推送消息的逻辑处理
收到推送消息有三种情况:
1、应用未启动(默认显示在通知栏,或者锁屏时显示在锁屏页面)
2、应用在后台挂起(默认显示在通知栏,或者锁屏时显示在锁屏页面)
3、应用在前台(默认不显示)
点击推送消息有两种情况:
1、应用未启动 -> 启动
这个时候如论是点击推送消息打开应用还是点击icon打开应用都会调用以下方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ }
通过launchOptions判断应用是点击推送消息打开应用还是点击icon打开应用,点击推送消息启动应用会把推送的消息userInfo通过launchOptions参数传递过来。
推送是远程推送:
if (launchOptions) {
NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (userInfo) {
//接收到远程推送进行相应的逻辑处理
}
}
推送是本地推送:
if (launchOptions) {
UILocalNotification *notifi = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (notifi) {
//处理本地推送消息
}
}
2、应用在后台 -> 应用在前台
应用在后台挂起时点击推送消息和应用在前台时收到推送消息,都会调用以下方法:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler{ }
应用在后台挂起时默认是不调用该方法的,如果你需要接收到推送消息还没点击推送就调用该方法,可以让服务器发给APNS时在aps 字典中加入:
NSInteger state = [UIApplication sharedApplication].applicationState;
if (state == UIApplicationStateActive) {
//应用在前台
}
else if(state == UIApplicationStateBackground){
//应用在后台
}
else if(state == UIApplicationStateInactive){
//应用从后台->前台
}
PS:
最近负责公司项目的推送功能,要求根据推送消息中的“类型”参数判断具体跳转位置,项目中使用的是“个推”,下面来简单说说个推。
个推中有个透传消息模版,只要应用在前台就会收到所有发过来的透传消息(不做任何显示,显示需要自己定义),即使关闭推送功能也会收到透传消息;接受到该消息会调用以下方法:
- (void)GeTuiSdkDidReceivePayload:(NSString *)payloadId andTaskId:(NSString *)taskId andMessageId:(NSString *)aMsgId andOffLine:(BOOL)offLine fromApplication:(NSString *)appId {
// [4]: 收到个推消息
NSData *payload = [GeTuiSdk retrivePayloadById:payloadId];
/**
*汇报个推自定义事件
*actionId:用户自定义的actionid,int类型,取值90001-90999。
*taskId:下发任务的任务ID。
*msgId: 下发任务的消息ID。
*返回值:BOOL,YES表示该命令已经提交,NO表示该命令未提交成功。注:该结果不代表服务器收到该条命令
**/
[GeTuiSdk sendFeedbackMessage: taskId:taskId msgId:aMsgId];
}
关于本地推送参考文档:
iOS -- 处理推送消息的更多相关文章
- 使用PushSharp给iOS应用推送消息
PushSharp是一个C#编写的服务端类库,用于推送消息到各种客户端,支持iOS(iPhone/iPad).Android.Windows Phone.Windows 8.Amazo.Blackbe ...
- phonegap创建的ios项目推送消息出现闪退现象
使用phonegap创建的ios项目,推送消息时,当程序在前台运行或者在后台运行状态下,推送消息过来,可以解析并且跳转: 但是在程序从后台退出的状态下,当消息推送过来的时候,点击通知栏,打开程序,程序 ...
- ios 实现推送消息
iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的 ...
- iOS 远程推送消息解析及逻辑处理
关于远程推送的相关配置网上已经有足够多的教程,这里就不复述了.这里讲述当客户端收到推送消息后,应怎样对其进行相应的逻辑处理. 工程的AppDelegate.m文件里提供了如下方法: //当应用程序启动 ...
- iOS网络推送消息
在iOS项目的appdelegate.m文件中: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOpti ...
- iOS 推送消息长度
iOS最大推送消息长度 官方要求是256个字节 实际测试为1005个字节 在iPhone6上测试 锁屏时收到消息时只显示76个汉字,剩下的被隐藏 程序进入后台时只显示47个汉字,剩下的被隐藏
- iOS点击推送消息跳到应用指定页面
现在的推送用的越来越频繁,几乎每个应用都开始用到了.其实又有几个用户会去看推送消息呢?没办法,产品经理最大啊,只是苦了我们这一帮程序员啊!闲话少说,进入正题.兄弟我用的是极光推送,自然是以极光推送为例 ...
- IOS中程序如何进行推送消息(本地推送,远程推送)
[1]-------------什么是推送消息? 我就以一张图解释------------ [2]-----------IOS程序中如何进行本地推送?----------- 2.1,先征求用户同意 1 ...
- IOS 推送-客户端处理推送消息
IOS 推送-客户端处理推送消息 1.推送调用顺序 APN push的消息到达后,UIApplicationDelegate有两个方法和处理消息有关: 1)application:didReceive ...
随机推荐
- ucos中的三种临界区管理机制
熟悉ucos,或者读过Jean.J.Labrosse写过的ucos书籍的人,一定会知道ucos中著名的临界区管理宏:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL(). 同样 ...
- linux下关掉teamviewer服务
一.情景介绍 OS: ubuntu14.04 64bit teamviewer版本:10.0.36281 刚才看见已经关掉了teamviewer,但是通过ps看以下进程情况,却还存在该进程,于是: 二 ...
- Myeclipse出现 java文件中文乱码问题
一.将整个project设置编码UTF-8(UTF-8可以最大的支持国际化) windows->Preferences->general->Workspace->Text fi ...
- [地图SkyLine二次开发]框架(5)完结篇
上节讲到,将菜单悬浮到地图上面,而且任何操作都不会让地图把菜单盖住. 这节带大家,具体开发一个简单的功能,来了进一步了解,这个框架. 1.想菜单中添加按钮 -上节定义的mainLayout.js文件里 ...
- Execl 使用技巧
1. =COUNTIF(C:C;"*OS7*") 某一列中包含OS7的数量总数138
- Head First 设计模式-- 总结
模式汇总:装饰者 :包装一个对象以得到新的行为状态 :封装了基于状态的行为,并使用委托在行为之间切换迭代器 :在对象的结合中游走,而不暴露集合的实现外观 :简化一群类的接口策略 :封装可以 ...
- 【转】 linux内存管理
一 为什么需要使用虚拟内存 大家都知道,进程需要使用的代码和数据都放在内存中,比放在外存中要快很多.问题是内存空间太小了,不能满足进程的需求,而且现在都是多进程,情况更加糟糕.所以提出了虚拟内存,使得 ...
- 正则表达式入门(六)匹配unicode和其他字符
匹配unicode字符有时候我们需要匹配ASCII范围之外的字符. "Qu'est-ce que la tolérance? c'est l'apanage de l'humanité. N ...
- A flash of Joy
import re from datetime import timedelta from tornado import httpclient, gen, ioloop, queues peoples ...
- 补PSP进度(10.28-11.3)
本周PSP进度 10月31号 内容 开始时间 结束时间 打断时间 净时间 看蛋白质相互作用论文 8:40 10:35 约12m 103m 分析约跑功能 13:20 13:55 0 35m 练习VSL2 ...