实现App跳转传值,使用URL Scheme
1.info->URL Types
如果使用多个URL Scheme,使用“,”隔开
2.在AppDelegate.m中增加协议方法:
#import "AppDelegate.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return YES;
}
/**
*ios 9之前会调用这个
*/
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation {
NSLog(@"%@",sourceApplication);
return YES;
}
/**
*ios 9之后调用这个
*/
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
NSLog(@"scheme:%@",[url scheme]); //scheme:test1://
NSLog(@"query:%@",[url query]);//query:name=jin
NSLog(@"%@",options[UIApplicationOpenURLOptionsSourceApplicationKey]);
return YES;//如果由于某种原因应用程序无法打开,则返回NO
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
return YES;
}
@end
使用Safari打开:输入地址test1://或test2://都能打开App,传值的话,使用test1://?name=jin,跟GET请求一样
在另一个App打开:
- (IBAction)openUrlScheme:(id)sender
{
NSURL *url = [NSURL URLWithString:@"tese1://?name=jin"];
//是否可以启动该url
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
else{
NSLog(@"No such url.");
}
}
结果如下图: