如何调试静默远程通知

Nim*_*hai 4 objective-c ios

我找不到任何地方如何调试静默远程通知。

我知道可以通过将项目方案设置为“等待可执行文件启动”来调试正常的远程通知,但由于静默删除通知不会打开应用程序,因此它不起作用。

我也不确定当我收到无声远程通知时应该调用哪个方法。已经尝试过:

-application:didFinishLaunchingWithOptions
-application:didFinishLaunching
-application:didReceiveRemoteNotification
-application:didReceiveRemoteNotification:fetchCompletionHandler
-application:handleActionWithIdentifier:forRemoteNotification:completionHandler
Run Code Online (Sandbox Code Playgroud)

这些都不起作用...

这是我的有效负载:

{
  "aps": {
    "content-available": 1,
    "sound":"silent.wav"}
}
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?

Lan*_*nce 6

发生的情况是您的有效负载不正确。为了使其被视为将触发后台提取的静默推送通知,“aps”字典中唯一允许的内容是"content-available":1. 由于您有声音,系统会忽略可用内容部分并将其作为常规通知发送。由于没有“警报”部分,因此没有可交互的通知,也无法启动您的应用程序。删除声音部分,您的通知就会通过-application:didReceiveRemoteNotification:fetchCompletionHandler

无论您的应用程序在后台运行还是尚未在设备上启动,都没有什么区别。如果应用程序未运行,iOS 将在应用程序在后台启动后将其唤醒并发送通知。如果它已运行但处于后台或在前台运行,则通知将简单地传递到您的应用程序。不管怎样,它仍然采用相同的方法。

要使其发挥作用,还有另外两个要求:

  1. 您的设备必须为您的应用程序启用后台提取。
  2. 您无法通过从多任务用户界面向上滑动来手动终止应用程序。如果您这样做,iOS 将永远不会唤醒该应用程序,直到用户再次运行该应用程序。