【发布时间】:2018-04-21 15:44:12
【问题描述】:
场景:
1) 应用在前台时的静默或正常负载:
- 什么都没有发生
2) 应用在后台时的静默负载:
- 什么都没有发生
3) 应用在后台时的正常负载:
-
如果用户点击通知打开应用程序。
- 触发
application:didReceiveRemoteNotification:fetchCompletionHandler
- 触发
-
如果用户点击应用图标打开应用:
- 什么都没有发生
这些是我用于 APN 的有效负载:
正常负载:。
{
"aps":{
"alert":"andre test",
"badge":0,
"sound":"default",
"content-available":1
},
"acme-syncalarm":"true"
}
静默负载:。
{
"aps":{
"content-available":1
},
"acme-syncalarm":"true"
}
我已经使用以下代码实现了远程推送通知:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("Receeeeeeeeived: \(userInfo)")
UIApplication.shared.applicationIconBadgeNumber = 11
completionHandler(.newData)
}
我还实现了这个来检查应用程序是否正在从终止状态中恢复(正如我在一些问题中所读到的那样),但代码从未进入 print(rn)line。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if let rn = launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] {
print(rn)
}
}
编辑 1 - 我还为应用程序启用了后台模式下的远程通知。
我必须做什么才能涵盖“什么都没有发生”的情景? 1、2和3.2?
【问题讨论】:
-
你用的是什么iOS版本?
-
如果您使用的是 iOS 11,请将您的 iPhone 连接到您的 Mac,并在您发送推送时观察设备日志记录。在设备日志中搜索术语 pushLaunch 并发布它的内容。
-
11.1 ...我刚刚更新到 11.1.1 但现在我必须更新我的 Xcode 以再次测试...:/ 我忘记了我不应该在 Xcode 之前更新手机。 ..
标签: ios swift swift3 apple-push-notifications ios11