如何以编程方式在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


  • 您必须将MessageUI.framework添加到您的Xcode项目中
  • 在头文件中包含#import <MessageUI/MessageUI.h>
  • 将这些代表添加到头文件MFMessageComposeViewControllerDelegateUINavigationControllerDelegate
  • 在您的IBAction方法中声明MFMessageComposeViewController实例, MFMessageComposeViewController声明messageInstance
  • 要检查您的设备是否可以在if条件中使用[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];
    
  • 链接地址: http://www.djcxy.com/p/33043.html

    上一篇: How to programmatically send SMS on the iPhone?

    下一篇: Got an error while implementing express session