包含 Google Admob 插件时,Phonegap/Cordova 2.9 iOS 应用内浏览器未打开

Posted

技术标签:

【中文标题】包含 Google Admob 插件时,Phonegap/Cordova 2.9 iOS 应用内浏览器未打开【英文标题】:Phonegap/Cordova 2.9 iOS In-App Browser not opening when Google Admob plugins are included 【发布时间】:2013-11-10 10:31:04 【问题描述】:

我正在使用 jQuerymobile 开发一个 phonegap/cordova 2.9 ios 应用程序,其中一些链接需要使用 InAppBrowser 打开一个 url。我还集成了 Google Admob。导航是基本的单页模板,带有一些不同的 html 页面。

当应用程序加载时,如果我不去应用程序的其他部分,当按下带有应用内浏览器 URL 的按钮时,应用内浏览器会打开。但是,如果我转到应用程序的其他部分并再次转到 index.html,则应用内浏览器会失败并且无法正常工作。

应用程序的不同部分使用 target="_blank" 链接。如果我链接没有 target="_blank" 的部分,一切正常,但我需要使用 target="_blank" 返回 index.html 并重新加载 XML 数据。

几天前我正在寻找任何解决方案,但没有找到任何解决方案。这篇文章中只有一个类似的详细信息,但没有解决方案: http://iphonedevsdk.com/forum/iphone-sdk-development/115057-inappbrowser-is-not-opening.html

我尝试过的另一件事是从https://build.phonegap.com/plugins/2 安装 Childbrowser 插件并使用它而不是应用内浏览器,但我无法让它工作。

任何人都可以帮助我吗?非常感谢。

【问题讨论】:

【参考方案1】:

您可能已经从这个开始,但我的场景是我使用带有 jquery mobile 的 Cordova 2.9.1。在用户体验的某些点上,我还会回到 index.html。这工作得很好,除非我在任何时候打开 InAppBrowser。 InAppBrowser 工作了,但是下次我重新刷新 index.html 时,包括 InAppBrowser 在内的所有插件都不会执行。

我的解决方法是对 CDVInAppBrowser.m 进行如下更改:

代替:

BOOL isPDF = [@"true" isEqualToString :[theWebView stringByEvaluatingjavascriptFromString:@"document.body==null"]];
if (isPDF) 
    [CDVUserAgentUtil setUserAgent:_prevUserAgent lockToken:_userAgentLockToken];


[self.navigationDelegate webViewDidFinishLoad:theWebView];

我取出了 isPDF 逻辑,只是确保它总是更新到以前的 UserAgent。我只剩下..

[CDVUserAgentUtil setUserAgent:_prevUserAgent lockToken:_userAgentLockToken];

[self.navigationDelegate webViewDidFinishLoad:theWebView];

希望这有助于在再次重新加载 cordova.js 时遇到类似 InAppBrowser 破坏 jquery-mobile 或类似框架的场景的人。

【讨论】:

以上是关于包含 Google Admob 插件时,Phonegap/Cordova 2.9 iOS 应用内浏览器未打开的主要内容,如果未能解决你的问题,请参考以下文章

Google AdMob 不适用于 iPhone 7 和 7 Plus 等大屏幕设备的 Xamarin Form iOS

Cordova - 插件 Admob 免费显示仅测试广告

在科尔多瓦上使用 admob 的 Google 同意 SDK

Google Admob 广告最近停止展示

Unity Android READ_PHONE_STATE 权限

AdMob + 内容显示缓慢 + Google DFP