谷歌地图API在添加捆绑标识后不工作-iOS

谷歌地图API在添加捆绑标识后不工作-iOS,ios,bundle,google-places-api,identifier,Ios,Bundle,Google Places Api,Identifier,I谷歌开发者控制台I创建了一个iOS密钥,如下所示: 我想将此密钥仅限于一个应用程序,因此我“编辑允许的iOS应用程序”将我的捆绑包Id添加到其中。在我的项目目标的“常规”选项卡中很容易找到我的捆绑包Id,如下所示: 我不知道它是否区分大小写,但我从那里准确地复制了要添加到密钥中的标识符。正如你所看到的,这是不会错的。我还按照谷歌的指示,每行一个捆绑标识(我只输入一行): 使用捆绑包之一接受来自iOS应用程序的请求 下面列出的标识符(可选)每行一个捆绑标识符。 示例:com.Example.

I谷歌开发者控制台I创建了一个iOS密钥,如下所示:

我想将此密钥仅限于一个应用程序,因此我“编辑允许的iOS应用程序”将我的捆绑包Id添加到其中。在我的项目目标的“常规”选项卡中很容易找到我的捆绑包Id,如下所示:

我不知道它是否区分大小写,但我从那里准确地复制了要添加到密钥中的标识符。正如你所看到的,这是不会错的。我还按照谷歌的指示,每行一个捆绑标识(我只输入一行):

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

或者,如果您将此项留空,将接受来自任何iOS的请求 应用请确保在使用此键之前添加捆绑标识 在生产中

此屏幕显示我启用了所有必要的服务,可以肯定:

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

有人能告诉我这可能是什么原因吗


更新:为了澄清更多:当我将我的捆绑ID添加到开发者控制台中的密钥时,现在我仍然可以在我的应用程序中使用附近的搜索。但是Autocomplete搜索和Google URL shortener已经停止工作。

当您添加iOS捆绑包ID时,Autocomplete停止工作的原因是,
Google Places API Web Service
不是专门为在iOS上使用而设计的。作为一个温和的暗示,我建议你在本周晚些时候谷歌I/O发生后再四处看看

收到403的任何请求都应发送附加头
X-Ios-Bundle-Identifier
,其中应设置Bundle id。这似乎没有文档记录,我只是通过在链接之间跳转才发现的,请看…

我也遇到了这个问题,并按照上面@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) { ... }
            ...
}