2012-03-15 94 views
1

我想从使用ShareKit框架打开的twitter页面中删除“取消并返回到APP”链接。删除使用ShareKit框架打开的twitter应用中的取消链接

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

我已经尝试和调试了共享套件代码,并找不到任何代码的特定链接。

我知道取消链接会将我们的网站,我们的网站developer.twitter.com的WebSite场提供。

回答

1

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

+2

我在应用的info.plist中添加了URL方案 URL标识符:com.acme.myappname URL方案:myappname:// test。com 现在的问题是在dev.twitter.com我不能输入网站地址作为“myappname://test.com”,因为是给我一个错误,说不是一个有效的URL格式。 如果我追加http://到我的URL方案,那么这也不起作用。 注意:我在我的应用程序委托文件中编写了“ - (BOOL)应用程序:(UIApplication *)application handleOpenURL:(NSURL *)url”方法。 你能否在我的这个问题上多加点光芒? 一些例如会有很大的帮助。 txs – 2012-03-15 13:26:49

+0

我没有意识到Twitter有这样的限制,对不起。我认为最简单的解决方案是在您的网站上重定向到您的应用程序URL方案,即您告诉Twitter该网站是http://yourwebsite.com/auth,并让您的网站将其重新指向yourapp:// AUTH。 – 2012-03-15 13:44:14

+0

我认为这可能有效。我会试一试并发布结果。感谢4 d跟进! – 2012-03-15 14:07:25

0

您可以自定义URL方案,将打开你的应用程序,但你不能让你的应用程序对某些域名指定的处理程序,以便在Safari中打开该域名将自动启动您的应用程序。

需要明确的是,一个方案是在域名前位,如http:,所以你可以让你的应用程序的处理程序是启动的myapp网址:例如。显然,没有真正的URL以myapp开头:除了你专门为你的应用程序设计的那些 - 这就是整个问题。

不幸的是,这些网址只能与您的应用程序工作,他们不能在Safari如果未安装您的应用程序打开。 iTunes,谷歌地图,Youtube等都在iPhone上以这种方式工作,因为苹果已经将它们硬编码为特殊情况,但它们并未使此机制可用于第三方应用程序。

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

你可以做的,而不是建立一个普通的web网页,其中使用JavaScript来检测设备和用户代理是什么它是iPhone自动使用document.location ='myapp:...'自动重定向到应用程序的自定义方案url。我不确定如果您尝试重定向到自定义网址计划(如果应用程序未安装),会发生什么情况。它可能什么都不做,这对你来说很理想,或者它可能会抛出一个错误或进入一个空白页面,在这种情况下,你最好弹出一条消息,比如“点击此处启动应用程序或点击此处从应用商店下载“,这是大多数网站似乎做的。

+0

感谢您的投票! – 2012-06-06 13:11:28

2

如果你想拦截取消请求,并隐藏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这是如有变更,和字符串“否认=”可以很容易地通过自己的网站网址取代。

相关问题