在 iOS 上通过默认信使向用户选择的收件人发送短信

Send SMS to user selected recipients via default messenger on iOS

Whosebug 上有多个线程,例如:How to programmatically send SMS on the iPhone? 讨论如何将 SMS 消息发送到指定的收件人列表。但我真的需要以某种方式让用户 select 收件人分享我的应用程序中的一些信息(理想情况下我还想显示除文本正文之外的图像),有没有办法做到这一点?我知道我可以用 Facebook SDK 做这样的事情,但在这里我想使用 SMS/default 信使。我正在使用 Objective C 进行开发。

如评论所述,MFMessageComposeViewController 包括一个链接到用户地址簿的内置联系人选择器。如果您已经知道收件人的地址,您可以自己设置 MFMessageComposeViewController。您可以(例如)使用 AddressBook 框架并自己提取数字,但这将涉及:

  1. 请求用户许可
  2. 为用户显示 select 号码的界面
  3. 将该信息提供给 MFMessageComposeViewController

除非你有令人信服的理由,否则我会避免这样做。

下面是一个将消息连同消息和附件一起发送给两个收件人的示例。

- (void)presentMessageViewController {

if ([MFMessageComposeViewController canSendText] &&
    [MFMessageComposeViewController canSendAttachments]) {

    MFMessageComposeViewController *messageViewController = [MFMessageComposeViewController new];
    messageViewController.messageComposeDelegate = self;

    messageViewController.recipients = @[@"867-5309",
                                         @"1-800-MIX-A-LOT"];
    messageViewController.body = @"Hey, Jenny and Sir Mix-A-Lot!";
    [messageViewController addAttachmentData:UIImagePNGRepresentation([UIImage imageNamed:@"Funny Cats"])
                              typeIdentifier:@"public.data"
                                    filename:@"image.png"];

    [self presentViewController:messageViewController
                       animated:YES
                     completion:^{
                         nil;
                     }];
    }
}

同样,除非您已经知道 收件人的地址,否则收件人属性 是可选的。用户将在 MFMessageComposeViewController 中自己输入该信息。