ios App跳转传值

实现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.");
    }
}
 结果如下图:


猜你喜欢

转载自blog.csdn.net/dashenid/article/details/79892765