如何在App中打开设置、appstore或其他App(区别iOS 10及之前系统)

来源:互联网 发布:淘宝宝贝详情文字编辑 编辑:程序博客网 时间:2024/05/21 10:11

题记:

“同样是搬砖,一个人觉得自己在砌一堵墙,另一人觉得自己在盖一座房,还有一个人认为自己在建造一座新的城市”;

-格局决定命运;


Content:

首先提供一个系统版本判断的宏:

#define IOS10_OR_LATER  ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){.majorVersion = 10, .minorVersion = 0, .patchVersion = 0}])

打开设置:

iOS 10 before:

    NSString * string = [NSString stringWithFormat:@"prefs:roop=bundleInidentifier"];    NSURL * url = [NSURL URLWithString:string];    if ([[UIApplication sharedApplication] canOpenURL:url]) {        if (IOS10_OR_LATER) {            [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {                NSLog(@"success = %d",success);            }];        }else{            [[UIApplication sharedApplication] openURL:url];        }    }

iOS 10:

    NSURL * url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];    if ([[UIApplication sharedApplication] canOpenURL:url]) {        if (IOS10_OR_LATER) {            [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {                NSLog(@"success = %d",success);            }];        }else{            [[UIApplication sharedApplication] openURL:url];        }    }

打开AppStore指定app链接:

NSString * string = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/us/app/id%@",@"1178857170"];//app id    NSURL * url = [NSURL URLWithString:string];    if ([[UIApplication sharedApplication] canOpenURL:url]) {        if (IOS10_OR_LATER) {            [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {                NSLog(@"success = %d",success);            }];        }else{            [[UIApplication sharedApplication] openURL:url];        }    }

打开另一个App:

AppA:我的一个项目 就叫Project;

AppB:trans360;

从AppA跳转到AppB时:

首先,在AppB中添加URL Types:


URL Schemes:填“trans360”;


其次,在AppA中,info 中添加LSApplicationQueriesSchemes(Array)->Item0-String-trans360 ;


最后调用相应代码跳转即可:

    NSURL  *url = [NSURL URLWithString:@"trans360://@testPara"];    //注意“://”后面可以任意传参数。这些参数传过去后当跳到B时会在-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 这个方法里实现。        if ([[UIApplication sharedApplication] canOpenURL:url]) {        if (IOS10_OR_LATER) {            [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {                NSLog(@"success = %d",success);            }];        }else{            [[UIApplication sharedApplication] openURL:url];        }    }

举个例子:

NSString *customURL = @"trans360://?token=123abct&registered=1"; 

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url         sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {   NSLog(@"Calling Application Bundle ID: %@", sourceApplication); //name_trans360  NSLog(@"URL scheme:%@", [url scheme]); //trans360  NSLog(@"URL query: %@", [url query]); //token=123abct&registered=1   return YES; }


总结:

每次ios系统版本的更新 都会对应一部分api的变化 需要关注。


0 0
原创粉丝点击