ios - swift4:从服务器发送通知时 Firebase 通知不起作用

标签 ios swift firebase firebase-cloud-messaging swift4

我正在使用 Swift4: 我想创建 firebase 推送通知,我将按照此视频 firebase push notification 中的步骤操作 这是应用程序委托(delegate)代码:

import UIKit
import IQKeyboardManagerSwift
import FBSDKLoginKit
import TwitterKit
import Firebase
import FirebaseMessaging
import FirebaseInstanceID
import UserNotifications

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?


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

    print("user tooooken: ", Common.getUserToken())
    FirebaseApp.configure()
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (success, error) in
        if(error == nil) {
            print("successful authentication")
        }
    }
    application.registerForRemoteNotifications()

    NotificationCenter.default.addObserver(self, selector: #selector(self.refreshToken(notification:)), name: NSNotification.Name.InstanceIDTokenRefresh, object: nil)


    UIApplication.shared.statusBarView?.backgroundColor = UIColor(red:255/255.0, green:51/255.0, blue:255/255.0, alpha: 1.0);
    UINavigationBar.appearance().tintColor = UIColor.white
    UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]

    TWTRTwitter.sharedInstance().start(withConsumerKey:"xxxxxxxxxxx", consumerSecret:"xxxxxxxxxxxxxxxxxx")

    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

func applicationWillResignActive(_ application: UIApplication) {
    FBSDKAppEvents.activateApp()
}

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}

func applicationDidEnterBackground(_ application: UIApplication) {
    Messaging.messaging().shouldEstablishDirectChannel = false
}

func applicationDidBecomeActive(_ application: UIApplication) {
    FBHandler()
}

///// Twitter authentication //////
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    if TWTRTwitter.sharedInstance().application(app, open: url, options: options) {
        return true
    }
    return true
}

@objc func refreshToken(notification: NSNotification) {
    let refreshToken = InstanceID.instanceID().token()!
    print(refreshToken)

    FBHandler()
}

func FBHandler() {
    Messaging.messaging().shouldEstablishDirectChannel = true
}

}

当我从 firebase 服务器推送通知时,它已成功传递到设备,但是当 php 服务器发送推送通知时,它不起作用,我是否忘记了任何步骤?

最佳答案

确保这些:

  1. 您已将设备的 Firebase FCM token 发送到您的服务器。

  2. 如果您的服务器向您发送了数据通知,那么它就是数据对象 应位于“通知”键中。

  3. 此外,当用户从设备注销时,您应该删除用户的 FCM 来自服务器的 token 。

关于ios - swift4:从服务器发送通知时 Firebase 通知不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50365403/

相关文章:

ios - 保存和加载 NSMutableArray - NSUserDefaults

android - 以钛金属百分比定义字体大小

objective-c - 将 Storyboard添加到现有项目

ios - 确定两次触摸之间的确切时间

ios - 如何为firebase编写同步查询调用?

ios - 今天 Widget 在 .compact 模式下,UITableview 行在页脚后面仍然可见

swift - NSURLSession 参数无法识别

ios - 需要按钮多次重复相同的功能

firebase - flutter firebase 使用 future 从数据库获取字符串

swift - firebase函数中的firebase函数