我一直在研究iOS中的后台执行。其中一种方法是静默通知。
静默通知(又名后台推送)可用于将应用从挂起状态唤醒并更新内容。Xcode 11.4可以模拟常规用户通知,如here所述。然后,从Xcode 14开始,那些拥有苹果硅Mac笔记本电脑的人将能够从APNS本身send notifications to simulator。好极了。
但这篇文章是关于无声通知的。
使用的.apns文件是,
{
"Simulator Target Bundle": "com.example.IOSBackgroundExec",
"aps": {
"content-available": 1
}
}
字符串
在项目设置中,“签名和功能”选项卡下启用了“远程通知”,并添加了推送通知。静默通知不需要用户权限。
下面的委托方法应该在应用程序被唤醒时被调用。
// Handling silent remote notification
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
NSLog(AppDelegate.TAG + "application(_:didReceiveRemoteNotification:fetchCompletionHandler:)")
// Some work
completionHandler(.newData)
}
型
问题:
1.当我拖放.apns文件时,不会调用委托方法。我知道后台获取和后台处理不能在模拟器中测试,因为它们的调度取决于系统条件,这超出了模拟器的范围。所以静音通知也不可能在模拟器中测试?
1.根据documentation,通过用户强制退出,用户从应用程序切换器滑动应用程序是否被引用?即使在刷WhatsApp之后,只要有互联网连接,您仍然会收到收到传入消息的通知,对吗?
此外,如果您启用了远程通知后台模式,系统会在远程通知到达时启动您的应用(或将其从挂起状态唤醒)并将其置于后台状态。但是,如果用户强制退出应用,系统不会自动启动应用。
工作环境:Xcode 14.2,iOS模拟器16.x
1条答案
按热度按时间ddhy6vgd1#
目前我得到的答案是:
1.我无法通过将.apns文件放入模拟器来模拟后台通知。它应该可以通过APNS模拟器,如果你有一个硅Mac(如问题中链接)。
1.通过从应用切换器中滑动来强制退出应用程序后,我观察到,有时候,后台推送工作,有时候他们不工作(我已经发布了关于这种模棱两可的行为here)...但官方记录显示,这是行不通的,所以我们就这么做吧。最近,在iOS的最新版本(截至本文写作时为16.4)中,后台推送在用户从应用切换器中滑动应用后无法工作...所以这可能是一个bug,并在最新的更新中得到了解决。
如果有人有不同的观察,请告诉我。