当应用程序在后台时,推送通知未调用 didReceiveRemoteNotification
Posted
技术标签:
【中文标题】当应用程序在后台时,推送通知未调用 didReceiveRemoteNotification【英文标题】:Push Notification not calling didReceiveRemoteNotification when app in background 【发布时间】:2014-04-17 15:17:47 【问题描述】:我有一个 ios 应用程序,我从我的服务器收到推送通知。我在发送到 APNS 的 json 中将 content-available 设置为 1,并在我的应用程序中设置了后台功能的标志。
推送通知来了,但是当应用程序在后台时 didReceiveRemoteNotification 没有被调用 - 我真的需要这样做,因为我想为我的用户显示横幅。
谁能告诉我我做错了什么?
谢谢
通知:
aps = alert = "action-loc-key" = "This is button message"; body = "This is an iOS message"; ; badge = "-1"; sound = default; "content-available" = 1 ;
【问题讨论】:
你能发布推送正文内容吗,我想它在前台接收到了?您是否仅在 Capabilites 部分设置了标志?如果是这样,请检查它们是否已进入 info.plist - 有时 Xcode 似乎无法正确填充 plist。 是的,确实如此。 aps = alert = "action-loc-key" = "这是按钮信息"; body = "这是一条 iOS 消息"; ;徽章=“-1”;声音=默认; "内容可用" = 1 ; 我确保 Xcode 正确放置了字符串。 去掉徽章并将声音设置为空字符串,即'' 它还会发出声音吗? 【参考方案1】:如果应用程序处于后台模式,则在出现推送通知时不会自动调用方法- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
。
仅当用户点击推送通知警报或横幅时才会调用此方法。
【讨论】:
如果应用程序在后台但手机没有锁定,我应该如何制作横幅显示?很多app都这样做,应该是很有可能的。 我认为您需要去实际阅读有关推送通知和本地通知的苹果文档。您在抱怨用户没有看到横幅的同时抱怨您的应用程序没有在后台获得推送。操作系统不会两者都做。答案都在 Apple 文档中。 马丁,我不相信我们彼此了解;我不需要两个,我实际上只需要其中一个。如果应用程序在后台时会显示横幅(如屏幕锁定时显示的那样) - 很好,但事实并非如此。如果,回调 didReceiveRemoteNotification 至少会被调用 - 我可以自己做。所以,不是两者兼而有之。只是其中之一。但两者都不会发生。所以我的问题是 - 我应该如何为我的用户举起横幅? @LiorZ 如果您没有看到横幅并且调用了方法 didReceiveRemoteNotification ,那么 Apple Push Notification 机制似乎根本不适合您。你是在 Apple Developer Portal 中配置的吗? 是的。该机制有效 - 因为当应用程序处于前台时我确实会收到通知。即使在背景中我也能听到声音 - 但不是横幅。以上是关于当应用程序在后台时,推送通知未调用 didReceiveRemoteNotification的主要内容,如果未能解决你的问题,请参考以下文章
应用程序未运行时未调用本地通知的 UNUserNotificationCenterDelegate didReceive 响应