您的位置:首页 > 移动开发

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

2017-05-09 11:08 513 查看

题记:

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

-格局决定命运;

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®istered=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®istered=1

return YES;
}


总结:

每次ios系统版本的更新 都会对应一部分api的变化 需要关注。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: