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からすべての可能な解決策を試しました。
これを両方ともdidFinishLaunchingWithOptionsで設定する必要があります
GMSPlacesClient.provideAPIKey("Your key")
GMSServices.provideAPIKey("Your key")
私は同じ問題を抱えていました。 GMSMapViewオブジェクトを作成しましたが、おそらくAPIキーが読み取られる前に初期化されました。そのため、viewDidLoadメソッド内に移動し、問題を解決しました。
前 :
class ViewController: ..... {
let mapView = GMSMapView()
後:
class ViewController: ..... {
var mapView : GMSMapView?
override viewDidLoad(){
mapView = GMSMapView()
Rajasekaran Gopalに追加するだけ
追加することを忘れないでください
import GoogleMaps
import GooglePlaces
その後
GMSPlacesClient.provideAPIKey("Your key")
GMSServices.provideAPIKey("Your key")
didFinishLaunchingWithOptions
すでにGMSMapView
クラスをインターフェースビルダーのビューに設定している場合は、GMSMapView
を含むviewControllerの初期化メソッドでGMSServices.provideAPIKey("API key")
を作成します。
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キーを作成します。
- 左側のサイドバーで、Credentialsを選択します。
- プロジェクトにiOS APIキーがまだない場合は、[認証情報を追加]> [APIキー]> [iOSキー]を選択して、今すぐ作成します。
- 表示されるダイアログで、アプリのバンドルIDを入力します。例:
com.example.hellomap
。作成をクリックします。
新しいiOS APIキーがプロジェクトのAPIキーのリストに表示されます。 APIキーは、次のような文字列です。
AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0
次のように、APIキーを
AppDelegate.m
に追加します。
- 次のインポートステートメントを追加します。
@import GoogleMaps;
- 次のコードをapplication:didFinishLaunchingWithOptions:メソッドに追加し、API_KEYをAPIキーに置き換えます。
[GMSServices provideAPIKey:@"API_KEY"];
私のアプリでは、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")
私の場合--didFinishLaunchingWithOptions--メソッドは呼び出されませんでした。Swift versionです。最初にこのメソッドが正常に呼び出されることを確認してください。私の場合、GMSPlacesClient.provideAPIKey( 「あなたのキー」)。ただし、最初のビューコントローラでGMSServicesを初期化できます(マップまたはそれに関連するオブジェクトが含まれていない場合)。
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:...]で初期化する必要があります