URL Scheme 简介
URL Scheme 简介
原文
比较详细的介绍[包含了如何查找 App 的 URL Scheme]
前言
iPhone / iOS SDK 特性之一是可以将 iOS Application 绑定到一个自定义的 URL Scheme 上,在浏览器上或其他应用中可以通过该 URL Scheme 来启动应用。
创建 URL Scheme
1. Info.plist -> 添加 URL Types 行。
2. URL identifier 用来作为自定义 URL Scheme 的唯一标识。
3. Item 0 -> 添加 URL Schemes 行 -> 填写自定义 URL Scheme
注意:
URL Schemes 是一个数组,允许应用定义多个 URL scheme。如分享时添加微信、QQ、微博的 URL scheme。上图得到的 URL Scheme : "imcoktestextension://"
使用 URL Scheme
// 普通使用(直接打开应用)
NSString *customURL = @"imocktestextension://";
NSURL *openURL = [NSURL URLWithString:customURL];
if([[UIApplication sharedApplication] canOpenURL:openURL]) {
[[UIApplication sharedApplication] openURL:openURL];
}
else{
NSLog(@"Failed to open URL");
}
// 普通使用(打开应用的同时传递信息)
NSString *customURL =@"imocktestextension://info";
NSURL *openURL = [NSURL URLWithString:customURL];
if([[UIApplication sharedApplication] canOpenURL:openURL]) {
[[UIApplication sharedApplication] openURL:openURL];
}
else{
NSLog(@"Failed to open URL");
}
// 被打开应用监听 URL Scheme NS_AVAILABLE_IOS(9_0) iOS 9 之前是另一个接口
- (BOOL) application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
NSString* prefix = @"imcoktestextension://";
if ([[url absoluteString] rangeOfString:prefix].location != NSNotFound) {
NSString* action = [[url absoluteString] substringFromIndex:prefix.length];
if ([action isEqualToString:@"ShowImage"]) { // 展示图片页
NSLog(@"我想去 ShowImage 页面");
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationShowImage object:nil];
}
}
return YES;
}
注意:
NSURL 作为从一个应用调用另一个的基础,需要遵循 RFC 1808(Relative Uniform Resource Locators)标准。所以常用的基于网页内容的 URL 格式也适用于 URL Scheme。比如 imocktestextension://info 可以当作一个普通 URL 进行拆分,也可以直接使用 Safari 打开(前提手机装有 App)。