由于Firebase手机验证而导致App Store拒绝

Lve*_*ode 15 app-store apple-push-notifications ios firebase firebase-analytics

我们的应用使用Firebase手机验证.由于需要推送,App Store审核已拒绝该应用:

准则4.5.4 - 设计 - Apple站点和服务

我们注意到您的应用需要推送通知才能运行.

具体来说,我们注意到如果我们的设备上未启用"推送通知"设置,则在应用程序中输入我们的电话号码后会收到错误消息.

下一步

推送通知必须是可选的,并且必须获得用户同意才能在应用中使用.

他们还附上了描述Firebase错误的屏幕截图"需要为应用程序设置远程通知和后台提取[...]"

Firebase文档指出,电话验证功能绝对需要APN通知:https:
//firebase.google.com/docs/auth/ios/phone-auth

要使用电话号码身份验证,您的应用必须能够从Firebase接收APN通知.当您首次在设备上使用电话号码登录用户时,Firebase身份验证会向设备发送静音推送通知,以验证电话号码登录请求是否来自您的应用.(因此,电话号码登录无法在模拟器上使用.)

但是,App Store审核指南规定,为了使应用程序正常运行,不得要求推送通知:https://developer.apple.com/app-store/review/guidelines/

4.5.4应用程序无需推送通知即可运行,不得用于广告,促销或直接营销目的,也不得用于发送敏感的个人或机密信息.

用户需要在他们可以使用该应用程序之前登录(该应用程序是关于向您的客人发送数字GIF邀请并共享照片),这就是为什么推送通知基本上是应用程序运行所必需的,如果登录方法是Firebase手机AUTH.

我们已经对应用程序进行了大量测试,并且在启用推送通知时,身份验证可以顺利运行(在真实设备上,在分发Ad Hoc构建中使用生产环境和使用沙箱环境进行开发构建).

想想看,App Review团队甚至如何禁用推送通知?通知中心设置不会停止实际推送,它只是不显示它们. 设置已关闭 我们已经通过此设置进行了测试,并且firebase phone auth工作正常,推送仍然按预期进行.

我对这个问题感到非常惊讶,因为Firebase是一个巨大的服务提供商.有没有人遇到过这个问题?是否有计划删除APN对电话验证的要求?是否可能有其他方式使用Firebase手机auth而不推?

Ian*_*ber 10

Firebaser在这里.我们已经发布了Leetmory提到的更新的Firebase Auth SDK 4.2.0,它有望解决这些问题.

这个问题是由Firebase Auth SDK使用APN验证请求这一事实造成的 - 这是为了尽量减少短信滥用垃圾邮件或类似垃圾邮件的风险.验证使用静默APNs通知,因此不需要iOS 8及更高版本的明确用户同意.但是,如果完全禁用APN,这仍然会失败,就像在此审查案例中一样.

4.2.0版本引入了在SFSafariViewController(或旧版iOS的webview)中使用reCAPTCHA提示的工具,以防止在APN不可用时滥用.我们不希望这种情况发生得太多,但它解释了这里遇到的异常状态.它还支持在模拟器上测试Firebase Phone Auth!

您会注意到uiDelegateverifyPhoneNumber方法有一个新参数.在大多数情况下,您不需要使用它,但它是后备验证的一部分.

您需要做的是,如果您还没有,则将REVERSED_CLIENT_ID(从GoogleService-Info.plist)添加为自定义URL方案.这将允许reCAPTCHA视图将验证返回给您的应用.

在当前版本中有一些需要注意的问题:

  1. 在回调中verifyPhoneNumber你需要重新发送到主线程,使用DispatchQueue.main.async {}- 这将在下一版本的Firebase Auth中修复!

除此之外,事情应该正常工作!我们绝对建议尽可能支持静音推送以确保最佳用户体验.

如需全面了解,请参阅完整的Phone Auth 开发人员指南.


Lve*_*ode 6

UPD:Firebase 4.2.0已推出,解决了这个问题.您需要添加一个类似于以下内容的reverse-client-id:com.googleusercontent.apps.123456-abcdefg99对Info.plist中的URL方案进行设置.

要查找此值,请打开Goog​​leService-Info.plist配置文件,然后查找REVERSED_CLIENT_ID项.


Firebase支持已确认此错误,并已对此问题做出回应:

对我来说
感谢Leet的详细信息.这确实是一个奇怪的情况,我们的Phone Auth工程师正在看一看.我得到答案后立即回复你.

最好,
杰夫


对我来说,
Leet,

我们的工程师正在内部进行长期解决方案,但与此同时,我想与您见面,看看我们是否能找到解决方法.

看起来Firebase手机身份验证/ Firebase用户界面确实存在错误.