【发布时间】:2010-09-01 10:50:39
【问题描述】:
我在 iphone 中创建了一个音乐问候应用程序。我希望当用户在文本字段中输入他的手机号码并单击发送按钮时,应该从另一个视图中获取数据并将短信发送到用户的手机号码。
请任何人帮助我解决这个问题
【问题讨论】:
标签: iphone objective-c
我在 iphone 中创建了一个音乐问候应用程序。我希望当用户在文本字段中输入他的手机号码并单击发送按钮时,应该从另一个视图中获取数据并将短信发送到用户的手机号码。
请任何人帮助我解决这个问题
【问题讨论】:
标签: iphone objective-c
Apple 仅支持通过他们提供的 UI 发送短信。为此,首先检查您是否可以发送短信。使用 NSClassFromString 检测 MFMessageComposeViewController 的存在,以防您部署到不支持此功能的旧版本的 iOS,并检查是否存在 MFMessageComposeViewController 是否存在 canSendText 返回 true。如果用户的设备没有短信功能,它将返回 false:
if ([[NSClassFromString(@"MFMessageComposeViewController") canSendText]) {
[self presentMessageComposeViewController];
}
如果设备和操作系统支持它,现在它会从您的应用中的视图控制器呈现一个 MFMessageComposeViewController。此方法应在管理当前视图的 UIViewController 的子类中实现:
-(void) presentMessageComposeViewController {
id smsViewController = [[NSClassFromString(@"MFMessageComposeViewController") alloc] init];
[smsViewController setTitle:NSLocalizedString(@"Your Title",nil)];
[smsViewController setBody:NSLocalizedString(@"Your Message. urls work too www.example.com",nil)];
[smsViewController setMessageComposeDelegate: (id)self];
[self presentModalViewController:smsViewController animated:YES];
[smsViewController release];
}
您还需要实现委托方法来关闭 MFMessageComposeViewController:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
[self dismissModalViewControllerAnimated:YES];
}
如果您需要使用自己的 UI,则必须与自己的服务器或可以为您发送短信的第三方服务通信。例如,使用 Twilio API(和 ASIHTTPRequest 项目):
NSString *urlString = [NSString stringWithFormat:
@"http://api.twilio.com/2010-04-01/Accounts/%@/SMS/Messages,kYourTwillioSID];
NSURL = [NSURL urlWithString:urlString];
SIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:yourPhoneNumber forKey:@"TO"];
[request setPostValue:@yourBody forKey:@"Body"];
[request setFile:kYourOutgoingTwilioNumber forKey:@"From"];
【讨论】: