0

我看过一个名为“Glympse”的应用程序。在此应用程序中,无需用户交互即可发送短信,这对于 iPhone 来说是不可能的。我在设备日志中显示“Glympse”应用程序调用 mfmessagecontroller。

Jul 10 16:24:13 unknown Glympse[3004] <Warning>: GlympseAppDelegate::sendViaSMSWithMessage:toRecipient:withDelegate:
Jul 10 16:24:13 unknown Glympse[3004] <Warning>: 0
Jul 10 16:24:13 unknown Glympse[3004] <Warning>: presentModalViewController
Jul 10 16:24:14 unknown Glympse[3004] <Warning>: messageComposeViewController:didFinishWithResult:
Jul 10 16:24:14 unknown CommCenter[57] <Notice>: queuing sms message with id 584
Jul 10 16:24:14 unknown SpringBoard[52] <Error>: mms: queued messageId 584

在我的应用程序中,我也需要它,所以我如何实现它?

提前致谢。

4

4 回答 4

8

MFMessageComposerViewController没有用户交互就无法发送。

您必须采用 SMS 网关并实现自己的 SMS 发送方式,这不仅仅是可能的。就像您必须创建 Web 服务并接受来自 iPhone 的参数(如电话号码和消息),然后使用 SMS 网关发送 SMS。

希望这可以帮助。

于 2012-07-10T10:21:05.593 回答
2

Glympse 不发送 SMS,它向其服务器发起 Web 请求。服务器有一个 SMS 引擎,它根据请求中的参数发送 SMS。否则无法实现此功能。

于 2012-07-10T10:25:04.077 回答
1

更新:以下答案仅适用于 iOS 5.1 及更早版本。看起来 Apple 已经阻止了这种行为在 iOS 6 中的工作,实际上 Glympse 已经恢复到他们早期的策略,即通过用户交互发送文本。

使用 Glympse 确认了 ios 在问题中描述的行为。尽管 Glympse 在无法直接从设备发送文本时确实使用自己的服务器来生成 SMS 消息,但当功能存在时,它将直接从设备发送文本(使用 iMessage 或 SMS)。您可以通过发送请求然后查看生成的文本消息显示在您的消息历史记录中来验证这一点。

尽管MFMessageComposeViewController看起来需要用户交互,但 Glympse 留下的日志消息非常强烈地表明他们正在使用它并抑制 UI。我进行了实验,发现做一些行为相同的事情并不太难:我只是替换了 MFMessageComposeViewController 的视图(以避免显示 UI),然后在调用之后presentViewController我设置了一个计时器事件以在控制器启动后触发和运行。计时器事件向send:控制器发送一条消息,该消息模拟用户单击“发送”按钮。

我无法回答的是这是否符合 iOS 开发者程序许可协议的条款——它可能与“以 Apple 规定的方式使用记录的 API”(3.3.1)或一般的“不干涉苹果试图向用户提供警告”(3.3.14)。Glympse 正在利用这种行为来造福于用户——它非常明显地改善了用户体验并避免在用户不知情/同意的情况下发送消息。我也想利用这种行为。但你也可以看到,这种行为可能被不正当的应用程序用来冒充用户、发送垃圾邮件等。如果这成为常见做法,Apple 很可能会开始寻找这种行为并拒绝使用它的应用程序(甚至 Glympse 都必须拉出行为)。

于 2012-09-18T19:06:31.417 回答
0

我发现这里存在这样做的方法:https://github.com/0xced/Stealth-Messenger

但是您可以让开发人员清楚地说:

不使用!这些东西仅用于教育目的,根本不适合 App Store。

在底部。但仅出于“教育目的”,您可以检查一下。

于 2015-05-25T13:00:49.693 回答