Xcode - 多个 URL 方案

7

在我的应用程序中,我想要使用两个不同的URL方案,例如OneTwo,这样用户可以使用以下方式打开我的应用程序:one://somethingtwo://something

我正在使用以下代码:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
}

应用程序如何知道用户输入的是一个还是两个?
1个回答

11

handleOpenURL已经被废弃,所以如果你的目标是iOS 4.2或更高版本,你应该使用application:openURL:sourceApplication:annotation:代替。

在两种情况下,你都会收到一个NSURL,你可以通过访问scheme属性来查找用于访问你的应用程序的方案。

编辑:为了易读性,在你的application:openURL:sourceApplication:annotation:实现中,代码应该类似于;

if([[url scheme] caseInsensitiveCompare:@"one"] == NSOrderedSame) 
{ 
    /* one here */ 
} else { 
    /* not one here */ 
}

那么我的代码应该是这样的吗?: - (BOOL)application:(UIApplication *)application:openURL:sourceApplication:annotation: handleOpenURL:(NSURL *)url { 我不知道,确切地说我应该如何使用application:openURL:sourceApplication:annotation:。 - Jonathan Gurebo
@JonathanGurebo 有点类似于这样;if(![[url scheme] caseInsensitiveCompare:@"one"]) { /* one在这里 */ } else { /* 不是one在这里 */ } - Joachim Isaksson
@JoachimIsaksson 你应该编辑你的答案,加上那段代码,这样更容易阅读。 - rmaddy
@rmaddy 谢谢,为了可读性已将代码添加到答案中。 - Joachim Isaksson
由于caseInsensitiveCompare:返回一个枚举值,因此您应该将其更改为if([[url scheme] caseInsensitiveCompare:@"one"] == NSOrderedSame) - rmaddy
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接