繁体   English   中英

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

[英]App Store rejection due to Firebase phone auth

我们的应用使用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而不推?

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!

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

您需要做的是将REVERSED_CLIENT_ID (来自GoogleService-Info.plist )添加为自定义URL方案。 这将允许reCAPTCHA视图将验证返回给您的应用。

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

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

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

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

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用户界面确实存在错误。

我联系了Firebase支持,这是一个摘录:

关于用户禁用推送通知的问题 - 用户禁用应用推送通知通常不会阻止用户使用Firebase身份验证使用自己的电话号码登录。 我们的要求是应用程序必须设置并启用推送通知,而不是用户。 无论用户是否接受或拒绝您的应用程序的推送通知提示,手机auth将继续工作,因为我们使用不需要用户执行任何操作的静默推送。

我进一步研究并发现即使用户明确禁用推送通知,静音推送通知确实会到达设备。 要禁用静默推送通知,您需要转到设置 - >您的应用程序 - >后台刷新以禁用它。 如果用户已禁用推送应用程序,请参阅“无声远程通知”吗?

因此,您可以告诉App Store Review团队,您的登录仅在启用后台刷新时才有效。 我不相信这违反了他们的条款。

编辑

经过一些测试后,当禁用后台刷新时,手机身份验证似乎可以正常工作。 但是,它适用于我,因为Firebase已经可以访问我的APNS设备令牌。 我发现无法将我的设备令牌与Firebase取消关联 - 它们没有提供API。 遗憾的是,这使得无法测试新用户在执行电话验证之前禁用后台刷新和远程通知的情况,我认为这可能是导致错误的原因。

编辑2

我可以确认,在全新安装我们的应用程序的新设备上,如果您禁用后台刷新,则Firebase Phone Auth将无法运行。 一旦启用它,它将再次工作。

原因是SDK可能会调用[[UIApplication sharedApplication] registerForRemoteNotifications] ,如果用户手动禁用后台刷新和通知设置,系统将忽略该值。

不幸的是,在Firebase发布不需要APN的新SDK之前,没有解决方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM