在 iOS 10.3 上尝试使用 tel:// 方案拨打 phone 号码时提示

Prompt when trying to dial a phone number using tel:// scheme on iOS 10.3

更新到 10.3 后,我的应用程序在使用 openURL: options: completionHandler: 方法按下应用程序中的呼叫按钮后不再自动拨打 phone 号码。

相反,每次都会出现提示以确认用户的意图。

根据 Apple 文档:

The tel URL scheme is used to launch the Phone app on iOS devices and initiate dialing of the specified phone number. When a user taps a telephone link in a webpage, iOS displays an alert asking if the user really wants to dial the phone number and initiates dialing if the user accepts. When a user opens a URL with the tel scheme in a native app, iOS does not display an alert and initiates dialing without further prompting the user. However, a native app can be configured to display its own alert.

据此,提示会显示网页,但不会显示在本机 iOS 应用程序中。

这可能是 10.3 中的错误吗?或者是否有我需要使用的新功能或新的 属性 包含在我不知道的 info.plist 中?

谢谢。

这在 10.3 发行说明中列为已知问题。

https://developer.apple.com/library/content/releasenotes/General/RN-iOSSDK-10.3/

openURL

When a third party application invokes openURL: on a tel://, facetime://, or facetime-audio:// URL, iOS displays a prompt and requires user confirmation before dialing.

它也列在 10.3 更新的 Security content 中,所以我假设这是一个新功能,将保留下来。

An issue existed in iOS allowing for calls without prompting. This issue was addressed by prompting a user to confirm call initiation.

这不是第一次了,Apple 开发者已经为 url 计划重新激活此警报?我记得他们进行了这种激活,甚至在其他几个较早的更新中也是如此,并且他们在下一个 OS 更新中回滚了。

在10.3.1的情况下,我看到一则新闻说美国有很多911电话被骗。 https://9to5mac.com/2017/03/06/911-ios-exploit/

在我看来,警报限制已被合并以阻止错误拨打 911。

我相信,Apple 不能经常对 API's/Schemes 强制执行这种任意更改,这在很大程度上影响了用户的体验。

在过去的 8 年里,我在商店里有一个快速拨号应用程序。 https://itunes.apple.com/us/app/speed-dial/id306569903?ls=1&mt=8# 在过去的几周里,很多用户都在抱怨这种新的快速拨号限制。

目前,我们必须等到 Apple 在下一次更新中修复此已知问题。因为,有 100 多个生产力应用程序依赖于 URL 方案而没有警报方案。