山西省建设厅网站打不开,小学网站建设实施方案,cc攻击wordpress网页,廊坊建筑模板厂家电话iPhone / iOS SDK 最酷的特性之一就是应用将其自身”绑定”到一个自定义 URL scheme 上#xff0c;该 scheme 用于从浏览器或其他应用中启动本应用。 注册自定义 URL Scheme 注册自定义 URL Scheme 的第一步是创建 URL Scheme — 在 Xcode Project Navigator 中找到并点击工程…iPhone / iOS SDK 最酷的特性之一就是应用将其自身”绑定”到一个自定义 URL scheme 上该 scheme 用于从浏览器或其他应用中启动本应用。 注册自定义 URL Scheme 注册自定义 URL Scheme 的第一步是创建 URL Scheme — 在 Xcode Project Navigator 中找到并点击工程 info.plist 文件。当该文件显示在右边窗口在列表上点击鼠标右键选择 Add Row 向下滚动弹出的列表并选择 URL types。 点击左边剪头打开列表可以看到 Item 0一个字典实体。展开 Item 0可以看到 URL Identifier一个字符串对象。该字符串是你自定义的 URL scheme 的名字。建议采用反转域名的方法保证该名字的唯一性比如com.yourCompany.yourApp。 点击 Item 0 新增一行从下拉列表中选择 URL Schemes敲击键盘回车键完成插入。 注意 URL Schemes 是一个数组允许应用定义多个 URL schemes。 展开该数据并点击 Item 0。你将在这里定义自定义 URL scheme 的名字。只需要名字不要在后面追加 :// — 比如如果你输入 iOSDevApp你的自定义 url 就是 iOSDevApp:// 此时整个定义如下图 虽然我赞同 Xcode 使用描述性的名字的目的不过看到创建的实际的 key 也是非常有用的。这里有一个方便的技巧右键点击 plist 并选择 Show Raw Keys/Values就能看到以下效果 还有另一种有用的输出格式XML因为可以非常容易的看到字典和原始数组及其包括的实体的结构。点击 plist 并选择 Open As – Source Code 从 Safari 中调用自定义 URL Scheme 定义了 URL scheme我们可以运行一个快速测试来验证应用是否如我们所期望的被调用。在这之前我创建了一个准 UI 以辨别带有自定义 URL 的应用。该应用只有一个 UILabel带有文本 “App With Custom URL”。下载源代码http://iosdevelopertips.com/downloads/#customURLScheme 使用模拟器调用应用的步骤 在 Xcode 中运行应用 一旦应用被安装自定义 URL scheme 就会被注册 通过模拟器的硬件菜单中选择 Home 来关闭应用 启动 Safari 在浏览器地址栏输入之前定义的 URL scheme(如下) 此时 Safari 将会关闭应用会被带回到前台。祝贺你刚刚使用自定义 URL scheme 调用了一个 iPhone 应用。 从另一个 iPhone 应用中调用自定义 URL Scheme 让我们看看如何从另一个应用中调用自定义 URL scheme。我又创建了一个非常简单的 iPhone 应用它只有一个 UILabel 和一个 UIButton — 前者显示了一段信息告诉你这个应用将要通过自定义 URL scheme 来调用另一个应用按钮则开始这个行为。下载源代码http://iosdevelopertips.com/downloads/#customURLScheme buttonPressed 方法中的代码处理 URL 调用 - (void)buttonPressed:(UIButton *)button { NSString *customURL iOSDevTips://; if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]]; } else { UIAlertView *alert [[UIAlertView alloc] initWithTitle:URL error message:[NSString stringWithFormat: No custom URL defined for %, customURL] delegate:self cancelButtonTitle:Ok otherButtonTitles:nil]; [alert show]; } } 第5行代码检查自定义 URL 是否被定义如果定义了则使用 shared application 实例来打开 URL (第 8 行)。openURL方法启动应用并将 URL 传入应用。在此过程中当前的应用被退出。 通过自定义 URL Scheme 向应用传递参数 有时你需要通过自定义 URL 向应用中传递参数。让我们看看该如何完成这个工作。 NSURL 作为从一个应用调用另一个的基础遵循 RFC 1808https://tools.ietf.org/html/rfc1808 (Relative Uniform Resource Locators) 标准。 因此你所熟悉的基于网页内容的 URL 格式在这里也适用。 在自定义了 URL scheme 的应用中app delegate 必须实现以下方法 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 从一个应用传递参数到另一个的诀窍是通过 URL。例如假设我们使用以下的 URL scheme想传递一个名为 “token”的参数和一个标识注册状态的标志我们可以像这样创建一个 URL NSString *customURL iOSDevTips://?token123abctregistered1; 在 web 开发中字符串 ?token123abctregistered1 被称作查询询串(query string)。 在被调用(设置了自定义 URL)的应用的 app delegate 中获取参数的代码如下 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { NSLog(Calling Application Bundle ID: %, sourceApplication); NSLog(URL scheme:%, [url scheme]); NSLog(URL query: %, [url query]); return YES; } 以上代码在应用被调用时的输出为 Calling Application Bundle ID: com.3Sixty.CallCustomURL URL scheme:iOSDevTips URL query: token123abctregistered1 注意 “Calling Application Bundle ID”你可以用这个来确保只有你定义的应用可以与你的应用直接交互。 让我们改变一下代码来验证发起调用的应用的 Bundle ID 是否合法 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { // Check the calling application Bundle ID if ([sourceApplication isEqualToString:com.3Sixty.CallCustomURL]) { NSLog(Calling Application Bundle ID: %, sourceApplication); NSLog(URL scheme:%, [url scheme]); NSLog(URL query: %, [url query]); return YES; } else return NO; } 有一点要特别注意你不能阻止其他应用通过自定义 URL scheme 调用你的应用然而你可以跳过后续的操作并返回 NO就像上面的代码那样。也就是说如果你想阻止其它应用调用你的应用创建一个与众不同的 URL scheme。尽管这不能保证你的应用不会被调用但至少大大降低了这种可能性。 转载于:https://www.cnblogs.com/YanPengBlog/p/5719374.html