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)。

posted @ 2017-04-27 16:54  上水的花  阅读(714)  评论(0编辑  收藏  举报