如何以编程方式在iPhone上发送短信?
有没有人知道是否有可能以及如何以编程方式从iPhone
发送短信到官方的SDK / Cocoa Touch?
限制
如果您可以在iPhone上的程序中发送短信,则可以编写在后台发送垃圾邮件的游戏。 我确定你真的想要从你的朋友那里得到垃圾邮件,“试试这个新游戏吧!它会欺骗我的boxxers,你的也会成为!roxxersboxxers.com !!!!如果你现在注册,你会得到3,200RB点!”
Apple对自动(甚至部分自动)的SMS和拨号操作有限制。 (想象一下,如果游戏改为在一天的特定时间拨打911)
您最好的选择是在互联网上设置一个中间服务器,使用在线短信发送服务,并在需要完全自动化时通过该路线发送短信。 (也就是说,您的iPhone上的程序会向您的服务器发送UDP数据包,从而发送真正的SMS)
iOS 4更新
但是,iOS 4现在提供了一个可以导入到应用程序中的视图控制器。 您预填充SMS字段,然后用户可以启动控制器内的SMS发送。 与使用“sms:...”网址格式不同,这可以让您的应用程序保持打开状态,并允许您填充“to”和“body”字段。 你甚至可以指定多个收件人。
这可以防止应用程序在用户没有明确知道的情况下发送自动SMS。 您仍然无法从iPhone本身发送完全自动化的短信,这需要用户进行一些互动。 但这至少可以让你填充所有内容,并避免关闭应用程序。
MFMessageComposeViewController类有很好的文档记录,教程展示了它的实现是多么容易。
iOS 5更新
iOS 5包括用于iPod touch和iPad设备的消息传递功能,所以虽然我还没有自己测试过,但所有iOS设备都可以通过MFMessageComposeViewController发送短信。 如果是这种情况,那么Apple正在运行一个SMS服务器,该服务器代表没有蜂窝调制解调器的设备发送消息。
iOS 6更新
这个班没有变化。
iOS 7更新
您现在可以检查您正在使用的邮件媒介是否接受主题或附件,以及它会接受哪种附件。 您可以编辑主题并将附件添加到媒体允许的消息中。
iOS 8更新
这个班没有变化。
iOS 9更新
这个班没有变化。
iOS 10更新
这个班没有变化。
iOS 11更新
这个班没有重大变化
对这个类的限制
请记住,这不适用于没有iOS 4的手机,它不适用于iPod touch或iPad,除了可能在iOS 5下。您必须在使用此设备之前检测设备和iOS限制控制器或将您的应用限制到最近升级的3G,3GS和iPhone 4的风险。
但是,发送短信的中间服务器将允许任何和所有这些iOS设备发送短信,只要它们具有互联网访问权限,因此它可能仍然是许多应用程序的更好解决方案。 或者,同时使用这两种设备,并在设备不支持时才回退到在线SMS服务。
这是一个教程,它完全符合您的需求: MFMessageComposeViewController
。
http://blog.mugunthkumar.com/coding/iphone-tutorial-how-to-send-in-app-sms/
主要有:
MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init] autorelease];
if([MFMessageComposeViewController canSendText])
{
controller.body = @"SMS message here";
controller.recipients = [NSArray arrayWithObjects:@"1(234)567-8910", nil];
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:YES];
}
并链接到文档。
https://developer.apple.com/documentation/messageui/mfmessagecomposeviewcontroller
#import <MessageUI/MessageUI.h>
MFMessageComposeViewControllerDelegate
& UINavigationControllerDelegate
IBAction
方法中声明MFMessageComposeViewController
实例, MFMessageComposeViewController
声明messageInstance
[MFMessageComposeViewController canSendText]
发送文本,它将返回Yes / No 在if
条件下做这些:
首先为你的messageInstance
设置正文:
messageInstance.body = @"Hello from Shah";
然后确定邮件的收件人为:
messageInstance.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321", nil];
将一个委托设置为messageInstance,如下所示:
messageInstance.messageComposeDelegate = self;
在最后一行中做到这一点:
[self presentModalViewController:messageInstance animated:YES];