在iOS中集成FCM进行推送通知时是否使用了设备令牌?
我有以下几种情况 使用APN 用于接收本机iOS应用程序的远程通知。在使用它的同时,我们需要创建.p12证书,并且需要在注册推送通知时发送Appdelegate.m文件中生成的设备令牌。因此,我们遵循将设备ID发送到后端的方法,将通知发送到该特定设备 使用FCM时 我检查了FCM,还发现我们需要将.p12文件上传到他们的控制台。在这之前一切都很好。但说到设备令牌部分,我不清楚“设备令牌”的“Swizzling”过程。firebase是生成设备令牌还是需要设置在DidRegisterForRemotonification中生成的设备令牌在iOS中集成FCM进行推送通知时是否使用了设备令牌?,ios,firebase,swift3,push-notification,firebase-cloud-messaging,Ios,Firebase,Swift3,Push Notification,Firebase Cloud Messaging,我有以下几种情况 使用APN 用于接收本机iOS应用程序的远程通知。在使用它的同时,我们需要创建.p12证书,并且需要在注册推送通知时发送Appdelegate.m文件中生成的设备令牌。因此,我们遵循将设备ID发送到后端的方法,将通知发送到该特定设备 使用FCM时 我检查了FCM,还发现我们需要将.p12文件上传到他们的控制台。在这之前一切都很好。但说到设备令牌部分,我不清楚“设备令牌”的“Swizzling”过程。firebase是生成设备令牌还是需要设置在DidRegisterForRemo
import FirebaseMessaging
override func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
FIRApp.configure()
NSNotificationCenter.defaultCenter().addObserver(self,
selector: #selector(tokenRefreshNotification(_:)),
name: kFIRInstanceIDTokenRefreshNotification,
object: nil)
}
// NOTE: Need to use this when swizzling is disabled
public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: FIRInstanceIDAPNSTokenType.Sandbox)
}
func tokenRefreshNotification(notification: NSNotification) {
// NOTE: It can be nil here
let refreshedToken = FIRInstanceID.instanceID().token()
print("InstanceID token: \(refreshedToken)")
connectToFcm()
}
func connectToFcm() {
FIRMessaging.messaging().connectWithCompletion { (error) in
if (error != nil) {
print("Unable to connect with FCM. \(error)")
} else {
print("Connected to FCM.")
}
}
}
public func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
print(userInfo)
}
根据Firebase文档中的说明,它说明: 在以下情况下,注册令牌可能会更改:
didRegisterForRemotonificationswithDeviceToken
,以检索APNs令牌,然后调用setAPNSToken
。因为你已经在这么做了
文档中关于启用/禁用方法滑动的说明
详情如下:
FCM提供的方法swizzling简化了客户端代码。
但是,对于不喜欢使用它的开发人员,FCM允许您
通过添加
应用程序的Info.plist文件中的FirebaseAppDelegateProxyEnabledflag和
将其值设置为“否”(布尔值)
FCM swizzling会影响您处理默认注册令牌的方式,
以及如何处理下游消息回调。在适用的情况下,
本指南提供了使用和不使用方法的迁移示例
swizzling已启用
希望你明白 是的,instanceID是您的令牌,您的后端需要它向启用Firebase通知的特定设备发送通知。instanceID不是在Firebase中生成的,您可以通过
didRegisterForRemotonification
函数获取该设备的设备令牌。@PraveenKumar是的,通常您是对的,但是对于firebase通知,我们应该使用由firebase生成的instanceID。是的,您是对的。现在,这是您的设备令牌。@AnuragSharma instanceID是否持续刷新?如果是,如何处理这个问题,我们是否需要一个单独的API调用来发送刷新的令牌。