0

我需要用我的应用程序处理以某个域开头的 HTTP URL,因为它指向 REST 源。然而,网络服务不在我的控制之下,所以我不能轻易引入自定义 url 方案来打开我的应用程序的链接。

有没有办法在 Cocoa 应用程序中拦截和处理此类 URL?

例子:http://static.domain.name/some/random/path

我的应用程序应该处理所有指向的链接http://static.domain.name

恐怕答案是否定的,但是,嘿,一切皆有可能:)。

更新


这是我用来使其工作的 Safari 扩展代码(<> 中的内容替换为您的内容)

var allLinks = document.links;
for (var i=0; i<allLinks.length; i++) {
    var link = allLinks[i];
    if (/.*<match>.*/.test(link.href)) {
        var rewrite = link.href.replace(/<match>/, "<customscheme>://");
        link.href = rewrite;
        console.log("Rewrote: " + rewrite);
    }
}
4

1 回答 1

1

只需在您自己的方案下编码整个网址,例如myscheme://http%3A//static.domain.name/some/random/path

当您的应用程序处理 URL 时,只需删除第一部分并取消转义它:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    NSString * urlString = [url description];
    // Remove your scheme
    urlString = [urlString stringByReplacingOccurrencesOfString:@"myscheme://" withString: @""];
    // Unescape
    urlString = [urlString stringByReplacingPercentEscapesUsingEncoding: NSASCIIStringEncoding];
    // Do something with urlString
    return YES;
}

但不是。你不能被指派处理http://

于 2010-09-24T19:44:54.773 回答