我希望firebase在用户收到新消息时发送推送通知,它以前也能工作,但由于FCM令牌的一些错误没有保存到新用户,我不得不更改一些代码。然而,现在它将正确的FCM代币保存给已经注册的新用户。
然而,当用户现在收到消息时,不会显示任何通知。。。我检查了firebase函数的日志,它说消息传递成功(因此我认为这是我代码中的一个错误)。
这是我在AppDelegate中获取用户FCM令牌的方式:
func application(_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
InstanceID.instanceID().instanceID { (result, error) in
if let error = error {
print("Error fetching remote instange ID: (error)")
} else if let result = result {
print("Remote instance ID token: (result.token)")
self.tokenOfUser = result.token
}
}
}
以下是用户注册时在SignUpViewController中检索令牌的方式:
var deviceToken : String?
var delegate = UIApplication.shared.delegate as! AppDelegate
self.deviceToken = delegate.tokenOfUser
//and in saving the user profile i add this:
["fcmToken": deviceToken]
这是我在FeedViewController中的通知代码
这是用户注册后访问的第一个视图控制器。
override func viewDidLoad() {
super.viewDidLoad()
registerForRemoteNotifications()
}
func registerForRemoteNotifications() {
Messaging.messaging().delegate = self
if #available(iOS 10.0, *) {
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge,
.sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: {_, _ in })
} else {
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge,
.sound], categories: nil)
UIApplication.shared.registerUserNotificationSettings(settings)
}
UIApplication.shared.registerForRemoteNotifications()
}
func messaging(_ messaging: Messaging, didReceiveRegistrationToken
fcmToken: String) {
print("Firebase registration token: (fcmToken)")
//UserDefaults.standard.set(fcmToken, forKey: "fcmToken")
}
我知道这些功能没有错,因为它曾经完美地传递通知(所以这些功能以前也起过作用)
我希望云功能向我的设备发送推送通知(借助存储在我的数据库中的FCM令牌)。
发现问题。我已将FirebaseAppDelegateProxyEnabled设置为NO。
我将FirebaseAppDelegateProxyEnabled
更改为YES,现在它工作正常!