系统硬件1-短信,打电话

使用方式:导入 MessageUI.framework框架:

#import "ViewController.h"

  #import <MessageUI/MessageUI.h>

@interface ViewController ()<MFMessageComposeViewControllerDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
#pragma mark - 调用系统发送信息方法
- (IBAction)message:(UIButton *)sender {
    // 缺点是无法从系统短信程序回到自己的应用程序
    // 如果设备能发送短信就跳到系统发送信息界面,否则的就不可以发送短信
   if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"sms://10086"]])
   {
       // 通过openURL可以实现调用系统的电话,短信,邮件,浏览器,地图和手机内第三方程序等功能,sms://后面跟的是要发送短信的人的号码。
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://10086"]];
   }
}
#pragma mark - 在程序中直接发送短信
- (IBAction)codeMessage:(UIButton *)sender {
    // 直接在程序中发送短信
    // IOS4.0 提供了MFMessageComposeViewController和MFMessageComposeviewControllerDelegate来完成不需要跳出程序
    // canSendText 方法检验是否支持消息发送功能
    // 要发送的短信内容和收件人在展现MFMessageComposeViewController之前需初始化好,展现了之后短信内容不能通过程序来进行修改,不过用户仍然可以手工修改短信内容和选择收件人
    // 如果用户点了发送或者取消,或者发送失败时,MFMessageComposeViewController的-messageComposeViewController:didFinishWithResult:方法都能得到通知,在这里进行相应的处理
    // 创建MFMessageComposeViewController对象
      if([MFMessageComposeViewController canSendText])
    {
        [self showSMSComposerSheet];
    }
}

-(void)showSMSComposerSheet{
    MFMessageComposeViewController *messagePicker=[[MFMessageComposeViewController alloc]init];
    messagePicker.messageComposeDelegate=self;  //设置代理
    messagePicker.navigationBar.tintColor = [UIColor blackColor];
    NSMutableString *MessageUrl = [[NSMutableString alloc] initWithString:@"http://www.cocoa.com"];
    NSMutableArray *array=[NSMutableArray arrayWithObjects:MessageUrl,@"10086", nil];
    // 同时可以设多个收件人
    messagePicker.recipients=array;
    // 设置默认信息
    messagePicker.body=@"hello";
    // 弹出视图
    [messagePicker presentViewController:messagePicker animated:YES completion:^{
    
    }
   ];
}

#pragma  mark - 发送事件处理
-(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    switch (result) {
        case MessageComposeResultCancelled:
        {
            NSLog(@"取消短信发送");
            break;
        }
        case MessageComposeResultSent:
        {
            NSLog(@"短信发送成功");
            break;
        }
        case MessageComposeResultFailed:
        {
            NSLog(@"信息发送失败");
            break;
        }
        default:
        {
            NSLog(@"信息未发送");
            break;
        }
    }
    [self dismissViewControllerAnimated:YES completion:^{
        
    }];
}

// 实现打电话的方式
- (IBAction)phone:(UIButton *)sender {
    // 系统方法
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]];
}






拓展:
  //调用safar打开网页
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.cnblogs.com/foxmin"]];
////调用app store (省略号后面加的是产品的id等一些参数)
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.apple.com/app/……"]];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/app/ "]];
////调用电话
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://XXXXX"]];
////调用SMS
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://XXXXX"]];
//调用Remote
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"remote://XXX"]];






查看更多iPhone应用程序的调用和第三方应用程序的调用,可以在iPhone的URL方案查看。下面列举部分:


Apple iPhone Applications
Safari
Any URL starting with http:// which does not point to maps.google.com or www.youtube.com is sent to Safari:


NSString *stringURL = @"http://wiki.akosma.com/";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
Apparently feed:// opens http://reader.mac.com in Safari.



Maps
URLs starting with http://maps.google.com open up the "Maps" application automatically:


NSString *title = @"title";
float latitude = 35.4634;
float longitude = 9.43425;
int zoom = 13;
NSString *stringURL = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@@%1.6f,%1.6f&z=%d", title, latitude, longitude, zoom];
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
It seems that maps:// also opens up the Maps application.



Phone
The phone links start with "tel:" but must not contain spaces or brackets (it can contain dashes and "+" signs, though):


NSMutableString *phone = [[@"+ 12 34 567 89 01" mutableCopy] autorelease];
[phone replaceOccurrencesOfString:@" "
                       withString:@""
                          options:NSLiteralSearch
                            range:NSMakeRange(0, [phone length])];
[phone replaceOccurrencesOfString:@"("
                       withString:@""
                          options:NSLiteralSearch
                            range:NSMakeRange(0, [phone length])];
[phone replaceOccurrencesOfString:@")"
                       withString:@""
                          options:NSLiteralSearch
                            range:NSMakeRange(0, [phone length])];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", phone]];
[[UIApplication sharedApplication] openURL:url];


SMS
To open the SMS application, just use the sms: protocol in your URL:


NSString *stringURL = @"sms:";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
You can specify a phone number, but apparently not a default text for your message:


NSString *stringURL = @"sms:+12345678901";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
The same restrictions apply as for phone URLs, regarding spaces, brackets and dashes.



Mail
These URLs launch Mail and open the compose message controller:


NSString *stringURL = @"mailto:test@example.com";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
You can also provide more information, for a customized subject and body texts:


NSString *subject = @"Message subject";
NSString *body = @"Message body";
NSString *address = @"test1@akosma.com";
NSString *cc = @"test2@akosma.com";
NSString *path = [NSString stringWithFormat:@"mailto:%@?cc=%@&subject=%@&body=%@", address, cc, subject, body];
NSURL *url = [NSURL URLWithString:[path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];
You might also omit some information:


NSString *subject = @"Message subject";
NSString *path = [NSString stringWithFormat:@"mailto:?subject=%@", subject];
NSURL *url = [NSURL URLWithString:[path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];
For more complex body texts, you might want to use the CFURLCreateStringByAddingPercentEscapes() function, as explained above in this page.



YouTube
URLs starting with http://www.youtube.com open up the "YouTube" application automatically:


NSString *stringURL = @"http://www.youtube.com/watch?v=WZH30T99MaM";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
It also works with this URL (which normally brings the Flash video player used by YouTube):


NSString *stringURL = @"http://www.youtube.com/v/WZH30T99MaM";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];


iTunes
To open up iTunes, use this URL:


NSString *stringURL = @"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=156093464&id=156093462&s=143441";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];


App Store
Very similar to the iTunes URLs:


NSString *stringURL = @"http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=294409923&mt=8";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];


iBooks
(source: http://akos.ma/aqdr)


NSString *stringURL = @"itms-books:";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
NSString *stringURL = @"itms-bookss:";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];


Third Party Applications
Most URL schemes in this list come from App Lookup.



AirSharing
Launch the application:


NSString *stringURL = @"airsharing://";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];


Alocola
Launch the application:


NSString *stringURL = @"alocola://";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];


Appigo Notebook
Launch the application:


NSString *stringURL = @"appigonotebook://";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];


Appigo Todo
Launch the application:


NSString *stringURL = @"appigotodo://";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
Create a new task:


NSString *template = @"appigotodo://com.example.xyzapp/import?name=%@&note=%@&due-date=%@&priority=%@&repeat=%@";
NSString *name = @"Buy%20some%20milk";
NSString *note = @"Stop%20on%20the%20way%20home%20from%20work.";
NSString *dueDate = @"2009-07-16";
NSString *priority = @"1";
NSString *repeat = @"101";
NSString *stringURL = [NSString stringWithFormat:template, name, note, dueDate, priority, repeat];
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];


Duo
Launch the application and pre-populate the update field with your desired Tweet/Facebook update. Optional: Provide Duo with the custom URL and return path to your app to provide the user with a button to return to your app.


NSString *appID = @"Your Apps Name";
NSString *updateInfo = @"The Tweet/Status Update";
NSString *returnScheme = @"Your Apps Return URL Scheme";
NSString *returnPath = @"Your/Apps/Return/Path";
NSString *baseURL = @"duoxx://updateFaceTwit?";
 
NSString *encodedUpdateInfo = [updateInfo stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSString *urlString = [NSString stringWithFormat:@"%@BLappID=%@;BLupdateInfo=%@;BLreturnScheme=%@;BLreturnPath=%@",
         baseURL, appID, encodedUpdateInfo, returnScheme, returnPath];


NSURL *url = [NSURL URLWithString:urlString];
[[UIApplication sharedApplication] openURL:url];
 



The Cartographer
Launch app and add a placemark at given coordinate:


NSString *title = @"Placemark title (optional)";
NSString *summary = @"Placemark description (optional)";
CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(123.0, 12.0);


title = [(id)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)title, NULL, (CFStringRef)@";/?:@&=+$,", kCFStringEncodingUTF8) autorelease];
summary = [(id)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)summary, NULL, (CFStringRef)@";/?:@&=+$,", kCFStringEncodingUTF8) autorelease];


NSString *cartographerURL = [NSString stringWithFormat:@"cartographer://placemark?coordinate=%lf,%lf&title=%@&summary=%@",
         coordinate.latitude, coordinate.longitude, title, summary];


NSURL *url = [NSURL URLWithString:cartographerURL];
[[UIApplication sharedApplication] openURL:url];
Launch app and load either a KML source or a Google My Map:


NSString *sourceURL = @"http://....";
// e.g. http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=208320711678395936256.00046bbcfdcd1f3ebf64b&z=5


// Optional:
MKCoordinateRegion region = ...;
sourceURL = [sourceURL stringByAppendingFormat:@"&ll=%lf,%lf&spn=%lf,%lf",
               region.center.latitude, region.center.longitude, region.span.latitudeDelta, region.span.longitudeDelta];


NSURL *url = [NSURL URLWithString:[sourceURL stringByReplacingOccurrencesOfString:@"http://" withString:@"cartographer://"]];
[[UIApplication sharedApplication] openURL:url];
 


ChatCo


NSString *stringURL = @"irc://irc.example.domain/roomName";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
NSString *stringURL = @"irc://irc.example.domain/Nickname@roomName";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
NSString *stringURL = @"irc://irc.example.domain/Nickname!Realname@roomName";
NSURL *url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];

 
原文地址:https://www.cnblogs.com/lovelifeloveme/p/4057194.html