使用我的应用处理http网址(如果已安装)

时间:2013-07-19 07:32:09

标签: ios objective-c url

我想以这种方式处理类似:http://www.something.com/product/3/的网址:

  • 如果您安装了App =>使用App。处理它。
  • Else =>用safari处理它。

这可能吗?

我的想法是,我可以通过电子邮件发送该网址,如果接收者安装了该应用,那么应用程序会启动并执行某些操作,如果没有安装,只需通过safari打开它。

我知道自定义方案,它在应用程序中运行良好,但它们显然不适用于Safari,因为它们不是http协议。

3 个答案:

答案 0 :(得分:2)

1)在您的应用中创建自定义网址方案。如果您不知道如何创建自定义网址方案,请点击该链接:http://www.idev101.com/code/Objective-C/custom_url_schemes.html

2)然后将以下脚本添加到您希望应用打开的网址中。

<script language="javascript" type="text/javascript">
    var iOS = (navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false);
    var appUrlScheme = "myappscheme://" + document.URL;
    if (iOS) {
        window.open(appUrlScheme, "_self");
    } 
</script>

该脚本是自我解释的,如果它是iOS设备,那么它只是尝试使用您的自定义网址方案打开当前网址,即myappscheme://whateverurl.com'. If you app is installed on the device then iOS is going to launch your app and pass this URL to handleOpenURL function, otherwise mobile safari will silently ignore window.open`调用,您的网页将加载为正常:

3)在AppDelegate中实现handleOpenURL回调方法来处理URL:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    NSLog(@"url: %@", url);
    NSLog(@"query string: %@", [url query]);
    NSLog(@"host: %@", [url host]);
    NSLog(@"url path: %@", [url path]);

   //REDIRECT USER TO A VIEW CONTROLLER

    return YES;
}

答案 1 :(得分:1)

是的,您可以使用网址计划, 首先在 Info.plist文件

中创建自己的自定义网址方案

转到菜单并点击编辑器&gt;添加新行。新增项目。通过添加新项目来设置URL类型项目。展开URL Types键,展开Item 0,然后添加一个新项“URL schemes”。为“URL scheme”的第0项填写“readtext”,为“URL Identifier”填写公司标识符。

然后解析你的网址为不同的网址为相同的网址方案打开你的应用程序与不同的屏幕..这里我只显示警报,用于根据你的链接打开你的特定页面..如果没有安装该应用程序然后它将在网络浏览器中打开。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    // Display text
    UIAlertView *alertView;
    NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    alertView = [[UIAlertView alloc] initWithTitle:@"Text" message:text delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertView show];
    [alertView release];
    return YES;
}

应用程序:handleOpenURL :(用于早期的iOS 4.1)  应用程序:openURL:sourceApplication:annotation:(用于以后的iOS 4.1)。

答案 2 :(得分:0)

不,这是不可能的。 但是,您可以在邮件中包含两个链接: