添加捆绑包标识符后,Google Map API无法正常工作 - iOS

时间:2015-05-20 05:19:27

标签: ios bundle google-places-api identifier

我是Google开发者控制台我创建了一个iOS密钥,如下所示: enter image description here

我想将此密钥限制为仅限一个应用,因此我“编辑允许的iOS应用”将我的捆绑ID添加到其中。我可以在项目目标的常规选项卡中轻松找到我的包ID,如下所示:

enter image description here

我不知道它是否区分大小写,但我从那里复制完全标识符以添加到密钥。如你所见,它不容错误。我也按照谷歌的指示,每行一个捆绑标识符(我只输入一行):

  

使用其中一个捆绑包接受来自iOS应用程序的请求   下面列出的标识符(可选)每行一个包标识符。   示例:com.example.MyApp

     

如果您将此留空,则可以从任何iOS接受请求   应用。在使用此密钥之前,请务必添加包标识符   在生产中。

此屏幕显示我启用了所有必要的服务,以确保:

enter image description here

我的问题是,每当我向密钥添加捆绑标识符时,我的应用程序就会停止工作。但是当我删除它时(现在“允许任何应用程序”如图所示),一切都恢复正常。

有人可以告诉我可能会导致什么原因吗?

更新:澄清更多:当我将我的软件包ID添加到开发者控制台中的密钥时,现在我仍然可以在我的应用程序中使用附近的搜索。但自动填充搜索和Google网址缩短功能已停止工作..

3 个答案:

答案 0 :(得分:2)

添加iOS Bundle ID时Autocomplete停止工作的原因是Google Places API Web Service特别不适合在iOS上使用。作为一个温和的提示,我建议你在本周晚些时候谷歌I / O发生之后捅Google Places API for iOS。 =)

答案 1 :(得分:1)

无论获取什么请求,403都应该与附加标题X-Ios-Bundle-Identifier一起发送,其中应该设置您的包ID。这似乎没有记录,我只通过链接之间的跳转找到它,请参阅this ...

答案 2 :(得分:0)

我也遇到了这个问题,并按照上面@zhywu的回答解决了该问题

利用URLSession / URLSessionDataTask的 Swift 5 代码如下:

if var urlComponents = URLComponents(string: "https://www.googleapis.com/...") {
            ...
            guard let url = urlComponents.url else { return }

            var request = URLRequest(url: url)
            request.setValue(Bundle.main.bundleIdentifier ?? "", forHTTPHeaderField: "X-Ios-Bundle-Identifier")

            dataTask = defaultSession.dataTask(with: request) { ... }
            ...
}