用于拨打电话的NSURL和iPhone SDK 3.0的问题

时间:2009-06-24 23:28:00

标签: ios objective-c iphone iphone-sdk-3.0

iPhone 3.0 SDK有一个新引入的问题,以及它如何处理自动拨打电话的NSURL方法。过去你可以调用一个方法(NSURL),传入一个带有URL前缀的字符串(tel://,sms等等),iPhone OS会将消息发送到设备,例如iTunes ,App Store,电话,短信,邮件,Safari等......代码如下:

[openURL:[NSURL URLWithString:@"tel://8005551212"]];  

当调用该方法时,将自动拨打电话。使用iPhone OS 3.0调用该方法时,应用程序弹出一个对话框,要求确认电话。这打破了几个现有应用程序以及我们刚刚推入App Store进行审核的应用程序。

有人能想到解决这个问题吗?我目前不知道该做什么,并试图决定在工作中处理这种新扳手的其他方法。

blogged关于此问题并建议人们联系Apple并让他们了解此问题。我还推荐一个朋友和我正在考虑的修复 - 这就是使用与位置感知应用相同的“授权”;一个应用程序知道它的位置感知并询问用户是否可以使用他们的位置。

同样,如果有人对此问题有解决方案(并且这是iPhone SDK的范围内,以免Apple拒绝),请告诉我们;我将非常感激。

更新:Julian Romero Nieto对错误进行了很好的描述,并引用了(更新的)Apple文档并显示了手头的问题。您可以阅读他在Oper Radar here上的帖子。

5 个答案:

答案 0 :(得分:2)

我相信这是一个安全功能 - 想象一个应用程序,每天凌晨3点拨打900号码,持续10分钟。如果将它与新的“应用程序内购买”API进行比较 - 它就差不多了。

位置API比较是一个不好的例子 - 获取用户位置是一个隐私问题,而不是财务问题。

答案 1 :(得分:1)

您无法解决此问题,因为这是预期的 - 您“修复”此问题所做的任何事情都会导致应用程序无法获得批准。

如果应用可以选择在未经用户同意的情况下拨打号码,则认为用户体验不佳。软件可能会拨打“高级”号码,这会使用户在没有意识到的情况下花费很多钱。

这是所有移动软件平台和操作系统的标准配置 - 如果它在操作系统3.0中发生了变化,那么这表明它一定是苹果认为可以解决的问题。不过,我认为移动运营商会向苹果公司施加压力,以便经常引入这一点,然后最终不得不向用户退款 - 但是已经支付了这笔钱给“高级”号码。

我不确定美国是否存在“溢价”数字,就像它们在欧洲一样,这可能是难以理解的原因。

答案 2 :(得分:0)

tel://的RFC表示不允许通过tel:方案自动拨号。

所以他们必须在RFC合规性和打破这几个应用程序之间做出选择。

我希望选择忽略RFC,至少允许应用程序在允许的情况下继续拨号。

答案 3 :(得分:0)

我怀疑苹果是否故意推动用户购买新iPhone,如果他们想要语音拨号 - 这个问题打破了所有第三方语音拨号应用程序,使它们不安全,基本上没用。

让我们继续向Apple施加压力,使其成为用户可配置的设置。

答案 4 :(得分:0)

也许您的意思是新推出的功能而不是问题?

我认为您不会让Apple删除确认弹出窗口,特别是如果它符合RFC标准。

Lemmy引用Joel (http://www.joelonsoftware.com/items/2009/06/10c.html)关于已损坏的应用

  

一个好的平台总是有   申请的机会   不只是填补空白。这些是   供应商的那种应用程序   不太可能考虑核心   功能,通常是因为它是垂直的    - 这不是每个人都要去做的事情   想要。机会恰到好处   Apple将永远添加一个   为牙医提供的iPhone功能。   零。

我不希望某些应用程序在未经我同意的情况下拨打电话,发送短信甚至连接到互联网(生活在一个未来仍有无限移动数据计划的国家)。

当客户抱怨账单上的未知电话时,操作员当然会头痛。