包含 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
在科尔多瓦上使用 admob 的 Google 同意 SDK