【发布时间】:2016-10-06 16:05:48
【问题描述】:
最近在 Google I/O 活动上,Google 对 Firebase 进行了翻新并添加了许多新功能,并对其余功能进行了润色。我一直在尝试通过 Firebase 将 iOS 推送通知通过最基本的级别实现到我的应用程序中,所以我创建了一个非常简单的应用程序,除了接收远程推送通知之外什么都不做。
在 Firebase 中,我上传了我的证书,在 Xcode 中我的配置文件已添加到目标和项目中,在 Firebase 中我上传了正确的证书。下面是包含在我的AppDelegate.swift 文件中的代码,但因为我的ViewController.swift 是“空的”,所以我没有包含它。
虽然没有崩溃或运行时错误,但当我加载应用程序时,我会接受通知。然后,我退出应用程序并关闭我的设备。在 Firebase 中,我将通知发送到正确的应用程序。几分钟后,在 Firebase 中显示通知“已完成”。
但是,我从未在设备上收到通知。因此,总而言之,我需要一个解决方案来向 Firebase 发送此 deviceToken,然后使用“Firebase Notifications”发送推送通知消息。
对我的代码或一般情况的任何帮助将不胜感激,我希望这对未来的观众有所帮助。谢谢!我在AppDelegate.swift 中的代码:
import UIKit
import Firebase
import FirebaseMessaging
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
FIRApp.configure()
let notificationTypes : UIUserNotificationType = [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound]
let notificationSettings = UIUserNotificationSettings(forTypes: notificationTypes, categories: nil)
application.registerForRemoteNotifications()
application.registerUserNotificationSettings(notificationSettings)
return true
}
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
print("Device Token: \(deviceToken)")
}
func applicationWillResignActive(application: UIApplication) {
}
func applicationDidEnterBackground(application: UIApplication) {
}
func applicationWillEnterForeground(application: UIApplication) {
}
func applicationDidBecomeActive(application: UIApplication) {
}
func applicationWillTerminate(application: UIApplication) {
}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
print("MessageID : \(userInfo["gcm.messgae_id"]!)") // or gcm_etc...
print(userInfo)
}
}
【问题讨论】:
-
"关闭我的设备。" Err,如果设备关闭,如何接收通知?您的意思是重新打开设备后没有收到通知吗?这是预期的行为。
-
所以,在我的 iPhone 上,我第一次打开了应用程序。我接受启用通知弹出窗口。然后我退出应用程序并将其关闭。我所期待的是,当通知通过时,通知会出现在您的锁定屏幕上,然后点亮锁定屏幕,但没有任何反应。
-
关机没有锁屏,关机怎么会有?如果你把它关掉就没有电了。所以当你一直说关掉它时,我不明白你在说什么。到底关掉什么?
-
无论如何,除此之外,让我们假设设备已打开并且您仍然没有收到推送。您的代码没有在任何地方获得推送令牌。因此,您如何向 firebase 提供推送令牌?
-
这就是我有点困惑的地方。我认为不需要设备令牌,并且 firebase 会将通知发送给拥有该应用程序的每个人。当我说“关闭”时,我并不是指完全关闭电源,而是您可以向左滑动并输入密码。谢谢。
标签: ios push-notification firebase