gpt4 book ai didi

ios - 应用未运行时处理 iOS 推送通知

转载 作者:行者123 更新时间:2023-12-04 08:34:49 36 4
gpt4 key购买 nike

我有一个使用 Firebase Cloud Messaging 从后端接收 PN 的应用程序。基本上,我要做的就是用 CoreData 存储一些 PN 的数据。我正在使用 application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)去做吧。我在前台和后台测试了该功能,使用 PN 和应用程序图标打开应用程序。一切正常。但问题是在这两种情况下:

  • 当应用程序被杀死时,PN 到达,用户点击推送通知。
  • 当应用程序被杀死时,PN 到达,用户点击应用程序图标。

  • 我有时看到, didReceiveRemoteNotifications被解雇。有时,事实并非如此。我读到在应用程序被终止时不会调用此方法,但我遇到了不同的行为。
    另外,我读到在终止状态下处理推送通知的方法是使用 VoIP 应用程序或使用 UNNotificationServiceExtension .我的应用程序不是 VoIP 应用程序……任何人都知道 UNNotificationServiceExtension能解决我的问题吗?
    这是后端发射的有效载荷:
    const message = {
    apns: {
    payload: {
    aps : {
    'content-available' : 1,
    alert: {
    title : "Game Request",
    body : "Bob wants to play poker",
    }
    },
    },
    },
    data: {
    shortText: 'test',
    chasisNumber: '23',
    alertType: 'some alert type',
    alertId: '1234',
    alertTypeId: '1234',
    userId: '1234',
    text: 'some text',
    title: 'some title',
    deleted: 'false',
    creationDate: '2011-11-02T02:50:12.208Z',
    receivedDate: '2011-11-02T02:50:12.208Z',
    actionType: 'some action type',
    ticketId: '1234',
    status: 'some status'
    },
    tokens: [androidToken, iosToken]
    };

    最佳答案

    首先,在 iOS 13 之前回答您的问题是可以通过 VoIP 处理推送。从 iOS13 开始,此方法不再可行。
    如果您的应用程序被终止,如果用户不点击通知,则无法处理推送通知。如果您收到 PN 并且用户通过手机的主屏幕打开应用程序,您将无法访问 PN 数据。

  • 如果应用程序被杀死,用户会收到 PN 并点击通知打开应用程序;您必须在方法 didFinishLaunchingWithOptions 中添加以下代码的AppDelegate处理 PN:
  • if let remoteUserInfo = launchOptions?[.remoteNotification] as? [AnyHashable: Any] {
    self.application(application, didReceiveRemoteNotification: remoteUserInfo)
    }

    关于ios - 应用未运行时处理 iOS 推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64844951/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com