当实现锁定屏幕实时活动小部件调试的目的,我有一个按钮,运行startLiveActivity()
功能,应用程序运行正常小部件似乎完全运作。
然而,我需要这个活动小部件出现时,应用程序收到一个远程推送通知时,应用程序被杀死或在后台,但它只出现时,应用程序是在前台,这并没有真正帮助的情况下在这里。
class LiveActivityHelper: ObservableObject {
static var shared = LiveActivityHelper()
@Published var activity: Activity<Attributes>? = nil
func startLiveActivity() {
let state = Attributes.ContentState()
activity = try? Activity<Attributes>.request(attributes: Attributes(), contentState: state, pushType: nil)
}
字符串
我尝试从appDelegate的didReceiveRemoteNotification运行startLiveActivity()
函数:
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse) async {
LiveActivityHelper.shared.startLiveActivity()
}
型
从通知扩展中,我有:
class NotificationService: UNNotificationServiceExtension, UNUserNotificationCenterDelegate {
var contentHandler: ((UNNotificationContent) -> Void)?
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
...
LiveActivityHelper.shared.startLiveActivity()
型
所有这些方法都会导致相同的结果,即只有在打开应用程序时才会出现小部件。
Apple's documentation包括从远程通知更新小部件,但不包括如何使用该方法启动它。
2条答案
按热度按时间js4nwp541#
Live Activity只能在应用处于前台时启动,因为其目的是根据文档跟踪用户启动的功能。
发送您的推送通知,让您的用户打开您的应用,然后启动Activity。您所需的流被明确声明为不受支持。
b4qexyjb2#
使用可操作的通知类型可以帮助您引导用户点击并按住它来添加:
字符串
对于远程推送通知,您需要为此准备有效的有效负载。有关Apple documentation的可操作通知的更多详细信息。