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

题记:

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

-格局决定命运;


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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值