iOS端使用app:// scheme配置Google Maps域名保护密钥遇阻
Google Maps JS API 不支持
app://自定义协议作为允许来源 Google Maps JavaScript API的来源限制机制不认可app://这类自定义协议,它仅支持以下几种类型的来源:
- 标准HTTP/HTTPS协议(
http:///https://开头的域名) file://协议(用于本地加载的网页内容)- 特定的浏览器扩展/应用协议(比如
chrome-extension://)
所以你在iOS WebView中用app://scheme加载网页并调用API时,即使在控制台添加了app://com.domain,也会触发来源不允许的错误,这是符合官方规则的。
针对iOS WebView的场景,给你几个可行的解决思路:
- 映射HTTPS自定义域名:通过WKWebView的
WKURLSchemeHandler或者NSURLProtocol,将你的Web内容映射到一个https://开头的自定义域名(比如https://yourapp.local),然后把这个域名添加到Google Cloud的密钥允许列表中。这样WebView里的JS API会识别为合法的HTTPS来源。 - 改用file://协议:如果你的网页是本地资源,直接用
file://协议加载,然后在控制台添加file://到允许来源。注意:file://的限制比较宽泛,建议配合其他密钥保护措施(比如限制iOS应用的包名/签名)来提升安全性。 - 切换到原生SDK:考虑使用Google Maps iOS原生Places SDK替代WebView中的JS API,原生SDK可以通过配置应用的包名和签名来限制密钥使用,不仅避开了scheme的问题,安全性也更高。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

