感谢Alex,我现在知道它因iOS 11中的错误而失败,预期的解决方案将随iOS 11.2一起提供。
我不知道当我编写它时,问题显示了使静默通知工作的必要步骤。
在撰写本文时,它缺少在开发人员控制台的AppId中启用的服务,必须启用推送通知及其证书,以便进行开发和分发(视情况而定)。
来自服务器的有效负载如下:
$body = array(
'aps' => array( // Create the payload body
'content-available' => 1,
)
);
不会在应用程序中生成任何内容(我的意思是致电代表)
appDelegate:
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {...}
未调用哪个fn,didReceiveRemoteNotification, 并且也没有调用UNUserNotificationCenter didReceive fn。
Fn didfinishlaunch ...包括:
var center = UNUserNotificationCenter.current()
center.delegate = self
center.setNotificationCategories([loadActionAndCategoriesForNotifications()])
appDelegate中的通知注册如下,也是在didfinishlaunch ... fn:
if #available(iOS 10.0, *)
{
let options: UNAuthorizationOptions = [.alert, .badge, .sound]
// request authorization
center.requestAuthorization(options: options) {
(granted, error) in
if !granted {
l.i(self.TAG, "registerNotifications: request for authorization went wrong")
}
if granted {
l.i(self.TAG, "registerNotifications: request for authorization GRANTED.")
DispatchQueue.main.async {
l.i(self.TAG, "registerNotifications NOW WILL DO REMOTE REGISTRATION.")
UIApplication.shared.registerForRemoteNotifications()
}
}
if error != nil{
l.i(self.TAG, "registerForLocalNotification ERROR: \(error!.localizedDescription)")
}
}
} else {
// Fallback on earlier versions
UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.sound, .alert, .badge], categories: nil))
UIApplication.shared.registerForRemoteNotifications()
}
注册工作正常,我总是收到didRegisterNotif ...相应的deviceToken。
在Target功能上,推送通知已开启,后台模式已选中后台提取和远程通知。
如果我添加"'徽章' => 3,"到aps有效载荷,前景willPresent fn被调用,所以我可以进一步处理通知数据。
在背景中,好奇地,(宽度'徽章' => 3,在aps中)徽章已更新!但我期待didReceiveRemoteNotification或didReceive来处理它,所以我可以处理并发送本地通知,但它不会发生,它们永远不会被调用...
我读完之后我的想法已经用完了几乎我发现的任何问题......