gpt4 book ai didi

ios - 试验 Firebase - 推送通知

转载 作者:行者123 更新时间:2023-11-30 10:59:51 26 4
gpt4 key购买 nike

为了尝试使用 Firebase 推送通知,我遵循以下示例: https://github.com/firebase/quickstart-ios/blob/dc2cd2db6e82e5c475fa3f0efe75df8b54f04544/messaging/MessagingExampleSwift/AppDelegate.swift#L40-L55

我可以让它工作到一定程度。

这是我的相关代码:

......

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
......
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: {_, _ in })
application.registerForRemoteNotifications()
FirebaseApp.configure()
......

return true
}

......

func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
// Print message ID.
print(#function)
if let messageID = userInfo[gcmMessageIDKey] {
print("Message ID: \(messageID)")
}

// Print full message.
print(userInfo)

completionHandler()
}

......

当我尝试测试它时,函数 userNotificationCenter:didReceive:withCompletionHandler() 是唯一被调用的函数(在示例提供的函数列表中)。还应该注意的是,我可以在调试器控制台中看到这一点,但设备上没有任何反应。我想这就是它应该的方式(所以一切都很好),但这里有一个问题我想问任何可以回答的人。

如何使用completionHandler()?我想,因为它是一个参数,所以我可以以相当自由的方式使用它,但是当我在网上查找示例代码时,我只能看到它在参数列表中声明或按照示例中的情况调用我正在使用它,但我从未见过它的定义。

有什么我应该看的东西或者如何使用它的具体示例吗?

仅供引用,我使用的是 Xcode 版本 10.1、iOS 12.1 和 Swift 4.2。

最佳答案

正如 Apple documentation 中所述,该方法中的completionHandler是:

The block to execute when you have finished processing the user’s response. You must execute this block at some point after processing the user's response to let the system know that you are done. The block has no return value or parameters.

因此,您应该在处理完通知后调用完成处理程序。您不能以任何其他方式使用它。一旦您调用它,系统就会知道您已完成通知并可以执行任何所需的过程,例如将通知放入用户的通知中心。

关于ios - 试验 Firebase - 推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53512234/

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