iOS上的Firebase短信验证 - '令牌不匹配'

时间:2017-09-29 14:13:38

标签: swift xcode sms firebase-authentication token

尝试与某些外部用户对我的应用进行beta测试时,他们都无法使用电话号码短信验证正确进入应用。开发人员可以直接从Xcode构建时使用该应用程序,但通过链接安装的任何人都无法使用它。

每个尝试登录/注册的用户都会收到Token Mismatch的错误信息 - 没有其他信息。

我有一个有效的生产APNS证书,为什么这不起作用?

3 个答案:

答案 0 :(得分:10)

我采取的步骤来解决问题:

  1. 确保我同时拥有有效的developmentproduction APNS 证书已上传到Firebase仪表板的“项目”下 设置' > '云消息传递'
  2. dashboardcertificates

    1. 在Xcode中,在<my app>。权利文件中,确保 APS 环境值设置为&#39; development&#39;或者&#39;生产&#39;, 取决于您的测试情况。
    2. entitlements

      1. 最后(这是我错过的),检查你的内心 AppDelegate.swift和方法内部 didRegisterForRemoteNotificationsWithDeviceToken,更改值 从.sandbox.prod .unknown让应用 bundle根据您的配置文件确定要使用的令牌类型。
      2. enter image description here

答案 1 :(得分:2)

步骤1: 导入Firebase

2。 将以下内容添加到您的AppDelegate:-

override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let firebaseAuth = Auth.auth()
    firebaseAuth.setAPNSToken(deviceToken, type: AuthAPNSTokenType.unknown)

}

override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    let firebaseAuth = Auth.auth()
    if (firebaseAuth.canHandleNotification(userInfo)){
        print(userInfo)
        return
    }
}

至少这对我有用。

答案 2 :(得分:0)

就我而言,我在 type:FIRAuthAPNSTokenTypeSandbox 中有 AppDelegate.m

将其设置为 type:FIRAuthAPNSTokenTypeProd 解决了问题。