删除使用ShareKit框架打开的twitter应用程序中的取消链接



我想从使用ShareKit Framework打开的推特页面中删除"取消并返回应用程序"链接。

当我点击该链接时,它会将我重定向到我在dev.twitter.com中输入的网站。我想删除该链接,或者至少关闭推特的对话框并返回我的应用程序。

我已经尝试并调试了共享工具包代码,但找不到该特定链接的任何代码。

我知道取消链接会把我们带到我们在developer.twitter.com网站的网站字段中提供的网站。

如果您想拦截取消请求并隐藏UIWebView,可以在包含您正在使用的UIWebView的视图控制器中执行。使用代理功能

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

以捕获URL请求。如果你搜索与返回应用程序相关的字符串,你可以执行任何你想要的操作(例如,关闭视图控制器并返回应用程序)。这可以使用以下代码完成:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString* requestURL = request.URL.absoluteString;
    if ([requestURL rangeOfString:@"denied="].location != NSNotFound)
    {
        // DISMISS YOUR VIEW CONTROLLER HERE
        return NO;
    }
}

当然,这取决于twitter返回的URL,该URL可能会更改,字符串"denied="也可以很容易地被您的网站URL替换。

在应用程序中添加URL方案,然后用新的URL方案填充dev.twitter.com上的网站地址(例如"yourapp://twitterauthfail")。这样,当您的用户按下取消按钮时,他们将被引导回您的应用程序。

您可以定义将打开应用程序的自定义url方案,但不能将应用程序作为特定域名的指定处理程序,以便在Safari中打开该域将自动启动您的应用程序。

需要明确的是,scheme是域名之前的一位,比如http:,所以你可以让你的应用程序成为启动myapp:的url的处理程序。显然,没有真正的URL是从myapp开始的:除了那些你专门设计用于你的应用程序的URL——这就是重点。

不幸的是,这些URL只适用于你的应用程序,如果你的应用未安装,则无法在Safari中打开。iTunes、谷歌地图、Youtube等在iPhone上都是这样工作的,因为苹果已经将它们硬编码为特殊情况,但他们不允许第三方应用程序使用这种机制。

要为您的应用程序注册自定义方案,请遵循本教程:http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

相反,你可以设置一个常规网页,该网页使用javascript来检测设备的用户代理,如果是iPhone,则使用document.location='myapp:…'自动重定向到应用程序的自定义方案url。如果没有安装应用程序,我不确定如果你试图重定向到自定义url方案会发生什么。它可能什么都不做,这对你来说是理想的,也可能会出现错误或进入空白页面,在这种情况下,你最好弹出一条消息,比如"点击此处启动应用程序或点击此处从应用商店下载",这是大多数网站似乎都会做的。

最新更新