13

我们的应用使用Firebase手机验证。在App Store审核已拒绝的应用程序,由于被要求推向:由于使用Firebase手机验证的App Store拒绝

准则4.5.4 - 设计 - 苹果站点和服务

我们注意到,您的应用程序需要推动才能正常运行的通知。

具体而言,我们注意到如果我们的设备上未启用推送通知设置,则在应用内输入我们的电话号码后,我们遇到了错误消息。

下一步

推送通知必须是可选的,并且必须获得在该应用内使用的用户的同意。

而且他们也已经连接描绘火力地堡错误截图“远程通知和背景提取需要被设置为应用程序[...]”

火力地堡文档指出的APN通知是绝对对于手机验证需要的功能:
https://firebase.google.com/docs/auth/ios/phone-auth

要使用电话号码的认证,您的应用程序必须能够从火力地堡收到的APN通知。当您在设备上首次使用其电话号码登录用户时,Firebase身份验证会向设备发送无声推送通知,以验证电话号码登录请求是否来自您的应用。 (出于这个原因,电话号码登录不能在模拟器上使用。)

但是App Store中不能按顺序要求推送通知审查指南状态的应用功能:https://developer.apple.com/app-store/review/guidelines/

4.5.4推送通知不能用于应用程序的运行,不应该用于广告,促销或直接营销目的,或发送敏感的个人或机密信息。

用户需要登录,他们可以使用该应用程序之前(应用程序是有关发送数字GIF邀请你的客人和共享照片),这就是为什么推送通知基本上都是必需的应用功能,如果登录方法是Firebase手机身份验证。

我们已经测试了很多应用程序,并且启用了推送通知(在真实设备上,无论是在分布式Ad Hoc构建的生产环境还是开发构建的沙盒环境中),身份验证都毫无问题。

想想吧,App Review团队是如何禁用推送通知的?通知中心设置不会停止实际推送,它只是不显示它们。 Setting is turned off 我们已经测试过这个设置,并且firebase手机验证码工作正常,推送仍然按预期进行。

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

+3

听起来好像您需要提供除firebase手机身份验证之外的其他身份验证方法,并向用户解释这些选项。 – Paulw11

+3

* firebaser here *我很抱歉听到这个问题。这显然不是我们希望你拥有的体验。这是我第一次听到这个问题。您可以[联系Firebase支持](https://firebase.google.com/support/contact/troubleshooting/),以便我们更好地了解您的应用如何使用电话号码身份验证以及与拒绝相关的方式? –

+2

@FrankvanPuffelen嗨,我也很惊讶,没有其他人有这样的拒绝,我可以找到。我星期五写了支持票,但我不希望在星期一之前得到答案。该应用程序以直接的方式使用手机身份验证,您下载应用程序,观看/跳过教程,您必须使用电话号码登录,这是禁用iPad推送通知的App Review团队无法继续操作的地方。他们引用的规则(关于APN必须是可选的)确实存在,所以它们似乎是正确的。 – Leetmorry

回答

5

UPD:Firebase 4.2.0已经推出,解决了问题。您需要将您的反向客户端ID添加到您的Info.plist中的URL模式中,并将其设置为com.googleusercontent.apps.123456-abcdefg99

为了找到这个 值,打开Goog​​leService-Info.plist中的配置文件,并查找 REVERSED_CLIENT_ID关键。


火力地堡支持已确认此问题,并已对这个问题给予回应:


谢谢你的详细信息LEET。这确实是一个奇怪的情况,我们的电话Auth工程师正在看一看。我会尽快回复你。

最佳,
杰夫



嗨LEET,

我们的工程师正在为这个长期固定在内部的工作,但在此期间,想与您会面,看看我们能否找出解决方法。

看起来Firebase手机验证/ Firebase用户界面确实存在一个错误。

+0

迁移回数字 - 一个月内将停用的服务不是解决方案。我在我的文章中找到了根本原因,但是你接受了你自己的答案,没有对问题有所了解。 – skensell

1

我接触火力地堡的支持和这里的摘录:

在各地的用户禁用推送通知关注的方面 - 禁用推送通知用户的应用程序通常不会阻止用户登录使用自己的手机数字与Firebase身份验证。我们的要求是,应用程序必须设置并启用推送通知,而不是用户。无论用户是否接受或拒绝您的应用程序的推送通知提示,电话身份验证都将继续工作,因为我们使用不需要用户采取任何操作的无声推送。

我进一步研究发现,即使用户明确禁用推送通知,静默推送通知的确会到达设备。要禁用静默推送通知,您需要转至设置 - >您的应用程序 - >后台刷新以禁用它。请参阅Is Silent Remote Notifications possible if user has disabled push for the app?

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

编辑

经过一番测试,看来当后台刷新禁用手机身份验证可以正常工作。不过,它适用于我,因为Firebase已经可以访问我的APNS设备令牌。我找不到将设备令牌与Firebase关联的方法 - 它们不提供API。很遗憾,这使得我们无法测试新用户在进行电话认证之前禁用后台刷新和远程通知的情况,我认为这可能是导致错误的原因。

EDIT 2

我可以证实,一个新的设备上全新安装我们的应用程序中,如果你禁用背景刷新,然后火力地堡电话验证将无法正常工作。一旦启用它,它将再次工作。

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

遗憾的是,除非Firebase发布不需要APN的新SDK,否则没有解决方法。

+2

请阅读原始问题的这一部分: “通知中心设置并不会停止实际推送,它只是不显示它们。 我们已经测试了这个设置,并且firebase手机认证工作正常,推动仍然按预期进行。“ 该错误发生在Firebase UI中,Firebase支持已确认并正在修复此问题。 – Leetmorry

+0

您问“App Review团队甚至是否禁用推送通知?”我告诉你他们禁用了防止静默推送通知到达的后台刷新。 – skensell

+0

当你说推送通知时,你应该明确你的意思是用户通知还是远程通知。 – skensell

8

Firebaser here。正如Leetmory提到的,我们已经发布了一个更新的Firebase Auth SDK 4.2.0,希望能够解决这些问题。

该问题是由于使用APN验证请求的Firebase身份验证SDK导致的 - 这是为了尽量减少短信垃圾邮件滥用或类似的风险。验证使用无提示APNs通知,因此不需要iOS 8及更高版本的明确用户同意。但是,如果APNs完全停用,这种情况仍然会失败,就像本审查案例一样。

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的版本!

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

有关完整步骤,请参阅完整手机验证码developer guide