URL Scheme 简介

URL Scheme 简介

原文
比较详细的介绍[包含了如何查找 App 的 URL Scheme]


前言

iPhone / iOS SDK 特性之一是可以将 iOS Application 绑定到一个自定义的 URL Scheme 上,在浏览器上或其他应用中可以通过该 URL Scheme 来启动应用。

创建 URL Scheme

createUrlScheme.png
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)。

转载于:https://www.cnblogs.com/imock/p/6775083.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值