• ios openURL的使用(调用系统电话、浏览器、地图、邮件等)


    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];
  • 相关阅读:
    工作笔记(一)
    如何修改mindmanager默认字体为微软雅黑
    彻底解决zend studio 下 assignment in condition警告
    PHP5.2至5.6的新增功能详解
    ThinkPHP中的模型命名
    12大网站建设技巧 让访客信任你
    CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14
    几种不错的编程字体
    大型网站的灵魂——性能
    MySQL: InnoDB 还是 MyISAM?
  • 原文地址:https://www.cnblogs.com/huntaiji/p/3610962.html
Copyright © 2020-2023  润新知