簡體   English   中英

通過Firebase的iOS推送通知不起作用

[英]iOS push notification via Firebase not working

您好,我正在制作一個iPhone應用程序,在其中我通過Google的Firebase發送推送通知。 我正在使用Swift和Xcode進行編程。 當我打開應用程序時,系統會要求我允許推送通知,但是從Firebase控制台發送推送通知時卻沒有收到任何通知。 我想知道您是否可以幫助我。 我正在使用Ad Hoc導出將.isa轉移到我朋友的iPhone上,並以此方式進行測試。 我完全按照Firebase教程進行操作-添加.plist,可可豆莢,並在項目設置中上傳了證書。 我有一個付費的Apple開發人員帳戶。

import UIKit
import CoreData
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 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_message_id"]!)")
    print("%@", userInfo)

   }
}

您還需要做幾件事。 當您registerForRemoteNotifications ForRemoteNotifications時,您會收到需要提供給Firebase的APNS令牌。 這是在application didRegisterForRemoteNotificationsWithDeviceToken完成的。

import UIKit
import CoreData
import Firebase
import FirebaseMessaging

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    override init() {

        super.init()

        FIRApp.configure()
    }

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        application.registerForRemoteNotifications()
        application.registerUserNotificationSettings(
            UIUserNotificationSettings(
                forTypes: [.Alert, .Badge, .Sound],
                categories: nil
            )
        )

        NSNotificationCenter.defaultCenter().addObserver(self,
            selector: #selector(tokenRefreshNotification),
            name: kFIRInstanceIDTokenRefreshNotification,
            object: nil
        )

        return true
    }

    func applicationDidEnterBackground(application: UIApplication) {

        FIRMessaging.messaging().disconnect()
    }

    func applicationDidBecomeActive(application: UIApplication) {

        FIRMessaging.messaging().connectWithCompletion { (error) in

            switch error {
            case .Some:
                print("Unable to connect with FCM. \(error)")
            case .None:
                print("Connected to FCM.")
            }
        }
    }

    func applicationWillResignActive(application: UIApplication) {}

    func applicationWillEnterForeground(application: UIApplication) {}

    func applicationWillTerminate(application: UIApplication) {}

    func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {

        FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: .Sandbox)
    }

    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
                     fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {

        print("MessageID : \(userInfo["gcm.message_id"]!)")
        print("%@", userInfo)
    }

    func tokenRefreshNotification(notification: NSNotification) {

        if let refreshedToken = FIRInstanceID.instanceID().token() {
            print("Instance ID token: \(refreshedToken)")
        }

        applicationDidBecomeActive(UIApplication.sharedApplication())
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM