zoukankan      html  css  js  c++  java
  • 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];
  • 相关阅读:
    HDU 5273 Dylans loves sequence 暴力递推
    HDU 5285 wyh2000 and pupil 判二分图+贪心
    HDU 5281 Senior's Gun 贪心
    HDU 5651 xiaoxin juju needs help 逆元
    HDU 5646 DZY Loves Partition
    HDU 5366 The mook jong
    HDU 5391Z ball in Tina Town 数论
    HDU 5418 Victor and World 允许多次经过的TSP
    HDU 5642 King's Order dp
    抽屉原理
  • 原文地址:https://www.cnblogs.com/huntaiji/p/3610962.html
Copyright © 2011-2022 走看看