iOS 模拟器中的静默通知

问题描述 投票:0回答:1

我一直在研究iOS中的后台执行。其中一种方法是无声通知。

静默通知(又名后台推送)可用于将应用程序从挂起状态唤醒并更新内容。从 Xcode 11.4 开始,可以模拟常规用户通知,如此处所述。然后,从 Xcode 14 开始,那些拥有 Apple Silicon Mac 笔记本电脑的用户将能够从 APNS 本身向模拟器发送通知……太棒了。

但是这篇文章是关于无声通知的。

.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) }
问题:

    当我拖放 .apns 文件时,不会调用委托方法。我知道后台获取和后台处理无法在模拟器中进行测试,因为它们的调度取决于系统条件,而这超出了模拟器的范围。那么静默通知也无法在模拟器中测试吗?
  1. 根据
  2. 文档,通过用户强制退出,是否会引用用户从应用程序切换器中滑动应用程序?即使刷完 WhatsApp 后,只要有互联网连接,您仍然会收到传入消息的通知,对吗?
此外,如果您启用了远程通知后台模式,系统会启动您的应用程序(或将其从挂起状态唤醒),并在远程通知到达时将其置于后台状态。但是,如果用户强制退出,系统不会自动启动您的应用程序。

环境:Xcode 14.2、iOS 模拟器 16.x

ios swift push-notification ios-simulator background-process
1个回答
0
投票
到目前为止我得到的答案:

    我无法通过将 .apns 文件放入模拟器来模拟推送后台通知。如果您有硅 Mac(如问题中所链接),应该可以通过 APNS 进入模拟器。
  1. 通过从应用程序切换器中滑动应用程序来强制退出应用程序后,我观察到有时后台推送会起作用,有时则不会(我已经发布了关于这种模棱两可的行为
  2. here)...但作为官方记录,它不应该工作,所以让我们继续吧。最近,在最新版本的 iOS(撰写本文时为 16.4)中,用户从应用程序切换器中滑动应用程序后,后台推送无法正常工作...所以这可能是一个错误,并在最新更新中得到了解决。
如果有人有不同的观察结果,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.