Swift 3 - Firebase 推送通知,我该怎么做? [英] Swift 3 - Firebase Push Notification, How can I do?

查看:27
本文介绍了Swift 3 - Firebase 推送通知,我该怎么做?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我确实喜欢 Swift 2 中的以下内容.但它在 Swift 3 中不起作用.我该如何提供?如果有人解释这一点,那就太好了.

I do like below in Swift 2. But It's not working in Swift 3. How Can I provide this? If someone explain this It would be great.

didFinishLaunchingWithOptions

let notificationSettings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(notificationSettings)
application.registerForRemoteNotifications()

func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {
    if notificationSettings.types != .None {
        application.registerForRemoteNotifications()
    }
}

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {

    print("Meesage ID \(userInfo["gcm_message_id"]!)")
    print(userInfo)

}

我可以做简单的本地通知,但无法从 Firebase 远程推送通知.

I can do simple local notification but, I couldn't remote push notification from Firebase.

我试过了

UNUserNotificationCenter.currentNotificationCenter().delegate = self

UNUserNotificationCenter.currentNotificationCenter().requestAuthorizationWithOptions([.Alert, .Badge, .Sound]) { (success, error:NSError?) in

        if success {
            print("Notification access true!")
            application.registerForRemoteNotifications()
        }
        else {
            print(error?.localizedDescription)
        }

}

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {

    print("Meesage ID \(userInfo["gcm_message_id"]!)")
    print(userInfo)

}

还是不行.

推荐答案

AppDelegate 方法名称略有更改,并引入了 UserNotifications 框架.您必须在 iOS 10 及更高版本中将此框架用于通知,因为其他方法已被弃用.

The AppDelegate method names have changed a little and UserNotifications framework has been introduced. You must use this framework for notifications in iOS 10 and above as the other methods are being deprecated.

import UserNotifications

...

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    ...

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
            // Enable or disable features based on authorization.
        }

        application.registerForRemoteNotifications()

        return true
    }

    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> ()) {

        print("Message ID \(userInfo["gcm.message_id"]!)")
        print(userInfo)
    }

    ...
}

在 Xcode 8/Swift 中注册推送通知3.0?

这篇关于Swift 3 - Firebase 推送通知,我该怎么做?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆