【问题标题】:Open external link from web app packaged as native iOS app从打包为原生 iOS 应用程序的 Web 应用程序打开外部链接
【发布时间】:2012-04-14 00:35:32
【问题描述】:

我的移动应用程序(使用 Sencha Touch 2 创建)上有一个带有target="_blank" 属性的链接。该应用程序被打包为原生 iOS 应用程序。问题是,该链接未按预期在 Safari 中打开,而是在应用程序内打开。在新的浏览器窗口中的 Safari 中打开链接非常重要。我怎样才能做到这一点?

我应该补充一点,我使用的是 Sencha 的原生打包器(sencha 包)。默认行为似乎是在同一个 web 视图中打开新窗口。但我需要它们在移动 Safari 中打开。

在 Xcode 项目中,我可以执行以下操作:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
        [[UIApplication sharedApplication] openURL:request.URL];
        return NO;
    }
    return YES;
}

如何用 Sencha Touch 原生封装做到这一点?

【问题讨论】:

  • [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"你的链接"]];
  • 请看我的帖子,我说的是使用Sencha Touch框架的原生打包器。
  • 如果不使用原生打包器,肯定有办法做到这一点。
  • 是的,实际上这就是我必须做的。但这并不是我问题的真正答案。如果有更多选项来配置打包过程,那就太好了。
  • 您可以在 sencha touch 2.1 中使用 cmd beta 3 执行此操作: Ext.device.Device.openURL('url-to-open.com');来源:docs.sencha.com/touch/2-1/#!/api/…

标签: ios sencha-touch sencha-touch-2 web-applications


【解决方案1】:

我使用它在 Mobile Safari 或新窗口中打开链接。适用于原生 iOS 打包和网络应用:

function externalLink(link) {
try{
    Ext.device.Device.openURL(link);
}catch(err) {
    window.open(link, '_blank');
}
}

【讨论】:

  • 非常感谢这个功能,本。
  • 这很有帮助,但您如何调用该函数?我添加了带有Ext.Panel 链接的 HTML,并希望这些链接在 Safari 中打开。
【解决方案2】:

我还没有找到使用 sencha 原生打包的方法。

但是将应用程序包装在 phonegap 中并在 Xcode 中编译应用程序,并将所需的 url 添加到 phonegap.plist 中的 ExternalHost 数组中应该可以正常工作吗?

另外,(仍然使用 Phonegap 解决方案)我认为破解 AppDelegate.m 以在 Safari 中打开链接也可以正常工作。

【讨论】:

  • 我给你这个赏金,因为你提供了最好的答案。我也认为现在在 Sencha Touch 中没有办法做到这一点,我最终还是遇到了另一个使用 phonegap 的问题。
【解决方案3】:

以编程方式 (Javascript) 在 Mobile Safari 中打开一个链接。 如果您不能使用标准 html 链接但必须使用 Javascript,则非常理想:

var a = document.createElement("a");
a.setAttribute('href', facebook);
a.setAttribute('target', '_blank');
a.click();

【讨论】:

    猜你喜欢
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多