当尝试与一些外部用户一起测试我的应用程序时,他们都无法使用电话号码短信验证正确进入应用程序。直接从 Xcode 构建时,开发人员都可以使用该应用程序,但通过链接安装的任何人都无法使用它。
每个尝试登录/注册的用户都会收到
Token Mismatch
的错误读数 - 没有其他信息。
我有有效的生产 APNS 证书,为什么这不起作用?
development
和 production
APNS
证书已上传到 Firebase 仪表板的“项目”下
设置'>'云消息'<my app>
.entitlements 文件中,确保 APS
Environment 值设置为“开发”或“生产”,
根据您的测试情况。AppDelegate.swift
以及方法内部
didRegisterForRemoteNotificationsWithDeviceToken
,更改值
从 .sandbox
到 .prod
、或 到 .unknown
让应用程序
捆绑包根据您的配置文件确定要使用的令牌类型。第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
}
}
至少这对我有用。
就我而言,我有
type:FIRAuthAPNSTokenTypeSandbox
于 AppDelegate.m
将其设置为
type:FIRAuthAPNSTokenTypeProd
解决了问题。
在我的例子中,将 isSandbox:token.type == FIRAuthAPNSTokenTypeSandbox 更改为 FIRPhoneAuthProvider Pod 中的 isSandbox:token.type == FIRAuthAPNSTokenTypeProd