项目中有个需求就是使用微信扫描二维码打开app.跳转到指定页面,这里我用的是URL Scheme简单做下记录
image.png image.png这里我自定义了一个GHLink做为Scheme
写好之后想看下是否是生效可以把app放在后台,打开safari在地址栏输入
GHLink://
如果能唤起app,代表设置成功,点击打开可以唤起app
如果想在链接中传参可以以这样的格式GHLink://?key=value
例如
GHLink://?message=success
接下我们在线生成一个二维码实验下,二维码生成
image.png在空白处输入链接,然后生成二维码
回到app中,在appDelegate中使用一下方法接收传过来的字段
application: openURL:(NSURL *)url sourceApplication: annotation:
备注针对于openURL 苹果一共推出三个方法,分别是:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url NS_DEPRECATED_IOS(2_0, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED;
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation NS_DEPRECATED_IOS(4_2, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED;
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options NS_AVAILABLE_IOS(9_0); // no equiv. notification. return NO if the application can't open for some reason
3个回调的功能基本一样,
不同之处:
A回调是在iOS2.0的时候推出的,参数只有url。
B回到是在iOS4.2的时候推出的,参数有url sourceApplication annotation.
C回调是iOS9.0的时候推出
我们在使用最后一个方法,在方法中加一个alert方便我们查看接收到的参数
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options NS_AVAILABLE_IOS(9_0) {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:[url scheme] message:[url query] delegate:nil cancelButtonTitle:@"我知道了" otherButtonTitles:nil, nil];
[alert show];
return YES;
}
最后打开相机扫描刚才生成的二维码,检查是否成功接收到参数
网友评论