我希望iOS11版本能解决无声推送问题,这是最新的测试版和通用版iOS版.
目前我很难理解,为什么我没有收到任何静音推送消息,这实际上应该唤醒我的应用程序以在后台执行一些所需的任务.
在iOS 10中,我只使用后台获取功能,并在我的AppDelegate中实现了"唤醒代码",如下面的代码所示.
在iOS 11中,注册代码仍然正常工作,我的后端也向Apples DEV服务器(沙箱)和PROD服务器(生产版本)提供推送通知.不幸的func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
是,静音推送通知从不调用该函数.
我真的错过了iOS 11的东西吗?
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
// .. some variables here ...
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// register silent push notification in backend
application.registerForRemoteNotifications()
// ... some code here ...
// Set Background Fetch Intervall for background services / terminated app
UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
// ... some code here ...
return true
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let tokenParts = deviceToken.map { data -> String in
return String(format: "%02.2hhx", data)
}
let token = tokenParts.joined()
logger.log.debug("Device Token: \(token)")
let realm = RealmController()
let user = realm.getLoggedInUserObject()
// Send push token to server
if let user = user {
let email = user.email!
let serverCOntroller= ServerController.serverController
serverController.sendPushToken(token: token, email: email) { status in
if status == 201 {
// ... some code here ...
} else {
// ... some code here ...
}
}
}
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
logger.log.debug(error)
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
logger.log.debug(userInfo)
let aps = userInfo["aps"] as! [String: AnyObject]
if aps["content-available"] as? Int == 1 {
// .... some silent push tasks here ....
}
}
}
AlexWoe89..
5
最终更新2017-10-31
Apple刚刚发布了iOS 11.1的官方(万圣节)版本
更新2017-10-09
Apple今天发布了iOS11.1 beta 2.他们再次在发行说明中提到以下说明:
通知已解决的问题
更频繁地处理静默推送通知.(33278611)
我将再次测试此beta 2版本并更新此答案以获取您的信息.
更新 - 测试 - >在针对不同场景进行一些测试之后,这个错误似乎在最新的iOS11.1 beta 2版本中得到修复.现在我们只能等待正式发布.在一些论坛中,他们认为Apple将在10月底发布iOS11.1.
较旧的帖子
我上周调查了很多时间来寻找关于这个问题的答案.在阅读了苹果发行说明(包括已弃用,更改和新功能)后,我测试了以下情况:
我向我添加了空函数AppDelegate
,现在静音推送在前台和后台再次工作:
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
logger.log.debug("Perform Fetch with completion handler TEST")
}
我不确定这个'解决方法'是否与问题有关,function application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
在iOS11中没有调用以下内容.
不过,如果你发现同样的行为,你可以尝试一下并给我反馈.
更新2017-09-25
"静音推送"现在在我的情况下在前台和后台模式下工作,但是,如果应用程序从用户或操作系统暂停,则不会.所以这个问题仍然是开放的,没有修复 - 任何帮助表示赞赏!有关更多信息,请参阅此主题:
在iOS 11上无法传送到应用程序的静音推送
更新2017-10-05
苹果公司几天前发布了iOS11.1测试版.他们在发行说明中提到了以下内容:
通知已解决的问题
更频繁地处理无提示推送通知.(33278611)
一些开发人员说该问题已通过此测试版得到修复,其他开发人员表示在某些情况下该问题仍然存在.现在,当Apple为客户推出iOS11.1时会很有趣.
1> AlexWoe89..:
最终更新2017-10-31
Apple刚刚发布了iOS 11.1的官方(万圣节)版本
更新2017-10-09
Apple今天发布了iOS11.1 beta 2.他们再次在发行说明中提到以下说明:
通知已解决的问题
更频繁地处理静默推送通知.(33278611)
我将再次测试此beta 2版本并更新此答案以获取您的信息.
更新 - 测试 - >在针对不同场景进行一些测试之后,这个错误似乎在最新的iOS11.1 beta 2版本中得到修复.现在我们只能等待正式发布.在一些论坛中,他们认为Apple将在10月底发布iOS11.1.
较旧的帖子
我上周调查了很多时间来寻找关于这个问题的答案.在阅读了苹果发行说明(包括已弃用,更改和新功能)后,我测试了以下情况:
我向我添加了空函数AppDelegate
,现在静音推送在前台和后台再次工作:
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
logger.log.debug("Perform Fetch with completion handler TEST")
}
我不确定这个'解决方法'是否与问题有关,function application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
在iOS11中没有调用以下内容.
不过,如果你发现同样的行为,你可以尝试一下并给我反馈.
更新2017-09-25
"静音推送"现在在我的情况下在前台和后台模式下工作,但是,如果应用程序从用户或操作系统暂停,则不会.所以这个问题仍然是开放的,没有修复 - 任何帮助表示赞赏!有关更多信息,请参阅此主题:
在iOS 11上无法传送到应用程序的静音推送
更新2017-10-05
苹果公司几天前发布了iOS11.1测试版.他们在发行说明中提到了以下内容:
通知已解决的问题
更频繁地处理无提示推送通知.(33278611)
一些开发人员说该问题已通过此测试版得到修复,其他开发人员表示在某些情况下该问题仍然存在.现在,当Apple为客户推出iOS11.1时会很有趣.