1

iPhone 3.0 SDK 有一个新引入的问题,以及它如何处理用于自动拨打电话的 NSURL 方法。过去你可以调用一个方法(NSURL),传入一个带有 URL 前缀(tel://、sms 等)的字符串,然后 iPhone 操作系统会将消息发送到设备,例如 iTunes , App Store, Phone, SMS, Mail, Safari, etc... 代码是这样的:

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

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

谁能想到解决这个问题?我目前不知道该做什么,并试图决定用什么其他方法来处理这把新扳手。

在博客上对此进行了讨论,并建议人们联系 Apple 并让他们意识到这个问题。我还推荐了一个我和朋友正在考虑的修复方法——那就是使用与位置感知应用程序相同的“授权”;应用程序知道它的位置感知并询问用户是否可以使用他们的位置。

同样,如果有人对此问题有解决方案(并且在 iPhone SDK 的范围内,不会被 Apple 拒绝),请告诉我;我将不胜感激。

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

4

5 回答 5

2

我相信这是作为一项安全功能包含在内的——想象一个应用程序在每天凌晨 3 点拨打 900 号码 10 分钟。如果您将其与新的“应用内购买”API 进行比较 - 大致相同。

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

于 2009-06-24T23:36:46.100 回答
1

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

当应用程序可以在未经用户同意的情况下选择拨打号码时,用户体验被认为不好。软件可能会拨打“高级”号码,这会在用户没有意识到的情况下花费大量金钱。

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

我不确定美国是否像欧洲一样存在“优质”数字,这也许是难以理解的原因。

于 2009-06-25T08:09:15.347 回答
0

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

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

于 2009-07-24T02:52:00.693 回答
0

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

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

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

于 2009-06-30T21:41:29.753 回答
0

也许您的意思是新引入的功能而不是问题?

我认为您不会让 Apple 删除确认弹出窗口,尤其是在符合 RFC 的情况下。

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

一个好的平台总是为那些不仅仅是填补空白的应用程序提供机会。这些是供应商不太可能考虑核心功能的应用程序,通常是因为它是垂直的——这不是每个人都想要的东西。苹果在 iPhone 上为牙医添加一项功能的可能性几乎为零。零。

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

当客户抱怨账单上的未知电话时,运营商当然很头疼。

于 2009-07-24T03:25:04.083 回答