我是Google开发者控制台我创建了一个iOS密钥,如下所示:
我想将此密钥限制为仅限一个应用,因此我“编辑允许的iOS应用”将我的捆绑ID添加到其中。我可以在项目目标的常规选项卡中轻松找到我的包ID,如下所示:
我不知道它是否区分大小写,但我从那里复制完全标识符以添加到密钥。如你所见,它不容错误。我也按照谷歌的指示,每行一个捆绑标识符(我只输入一行):
使用其中一个捆绑包接受来自iOS应用程序的请求 下面列出的标识符(可选)每行一个包标识符。 示例:com.example.MyApp
如果您将此留空,则可以从任何iOS接受请求 应用。在使用此密钥之前,请务必添加包标识符 在生产中。
此屏幕显示我启用了所有必要的服务,以确保:
我的问题是,每当我向密钥添加捆绑标识符时,我的应用程序就会停止工作。但是当我删除它时(现在“允许任何应用程序”如图所示),一切都恢复正常。
有人可以告诉我可能会导致什么原因吗?
更新:澄清更多:当我将我的软件包ID添加到开发者控制台中的密钥时,现在我仍然可以在我的应用程序中使用附近的搜索。但自动填充搜索和Google网址缩短功能已停止工作..
答案 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) { ... }
...
}