gpt4 book ai didi

android - Phonegap 版本 : Whitelisting Google Map Domains for API v3

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:20 26 4
gpt4 key购买 nike

我在让 map 在两部真正的 Android 手机上正确显示方面遇到了一些问题——一部运行 2.2.2,一部运行 4.2.2。后者在 map 方面总是让我感到有些悲伤。我把它放在另一个线程中 here因为我已经部分解决了它。

注意:我在 Dreamweaver CS6 中使用 Phonegap Build。只是一个没有 list xml 文件的 config.xml。

现在我有另一个问题,我必须将所有域列入白名单才能使 map 在 4.2.2 上正常运行,我不知道为什么。最初我在我的 config.xml 中有这个:

<access origin="*.googleapis.com" />
<access origin="*.gstatic.com" />
<access origin="*.google.com" />
<access origin="maps.googleapis.com" />
<access origin="maps.gstatic.com" />
<access origin="mt0.googleapis.com" />
<access origin="mt1.googleapis.com" />
<access origin="csi.gstatic.com" />

虽然这对 Android 2.2.2 非常有效,但我会在 4.2.2 上遇到以下问题:

  • map 底部缺少最后一行图 block (如果我对 google maps src 使用 HTTPS)
  • 标记根本不会显示

通过将所有内容列入白名单,所有这些问题都消失了。但是我不想将所有内容列入白名单,所以有人知道我是否遗漏了什么吗?

非常感谢任何帮助。

编辑:据我所知,通过使用 *.googleapis.com,我还会包含其余类似的白名单域。但是,我在搜索中注意到有几次 iOS 要求明确列出域。虽然目前这可能不适用于此处,但我确实打算在 iOS 上使用此应用程序,所以我将其保留(除非有人告诉我它完全没用且不需要 ;-)。

////////更新 1////////

在 chrome 开发者工具的网络选项卡中倾诉之后,我提取了谷歌地图访问的所有 URL。通过明确说明它们中的每一个,一切正常,如下所示:

    <access origin="https://mts.googleapis.com" subdomains="true"/>
<access origin="https://mts0.googleapis.com" subdomains="true"/>
<access origin="https://mts1.googleapis.com" subdomains="true"/>
<access origin="https://maps.googleapis.com" subdomains="true"/>
<access origin="https://fonts.googleapis.com" subdomains="true"/>
<access origin="https://maps.gstatic.com" subdomains="true"/>
<access origin="https://csi.gstatic.com" subdomains="true"/>
<access origin="https://themes.googleusercontent.com" subdomains="true"/>

这些可能会发生变化,所以如果我可以在每个域前面使用通配符 * 会更好,但这不起作用。我尝试了以下两种方法,但均未成功:

    <access origin="*.googleapis.com" subdomains="true"/>
<access origin="*.gstatic.com" subdomains="true"/>
<access origin="*.googleusercontent.com" subdomains="true"/>


<access origin="https://*.googleapis.com" subdomains="true"/>
<access origin="https://*.gstatic.com" subdomains="true"/>
<access origin="https://*.googleusercontent.com" subdomains="true"/>

有人知道为什么我在这些情况下无法使用通配符吗?干杯。

////////更新 2/回答////////

经过多次实验,我找到了答案。看起来您必须非常具体地说明如何在 config.xml 中编写标签,尤其是在允许子域时 - 显然指定子域不适用于通配符,因此您需要两个标签 block 。我终于让两个设备都使用 https 使用以下命令正常工作:

    <access origin="*.google.com" />
<access origin="*.googleapis.com" />
<access origin="*.gstatic.com" />
<access origin="*.googleusercontent.com" />
<access origin="google.com" subdomains="true"/>
<access origin="googleapis.com" subdomains="true"/>
<access origin="gstatic.com" subdomains="true"/>
<access origin="googleusercontent.com" subdomains="true"/>

希望这对某人有用。我仍然不明白为什么它在旧版本的 Android 上运行良好。也许有人可以帮助启发我,如果他们有这种感觉?

最佳答案

白名单域的语法随着 PhoneGap 的版本而改变。如果您使用的是 3.1 或更高版本,请参阅此文档了解语法:http://docs.phonegap.com/en/3.1.0/guide_appdev_whitelist_index.md.html .我想这可能就是您的通配符不适合您的原因。

我正在使用以下工具,它可以在我的 PhoneGap 应用程序中显示我的 Google map :

<access origin="*://*.googleapis.com/*" subdomains="true" />
<access origin="*://*.gstatic.com/*" subdomains="true" />
<access origin="*://*.google.com/*" subdomains="true" />
<access origin="*://*.googleusercontent.com/*" subdomains="true" />

关于android - Phonegap 版本 : Whitelisting Google Map Domains for API v3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19380824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com