题记:
“同样是搬砖,一个人觉得自己在砌一堵墙,另一人觉得自己在盖一座房,还有一个人认为自己在建造一座新的城市”;
-格局决定命运;
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的变化 需要关注。