管理HTTP架构以深入链接到我的应用程序?

时间:2014-11-06 13:13:47

标签: ios deep-linking

我正在深入研究iOS应用程序的Deep Linking,并且我已成功管理基于我的应用程序的自定义架构的深层链接。

这意味着只要用户点击具有架构com.MYAPP://aPage?someInfo=value的链接(例如在Safari中),就会打开该应用并按预期重定向用户。

问题在于我不知道如何处理与HTTP模式的链接,就像浏览器所做的那样。我希望同样的行为适用于http://www.MYAPP.com/aPage?someInfo=value,但是根据我的研究,这是不可能的,除非涉及第三方解决方案。这是对的吗?

另一种选择似乎在我的服务器中有一个重定向,但是解决一个应该简单得多的问题似乎有点远。

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

试试这个例子:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    [self handleURL:url];
    return YES;
}

- (void) handleURL:(NSURL*)url{
    if (!url)
        return ;

    if ([url.host isEqualToString:@"p"]) {
        NSArray* array = [url pathComponents];

        if ([array count] == 2 )
            [self goToScreen:[array objectAtIndex:1]];
    }
}

-(void) goToScreen:(NSString*)name{
    if ([name isEqualToString:@"0"]) {
        [self.tbc setSelectedIndex:0];
    }
    else if ([name isEqualToString:@"1"]) {
        [self.tbc setSelectedIndex:1];
    }
    else if ([name isEqualToString:@"2"]) {
        [self.tbc setSelectedIndex:2];
    }
    else if ([name isEqualToString:@"3"]) {
        [self.tbc setSelectedIndex:0];
        detailsViewController* details = [[[detailsViewController alloc] init] autorelease];
        UINavigationController* nav = [[self.tbc viewControllers] objectAtIndex:0];
        [nav popToRootViewControllerAnimated:NO];
        [nav pushViewController:details animated:NO];
    }
}