web-dev-qa-db-ja.com

例外:iOS向けGoogle Maps SDKは、使用する前に[GMSServices serveAPIKey:...]で初期化する必要があります

Swift 2.0を使用してプロジェクトにGoogle Maps SDKを実装しようとしています。これに従いますが、これを実行すると、アプリで次のエラーが発生します。

2015-08-25 19:05:17.337 googleMap[1919:54102] *** Terminating app due to uncaught exception 'GMSServicesException', reason: 'Google Maps SDK for iOS must be initialized via [GMSServices provideAPIKey:...] prior to use
*** First throw call stack:
(
    0   CoreFoundation    0x00000001058499b5 __exceptionPreprocess + 165
...
...
...
    31  UIKit             0x000000010606699e UIApplicationMain + 171
    32  googleMap         0x00000001034b720d main + 109
    33  libdyld.dylib     0x0000000107fba92d start + 1
    34  ???               0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

StackOverflowからすべての可能な解決策を試しました。

9
iBeginner

これを両方ともdidFinishLaunchingWithOptionsで設定する必要があります

GMSPlacesClient.provideAPIKey("Your key")
GMSServices.provideAPIKey("Your key")
27

私は同じ問題を抱えていました。 GMSMapViewオブジェクトを作成しましたが、おそらくAPIキーが読み取られる前に初期化されました。そのため、viewDidLoadメソッド内に移動し、問題を解決しました。

前 :

class ViewController: ..... {

let mapView = GMSMapView()

後:

class ViewController: ..... {

var mapView : GMSMapView?

override viewDidLoad(){
    mapView = GMSMapView()
16
Jasveer

Rajasekaran Gopalに追加するだけ

追加することを忘れないでください

import GoogleMaps
import GooglePlaces

その後

GMSPlacesClient.provideAPIKey("Your key")
GMSServices.provideAPIKey("Your key")

didFinishLaunchingWithOptions

13
Vu Tran

すでにGMSMapViewクラスをインターフェースビルダーのビューに設定している場合は、GMSMapViewを含むviewControllerの初期化メソッドでGMSServices.provideAPIKey("API key")を作成します。

4
Pavel Bondar

SwiftのGoogleマップチュートリアルは次のとおりです。

http://www.appcoda.com/google-maps-api-tutorial/

以下は、Googleマップのドキュメントからの引用です。

ステップ5:iOS APIキーを取得します

APIキーを使用すると、アプリケーションのAPIの使用状況を監視でき、必要に応じてGoogleがアプリケーションについて連絡できるようになります。キーは無料で、iOS向けGoogle Maps SDKを呼び出すすべてのアプリケーションで使用でき、無制限の数のユーザーをサポートします。アプリケーションのバンドルIDを指定して、Google Developers ConsoleからAPIキーを取得します。

プロジェクトにiOSアプリケーションのキーがまだない場合は、次の手順に従って、Google Developers ConsoleからAPIキーを作成します。

  1. 左側のサイドバーで、Credentialsを選択します。
  2. プロジェクトにiOS APIキーがまだない場合は、[認証情報を追加]> [APIキー]> [iOSキー]を選択して、今すぐ作成します。
  3. 表示されるダイアログで、アプリのバンドルIDを入力します。例:com.example.hellomap
  4. 作成をクリックします。

    新しいiOS APIキーがプロジェクトのAPIキーのリストに表示されます。 APIキーは、次のような文字列です。

    AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0

  5. 次のように、APIキーをAppDelegate.mに追加します。

    • 次のインポートステートメントを追加します。

    @import GoogleMaps;

    • 次のコードをapplication:didFinishLaunchingWithOptions:メソッドに追加し、API_KEYをAPIキーに置き換えます。

    [GMSServices provideAPIKey:@"API_KEY"];

ソース

4
emotality

私のアプリでは、AppDelegate -didFinishLaunchingWithOptionsでGMSPlacesClientにキーを提供しました

Ex:
@import GooglePlaces;
@import GoogleMaps; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [GMSServices provideAPIKey:@"You key"];
    [GMSPlacesClient provideAPIKey:@"Your key"];
}

Swiftの場合:

import GoogleMaps
import GooglePlaces

//in application(_:didFinishLaunchingWithOptions:)

GMSServices.provideAPIKey("YOUR_API_KEY")
GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
3
iOS

私の場合--didFinishLaunchingWithOptions--メソッドは呼び出されませんでした。Swift versionです。最初にこのメソッドが正常に呼び出されることを確認してください。私の場合、GMSPlacesClient.provideAPIKey( 「あなたのキー」)。ただし、最初のビューコントローラでGMSServicesを初期化できます(マップまたはそれに関連するオブジェクトが含まれていない場合)。

1
iman kazemayni

AppDelegateチェックプロジェクトでProvideAPIKeyをスキップしています

Your_PROJECT-> ios->ランナー-> AppDelegate.m

ファイルコードを以下のスニペットに置き換えて、APIKEYを追加します

#include "AppDelegate.h"
#include "GeneratedPluginRegistrant.h"
#import "GoogleMaps/GoogleMaps.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GMSServices provideAPIKey:@"GOOGLE_API_KEY"];
  [GeneratedPluginRegistrant registerWithRegistry:self];
  return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end

Google Maps SDK for iOSは、[GMSServices serveAPIKey:...]で初期化する必要があります

0
Hemant Sharma