Хорошо, я должен быть невыносимым новичком в программировании iOS, используя API или вообще используя XCode, потому что очевидно, что изменение API-ключей в моей программе на любой вид Restricted API Key нарушает мою программу.
Я создаю свое приложение, используя флаттер (пишу большую часть кода на VSCode).
В моем pubspe c .yaml у меня есть следующие зависимости (только если это актуально).
dependencies:
flutter:
sdk: flutter
firebase_auth: ^0.15.4
google_sign_in: ^4.1.4
firebase_core: 0.4.4
google_maps_flutter: ^0.5.24+1
geolocator: ^5.3.0
flutter_google_places: ^0.2.4
geocoder: ^0.2.1
http: ^0.12.0+4
intl: ^0.16.1
Если я использую ключ неограниченного веб-API для своей программы, как googleMapKay У меня нет проблем, и следующий код работает отлично.
Future<void> _originAutocomplete() async {
Prediction p = await PlacesAutocomplete.show(
context: context,
apiKey: googleMapKey,
mode: Mode.overlay,
language: "en",
location: new Location(last_known_position.latitude, last_known_position.longitude),
radius: 100000,
components: []);
if (p == null) {
print('p is null');
}
originSelected(p);
}
Если, однако, я использую ограниченный API-ключ ios -app для той же строки, p внезапно становится нулевым. Сейчас я использую firebase и правильно включил GoogleServices.plist в программу. Я также обновил API-ключ в своем AppDelegate.swift в XCode, а также обновил API-ключ в самой программе.
Я тестировал его на различных устройствах, iphone se, 5s, 8+ и на симуляторах для ipad pro 12.9 "(третье поколение) и iphone 11 pro max. Во всех случаях у меня одинаковая ошибка, и она исправляется при использовании неограниченного веб-API, который Я не могу использовать в окончательной сборке продукта.
Я также проверил, что Restricted API-Key настроен на ограничение только через приложения iOS, и что идентификатор пакета программы правильно установите внутри ограничения Google API-Key (и что есть только ограничения приложений, нет API-ограничений). Поэтому я не думаю, что это проблема, но если вы можете показать мне способ тестирования, то я бы спасибо! После небольшого тестирования я обнаружил, что копия ключа внутри файла AppDelegate, кажется, не имеет значения, так что его можно без проблем ограничить.
После просмотра документации n для flutter_google_places, по-видимому, это имеет врожденную зависимость для google_maps_webservices, которая требует веб-API для работы. (Если я правильно понимаю, это означает неограниченный ключ?). Это говорит о том, что «правильной» отраслевой передовой практикой будет использование прокси-сервера?
Я не на 100% знаком с этим процессом, или с тем, как это сделать, или если есть какой-то простой или легкий методы, чтобы это работало, поэтому любая помощь, которую вы можете оказать, будет ОЧЕНЬ благодарна!