带有正文内容的iPhone短信网址计划?

时间:2012-05-08 02:08:59

标签: iphone objective-c xcode sms

我希望预先填写短信主体,内容为“smsto:555-555-5555:Hello World”

我已经完成了我的研究,每个人都说它无法完成,但我现在手机上有一个QR阅读器,可以使用“短信:555-555-5555:Hello world”并预先填写正确的内容扫描的电话号码。

所以我的问题是。我该怎么做呢?很明显,提供的URL方案不处理正文。还有哪些其他方法可以预先填充身体?可以使用QuickMark Reader清楚地完成它。

2 个答案:

答案 0 :(得分:0)

您可以使用modalViewController进行短信填充文本正文。

  1. 将MessageUI框架添加到您的项目中。
  2. 将viewController设置为MFMessageComposeDelegate
  3. 创建模态视图并显示它:

    -(void) showMessageComposerWithText:(NSString*)messageText telNumber:(NSString*)telNumber composeDelegate:(id)delegate
    {
        MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
    
        if([MFMessageComposeViewController canSendText]){   
            controller.body = messageText;
            controller.recipients = [NSArray arrayWithObject:telNumber];
            controller.messageComposeDelegate = delegate;
    
            [delegate presentModalViewController:controller animated:YES];
        }
    }
    

答案 1 :(得分:0)

根据Apple Documentation,您无法使用预定义的消息启动消息应用。

您可以做的是自己实施处理并解析URL,如下所示:

NSURL *url = /* the url you get from the web (in webview delegate) or after QR Code scan */;

if ([url.scheme isEqualToString:@"sms"]) // is it a sms ?
{
    if([MFMessageComposeViewController canSendText]) // can I send text message ?
    {   
        NSArray *parts = [url.absoluteString componentsSeparatedByString:@":"];
        NSString *messageText = parts.count == 3 ? [parts objectAtIndex:2] : @"";
        NSString *telNumber = parts.count >= 2 ? [parts objectAtIndex:1] : @"";
        MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
        controller.body = messageText;
        controller.recipients = [NSArray arrayWithObject:telNumber];
        controller.messageComposeDelegate = self;

        [self presentViewController:controller animated:YES completion:nil];
        [controller release];
    }
}

瞧!