代码之家  ›  专栏  ›  技术社区  ›  Era

处理标准HTTP URL方案的Cocoa应用程序

  •  0
  • Era  · 技术社区  · 14 年前

    我需要用我的应用程序处理以某个域开始的HTTP URL,因为它指向一个REST源。但是Web服务不在我的控制之下,所以我不能轻易地引入一个自定义的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);
        }
    }
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   Matt Williamson    14 年前

    只需根据您自己的方案对整个URL进行编码,例如 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://