ios 应用没启动时,怎么获取ios 收不到推送消息息

输入关键字或相关内容进行搜索
在android上无论前台、后台都可以收到透传消息,但是在iOS上只有在前台才能收到,后台收不到?
楼主解决了吗?
后台推送需要配置APS
要回复问题请先或
浏览: 14706
关注: 3 人2015年5月 移动开发大版内专家分月排行榜第一2015年4月 移动开发大版内专家分月排行榜第一2014年9月 移动开发大版内专家分月排行榜第一
2015年3月 移动开发大版内专家分月排行榜第二2014年8月 移动开发大版内专家分月排行榜第二
2015年5月 移动开发大版内专家分月排行榜第一2015年4月 移动开发大版内专家分月排行榜第一2014年9月 移动开发大版内专家分月排行榜第一
2015年3月 移动开发大版内专家分月排行榜第二2014年8月 移动开发大版内专家分月排行榜第二
2015年4月 移动开发大版内专家分月排行榜第二
2015年5月 移动开发大版内专家分月排行榜第三2015年3月 移动开发大版内专家分月排行榜第三2014年10月 移动开发大版内专家分月排行榜第三
2015年5月 移动开发大版内专家分月排行榜第一2015年4月 移动开发大版内专家分月排行榜第一2014年9月 移动开发大版内专家分月排行榜第一
2015年3月 移动开发大版内专家分月排行榜第二2014年8月 移动开发大版内专家分月排行榜第二
2015年4月 移动开发大版内专家分月排行榜第二
2015年5月 移动开发大版内专家分月排行榜第三2015年3月 移动开发大版内专家分月排行榜第三2014年10月 移动开发大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。& 最近在做消息推送,点击app图标的时候获取不到推送内容,相当的蛋疼,还有就是如果接收到了多条推送信息,那么点击一个推送提示框,只能显示一个,其他的就没有,这个问题困扰很久了,现在有了解决的方法:
&&当应用是被通知打开的时候,你可以通过&application:didFinishLaunchingWithOptions:方法的launchOptions&参数所使用的
dictionary 访问到数据:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Extract the notification data
NSDictionary *notificationPayload = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
// Create a pointer to the Photo object
NSString *photoId = [notificationPayload objectForKey:@&p&];
PhotoVC *viewController = [[PhotoVC alloc] initWithPhoto:object];
[self.navController pushViewController:viewController animated:YES];
}如果当通知到达的时候,你的应用已经在运行,那么你可以通过application:didReceiveRemoteNotification:&方法的&userInfo&参数所使用
dictionary 访问到数据:
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo{
NSString *photoId = [userInfo objectForKey:@&p&];
//然后在这里面处理
上面这些大家都知道,现在关键来了,怎么样在点击app图标的时候获取信息呢,
& 不管是应用在后台运行,还是完全关闭,只要点击应用图标,应用肯定会走,applicationdidbecomeactive 这个方法,那么我们就在这个方法里面进行操作,前提是,后台必须有保存推送信息的表(当后台进行推送的时候,推送完成之后,将推送的内容保存在数据库中,供客户端在需要的时候进行查找)比如一个notification_log表,具体的操作:
& &1,后台创建表,保存数据
& &2,客户端在应用进入前台的时候在 上面那个 delegate方法中进行如下代码的操作
& & & a,NSInteger notificationBadge =& application.applicationIconBadgeNumber;这个是badge
就是现在的应用收到的推送数量
& & & &b,如果notificationBadge == 0 那就不进行操作,如果不等于零,那就在数据库中进行查询,然后获得这个数据里面的最后notificationBadge个数据,
& & & &c,当然推送的群体可能不同,可能是给某些用户推送的信息,那就在查询数据的时候添加筛选条件,把符合当前用户能够接收的消息查找出来,之后再获取最后的notificationBadge个数据,&
& & &d,之后,就是进行数据的判断操作,和相应的跳转
下面是我用leanCloud平台的API写的demo:
- (void)getNotifigationFromData:(UIApplication *)app{
NSInteger notificationBadge =
app.applicationIconBadgeN
ZYSystemPushManager *manager = [ZYSystemPushManager manager];//写的一个单例类,用来存储数据
if (notificationBadge == 0) {
[self viewControllerIRootViewController];
[[LZPushManager manager] findNotification:^(NSArray *objects, NSError *error) {
//这个是封装的一个方法,用来回调查找结果
if (error) {
NSLog(@&查找通知失败%@&,error);
//我的数据库的表里面有个data字段,data字段存储的json字符串,把他转成字典格式
for (NSInteger i = notificationB i & 0; i--) {
NSString *notiStr = [objects[objects.count - i] objectForKey:@&data&];
NSLog(@&notistr...........%@&,notiStr);
if (notiStr) {
NSData *jsonData = [notiStr dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
if (err) {
NSLog(@&有错误%@&,err);
NSLog(@&%@&,dic);
NSString *toWhere = [dic objectForKey:@&page-path&];
if([toWhere isEqualToString:@&systemMessage&]){
[manager.noticeAry addObject:dic];//在这里进行数据的判断,然然添加啊到数组里面,在相应的页面进行调用
[[NSNotificationCenter defaultCenter] postNotificationName:@&NotificationUpdata& object:nil];
[self viewControllerIRootViewControllerToPushMessageVC];
- (void)findNotification:(AVArrayResultBlock)callback{
AVQuery *query = [AVQuery queryWithClassName:@&NotificationLog&];//在channels 字段的数据,要被包含在后面那个数组里面,
[query whereKey:@&channels& containedIn:@[@&normaluser&,@&all&]];//查找条件
[query findObjectsInBackgroundWithBlock:callback];
仅供参考,具体的思想就是,建立一个表,在表里面取得当前消息个数的数据,进行保存,显示,
如果对您有帮助,请帮忙赞一个,谢谢,
注:在我的应用中可用.
本文已收录于以下专栏:
相关文章推荐
打开电脑iTunes 选择appstore 选择iPhone 并在搜索框中输入要下载的应用名称
搜索到之后点击 获取
下载完成之后切换到  我的iPhone应用程序
右键点击...
Bump 有一个小功能是给你身边的人交换应用程序;但是iOS是没有接口提供开发者去获取用户手机所安装的app的,但是,为什么Bump这款通过正规渠道(Appstore)下载的应用却能够获取用户安装应用...
NSDictionary *infoPlist = [[NSBundle mainBundle] infoDictionary];
NSString *icon = [[infoPlist ...
一、设置badge(角标)
    [[UIApplicationsharedApplication]setApplicationIconBadgeNumber:0];
    [...
一、设置badge(角标)
    [[UIApplication
sharedApplication]setApplicationIconBadgeNumber:0];
    [JPUSHSer...
写作原因:网上看了很多推送文章都没有完美的解答我的疑惑;主要有以下两点,1:推送来了我点击应用图标进入应用怎么取到推送消息?2:怎么保证一定能够获取到远程推送的消息,因为有的远程推送消息很重要;这里主...
今天做APNS远程推送通知遇到了一个问题,就是手机接收到通知的时候,如果马上点击通知的 alert view时候,系统马上唤醒你的Application,通知或调用你的didReceiveLocalN...
一、消息推送的基本概念
@在实现消息推送功能之前先来了解一下消息推送的基本概念:
@介绍一下苹果的推送机制(APNS)
Provider是给你手机应用发出推送消息的服务器,而APNS(Apple ...
转:  http://blog.csdn.net/shenjie/article/details/
好久没有写过博客啦,今天就由本菜鸟给大家做一个简单的IOS...
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)主题 : 程序没有启动时接到推送怎么处理
级别: 新手上路
UID: 538009
可可豆: 19 CB
威望: 14 点
在线时间: 1(时)
发自: Web Page
来源于&&分类
程序没有启动时接到推送怎么处理&&&
新手一枚,最新在做iOS在程序没有启动的时候接到推送通知怎么处理,希望大家能帮着解答一下。
级别: 圣骑士
UID: 452831
可可豆: 1416 CB
威望: 1103 点
在线时间: 648(时)
发自: Web Page
给你个链接,自己去看一下吧。92iOS:点击推送通知进入程序,获取通知信息(出处: 92iOS)解答很详细。
喜欢iOS的可以逛一下我的论坛
级别: 新手上路
UID: 538009
可可豆: 19 CB
威望: 14 点
在线时间: 1(时)
发自: Web Page
回 1楼(h) 的帖子
谢谢,看了下很有用。
级别: 圣骑士
UID: 452831
可可豆: 1416 CB
威望: 1103 点
在线时间: 648(时)
发自: Web Page
回 2楼(iOS菜鸟开发者) 的帖子
嗯,有用就行。
喜欢iOS的可以逛一下我的论坛
级别: 圣骑士
UID: 452831
可可豆: 1416 CB
威望: 1103 点
在线时间: 648(时)
发自: Web Page
喜欢iOS的可以逛一下我的论坛
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版iOS 点击icon进入程序怎么获取推送消息 - 简书
iOS 点击icon进入程序怎么获取推送消息
但很多app都实现这种,不点通知进入,直接点app启动照样能得到推送信息的。
网上的说法:没有具体实施
如果不是点击通知栏进入APP,是拿不到推送消息的。原因是这样的,如果堆积了多条应用,回调将会变得复杂,而且没用。正确的做法是,服务器要缓存好当前的未读消息,进入应用的时候去获取未读消息。如果要识别通知栏点击,那获取未读消息之前可能还要进行进一步逻辑处理。
原来极光推送有background模式,我后台的时候直接把消息处理一下,要求显示alert事件,点击icon进入app内就显示alert了。
有关极光社区中的帖子:
// Required, iOS (7.0 and later) Support
//iOS7及以上系统,收到通知
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -& Void) {
//处理收到的 APNs 消息
JPUSHService.handleRemoteNotification(userInfo)
completionHandler(.newData)
iOS的应用程序分为3种状态
1、前台运行的状态UIApplicationStateActive;
2、后台运行的状态UIApplicationStateInactive;
3、app关闭状态UIApplicationStateBackground。
if application.applicationState == .active {
// 应用正处理前台状态下,不会收到推送消息,因此在此处需要额外处理一下
//let message = "您有一条新的消息,是否点击查看"
print("// 应用正处理前台状态下,不会收到推送消息,因此在此处需要额外处理一下------------userinfo:%@",userInfo)
showAlertWithMessage(userInfo)
} else if application.applicationState == .inactive {
// 处于后台运行状态时
print("// 处于后台运行状态时---------userinfo:%@",userInfo)
showAlertWithMessage(userInfo)
} else if application.applicationState == .background {
//app关闭状态
print("//app关闭状态-----------userinfo:%@",userInfo)
showAlertWithMessage(userInfo)}

我要回帖

更多关于 ios 消息推送 的文章

更多推荐

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

点击添加站长微信