有没有人知道,通过官方SDK / Cocoa Touch,从iPhone发送短信是否可行,以及如何实现?
当前回答
如果您愿意,您可以使用名为CTMessageCenter类的私有框架CoreTelephony。有一些发送短信的方法。
其他回答
遵循以下步骤
1 .添加消息i。项目框架
2。在.h文件中导入# Import <MessageUI/MessageUI.h>。
3.复制此代码以发送消息
if ([MFMessageComposeViewController canSendText]) {
MFMessageComposeViewController *messageComposer =
[[MFMessageComposeViewController alloc] init];
NSString *message = @"Message!!!";
[messageComposer setBody:message];
messageComposer.messageComposeDelegate = self;
[self presentViewController:messageComposer animated:YES completion:nil];
}
4所示。实现委托方法,如果你想。
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
///your stuff here
[self dismissViewControllerAnimated:YES completion:nil];
}
快跑!
限制
如果你可以在iPhone的程序中发送短信,你就可以在后台编写垃圾邮件游戏。我相信你一定很想收到朋友的垃圾邮件,“试试这款新游戏!它撕破了我的短裤,你的也会!roxxersboxxers.com ! !如果你现在注册,你将得到3200个RB点!!”
苹果对自动(甚至部分自动)短信和拨号操作有限制。(想象一下如果游戏在一天的特定时间拨打911)
最好的办法是在互联网上设置一个使用在线SMS发送服务的中间服务器,如果需要完全自动化,则通过该路由发送SMS。(例如,iPhone上的程序向服务器发送UDP数据包,服务器发送真正的短信)
iOS 4更新
然而,iOS 4现在提供了一个viewController,你可以导入到你的应用程序中。预先填充SMS字段,然后用户可以在控制器内发起SMS发送。与使用“SMS:…”url格式不同,这允许您的应用程序保持打开状态,并允许您填充to和body字段。您甚至可以指定多个收件人。
这可以防止应用程序在用户没有明确意识到的情况下发送自动SMS。你仍然不能从iPhone本身发送完全自动化的短信,它需要一些用户交互。但这至少允许您填充所有内容,并避免关闭应用程序。
MFMessageComposeViewController类有很好的文档,并且教程展示了它的实现是多么容易。
iOS 5更新
iOS 5包括iPod touch和iPad设备的消息,所以虽然我还没有亲自测试,但可能所有iOS设备都可以通过MFMessageComposeViewController发送短信。如果是这样的话,那么苹果正在运行一个SMS服务器,它代表没有蜂窝调制解调器的设备发送消息。
iOS 6更新
这个类没有变化。
iOS 7更新
您现在可以检查您正在使用的消息媒体是否接受主题或附件,以及它将接受哪种附件。您可以编辑主题并在媒体允许的情况下向邮件添加附件。
iOS 8更新
这个类没有变化。
iOS 9更新
这个类没有变化。
iOS 10更新
这个类没有变化。
iOS 11更新
这个类没有显著的变化
该类的限制
请记住,这在没有iOS 4的手机上是行不通的,在iPod touch或iPad上也行不通,除非是在iOS 5下。在使用这个控制器之前,你必须检测设备和iOS的限制,否则你的应用可能会被限制在最近升级的3G、3GS和4部iphone上。
然而,发送短信的中间服务器将允许任何和所有这些iOS设备发送短信,只要他们有互联网接入,所以它可能仍然是许多应用程序的一个更好的解决方案。或者,两者都使用,只有在设备不支持在线短信服务时才使用在线短信服务。
这是一个教程,它完全是你正在寻找的: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
你可以使用这种方法:
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"sms:MobileNumber"]]
iOS会自动从你的应用程序导航到消息应用程序的消息合成页面。由于URL的方案是从sms:开始的,这被标识为消息应用程序可以识别的类型,并启动它。
- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
UIImage *ui =resultimg.image;
pasteboard.image = ui;
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:"]];
}
推荐文章
- 如何使用接口生成器创建的nib文件加载UIView
- iOS如何设置应用程序图标和启动图像
- 更改UITextField和UITextView光标/插入符颜色
- 'Project Name'是通过优化编译的——步进可能会表现得很奇怪;变量可能不可用
- 如何设置回退按钮文本在Swift
- 模拟器慢动作动画现在打开了吗?
- 如何为TableView创建NSIndexPath
- 滑动删除和“更多”按钮(就像iOS 7的邮件应用程序)
- 如何比较两个nsdate:哪个是最近的?
- 使UINavigationBar透明
- 如何改变推和弹出动画在一个基于导航的应用程序
- 删除/重置核心数据中的所有条目?
- Swift to Objective-C头未在Xcode 6中创建
- setNeedsLayout vs. setNeedsUpdateConstraints和layoutIfNeeded vs. updateConstraintsIfNeeded
- 不区分大小写的比较