远程推送的问题

原创 2013年12月03日 10:15:45

最近在做推送的时候出现了强制执行推送函数的情况

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 函数是在应用已经启动,在后台或者前台情况下执行。因此问题来了,当用户在应用内使用时,收到远程推送就很可能出现被强制执行通知的事件。

最后测试发现,在执行这个函数之前,如果是从后台进入则会先执行

- (void)applicationWillEnterForeground:(UIApplication *)application,这时只需要在该函数内使用一个BOOL变量就能控制了。因为只要是从后台点通知进入的就需要执行通知的函数,但是直接点击应用进入的就不需要执行通知函数。

此外,在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中也需要处理通知事件,如果应用是被通知触发启动,是不会进入didReceiveRemoteNotification这个函数的,这时候需要在didFinishLaunchingWithOptions中做处理

NSDictionary* userInfo = [launchOptionsvalueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];

    if (userInfo) {

        self.notificationDcit = userInfo;

        ....

        ...

        

           ...

        

    }

userInfo是启动项launchOptions中取出来的远程通知字典,如果是由远程通知启动的应用这个字典是!nil的

强制执行的问题就解决了。


最近做推送的时候还遇上一问题,就是在应用关闭状态,收到远程通知,这时候不点击通知而是从应用的图标启动,会出现上述字典userInfo为nil的情况。也不会执行didReceiveRemoteNotification代理方法,此种情况下,应用是无法拿到手机获得的推送消息的。这时候无法在应用中进行有效的用户提示,可有大神知道怎么解决?很纠结啊!

ios-远程推送服务APNs

简单的说一下概念,远程推送通知,其实就是从远程服务器推送给客户端的通知是需要联网的。 远程推送服务又称为APNs全称为Apple Push Notification Services 其实现实Ap...
  • ZCMUCZX
  • ZCMUCZX
  • 2017年10月31日 09:14
  • 93

iOS推送之远程推送

最近公司项目升级重构(重写),除了本来我所负责的模块,最后临危受命接了推送(远程和本地)相关的模块,顺便把推送的相关知识复习了一遍。后期连续工作十几天加上最后一天的通(瞎)宵(熬)达(一)旦(夜),也...
  • starsliu
  • starsliu
  • 2016年02月26日 15:59
  • 267

SourceTree使用问题

初学Git之SourceTree遇到的一些问题汇总 1、push时提示no new changes 1)第一次想push到leader去review,结果没提交直接push。       没理解提交和...
  • xu20082100226
  • xu20082100226
  • 2017年05月19日 14:51
  • 1122

github:推送至远程仓库

上一节我们,都是在本地进行管理,如何将本地的仓库推送到远程仓库呢: 在github上先建立一个仓库,创建README文件不要勾选,因为一旦创建就失去了和本地仓库的整合性。创建完成后,出现下面的选项: ...
  • x6_9x
  • x6_9x
  • 2016年03月16日 10:14
  • 1218

将自己的本地分支推送至他人的远程仓库

关于将本地分支推送到远程分支,虽然之前做过,但是并没有彻底弄明白,今天将自己的项目部分推送到队友的github上才算真正明白操作的具体流程。过程参照了http://www.liaoxuefeng.co...
  • Agnesyuan
  • Agnesyuan
  • 2016年11月11日 00:25
  • 1485

Shell陷阱:$!和$?等变量在推送到远程主机执行时的取值问题

对于$!和$?这类依赖上下文的变量,当其作为命令行中的一部分被推送到远程主机执行时,一定要考虑到的它的特殊性,否则脚本很难按你预料的方式执行,且错误也难发现。让我们两个例子:第一个例子是通过SSH向远...
  • bluishglc
  • bluishglc
  • 2015年02月11日 13:55
  • 5213

适配 iOS 8 时遇到的问题两则:远程推送和 Unwind Segue

原文:http://imtx.me/archives/1910.html 昨天我在微博上吐槽:iOS 8 / Xcode 6 真是史上对开发者最糟糕的版本了。收到很多朋友表达同感。 ...
  • sqc3375177
  • sqc3375177
  • 2014年10月24日 01:30
  • 2541

ios远程推送常见问题

常见问题: 1、在用证书和秘钥链接服务器时出现提示: Error opening client certificate private key filePushChatKey.pem20839:er...
  • LiqunZhang
  • LiqunZhang
  • 2017年03月27日 10:54
  • 603

iOS远程推送Demo和PHP服务器配置、以及问题的解决方法

写这篇文章的目的是为了自己做笔记,以免下次再出现同样的错误,如果对你有帮助,你可以接着往下看看。。。。1、配置APNs相关证书      关于相关证书的配置,参考的是网上的博客:http://zxs...
  • lin1109221208
  • lin1109221208
  • 2016年06月20日 12:30
  • 2121

iOS 远程推送参考资料及自己遇到的问题

很好的参考资料:http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1...
  • liyun123gx
  • liyun123gx
  • 2014年12月25日 13:13
  • 1343
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:远程推送的问题
举报原因:
原因补充:

(最多只允许输入30个字)