6

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

  • 如果您安装了应用程序 => 使用应用程序处理它。
  • 否则 => 用 safari 处理它。

这可能吗?

我的想法是我可以通过电子邮件发送该 url,如果接收者安装了应用程序,那么应用程序会启动并做一些事情,如果没有安装,只需通过 safari 打开它。

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

4

3 回答 3

2

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

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

<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 设备,那么它只是尝试使用您的自定义 url 方案打开当前 url,即myappscheme://whateverurl.com'. If you app is installed on the device then iOS is going to launch your app and pass this URL tohandleOpenURL function, otherwise mobile safari will silently ignorewindow.open` 调用,您的网页将正常加载:

3)handleOpenURL在您的 AppDelegate 中实现回调方法来处理 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;
}
于 2014-07-10T04:12:49.060 回答
1

是的,您可以使用URL Scheme来完成,首先在Info.plist 文件中创建您自己的自定义 url 方案

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

然后解析您的 url 以获得相同 url 方案的不同 url 以使用不同的屏幕打开您的应用程序。这里我只显示了警报,用于根据您的链接打开您的特定页面。如果未安装该应用程序,那么它将打开在网络浏览器中。

- (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;
}

application:handleOpenURL : (用于早期的 iO​​S 4.1) application:openURL:sourceApplication:annotation: (用于后来的 iOS 4.1)。

于 2013-07-19T08:18:05.503 回答
0

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

于 2013-07-19T08:06:11.967 回答