iOS で Google プロジェクトから移行

Google I/O 2016 では、モバイルアプリを構築するための新たなツールとして Firebase をご紹介しました。Firebase は、既存の Google デベロッパーの複数の技術に取って代わるだけでなく、多くの新機能が追加されています。このガイドでは、既存の設定ツールまたは Google API コンソールを使用して作成したプロジェクトから、アプリを更新するプロセスについて説明します。

Firebase の詳細については、このドキュメントを参照してください。既存の Firebase.com プロジェクトからアップグレードを行う場合は、アップグレード ガイドを参照してください。移行作業に問題が発生した場合は、デベロッパー サポートまでお問い合わせください。

コンソール プロジェクトを移行

Firebase では、API 設定および認証情報を、すべて単一の設定ファイルで管理しています。このファイルは、Android では google-services.json、iOS では GoogleService-Info.plist と名付けられています。このファイルは以下の手順でダウンロードできます。
  • Firebase を Google Developer プロジェクトへ追加 Firebase コンソールに移動して、[Google プロジェクトをインポート] を選択します。
  • 既存のプロジェクトを選択します。
  • App Invites を使用している場合は、Dynamic Links パネルを選択して警告に同意します。これにより Firebase Invites が有効になります。
  • Firebase でプロジェクトを設定します。
    1. 左側のメニューの歯車をクリックし、[プロジェクトの設定] を選択します。
    2. 各 iOS アプリについてこれらを選択し、App Store IDチーム ID を追加します。
    3. プロジェクト内の各アプリについて、更新済みの google-service.json または GoogleService-Info.plist ファイルを Firebase console からダウンロードします。ここには、Google アナリティクス、クラウド メッセージング、Google ログインで必要となる情報が含まれています。

CocoaPods の設定を更新

ほとんどのサービスは、Google ポッドから Firebase ポッドに移動しますが、Google/SignInGoogle/Analytics は変更されません。プロファイルを以下のように更新する必要があります。

古い依存関係 新しい依存関係
Google/Core pod 'Firebase/Core'
Google/SignIn Google/SignIn
Google/Analytics Google/Analytics
Google/CloudMessaging pod 'Firebase/Messaging'
Google/AppInvite pod 'Firebase/Invites'
Google/AdMob pod 'Firebase/AdMob'

Firebase SDK の設定

AppDelegate で使用されている設定コードを Google ポッド バージョンから Firebase ポッド バージョンに更新する必要があります。これにより、Firebase のポッド ライブラリおよび Google のポッド ライブラリの両方が設定されます。

変更前
  1. Firebase のヘッダー ファイルをインポートします。

    Swift

    
    // In Bridging header.
    #import <Google/YOUR_SERVICE.h>
    

    Objective-C

    
    #import <Google/YOUR_SERVICE.h>
    
  2. Swift

    
    var configureError:NSError?
    GGLContext.sharedInstance().configureWithError(&configureError)
    assert(configureError == nil, "Error configuring Google services: \(configureError)")
    

    Objective-C

    
    NSError* configureError;
    [[GGLContext sharedInstance] configureWithError:&configureError];
    NSAssert(!configureError, @"Error configuring Google services: %@", configureError);
    
変更後
  1. Firebase モジュールを UIApplicationDelegate サブクラスにインポートします。

    Swift

    
    import Firebase
    

    Objective-C

    
    @import Firebase;
    
  2. FIRApp 共有インスタンスを設定します。通常はアプリケーションの application:didFinishLaunchingWithOptions: メソッドを使用します。

    Swift

    
    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective-C

    
    // Use Firebase library to configure APIs
    [FIRApp configure];
    

Google App Invites を Firebase Invites にアップグレード

Podfile を更新します。

変更前

pod 'Google/AppInvite'
変更後

pod 'Firebase/Invites'

Invites 受信コードを更新

application:didFinishLaunchingWithOptions メソッドの AppDelegate で:

変更前

Swift


GINInvite.applicationDidFinishLaunching()

Objective-C


  [GINInvite applicationDidFinishLaunching];
変更後

Swift


FIRInvites.applicationDidFinishLaunchingWithOptions(launchOptions)

Objective-C


  [FIRInvites applicationDidFinishLaunchingWithOptions:launchOptions];

application:openURL:sourceApplication:annotation: メソッドの AppDelegate で:

変更前

Swift


 let invite = GINInvite.handleURL(url, sourceApplication:sourceApplication, annotation:annotation)

      if (invite != nil) {
        GINInvite.completeInvitation()
        let matchType =
            (invite.matchType == GINReceivedInviteMatchType.Weak) ? "Weak" : "Strong"
         // ... process invite.

Objective-C


GINReceivedInvite *invite = [GINInvite handleURL:url
                                 sourceApplication:sourceApplication
                                        annotation:annotation];
  if (invite) {
    [GINInvite completeInvitation];
    NSString *matchType =
        (invite.matchType == kGINReceivedInviteMatchTypeWeak) ? @"Weak" : @"Strong";
    // ... process invite
変更後

Swift


if let invite = FIRInvites.handleURL(url, sourceApplication:sourceApplication, annotation:annotation) as? FIRReceivedInvite {
        let matchType =
            (invite.matchType == FIRReceivedInviteMatchType.Weak) ? "Weak" : "Strong"
            // ... process invite

Objective-C


FIRReceivedInvite *invite =
      [FIRInvites handleURL:url sourceApplication:sourceApplication annotation:annotation];
  if (invite) {
    NSString *matchType =
        (invite.matchType == FIRReceivedInviteMatchTypeWeak) ? @"Weak" : @"Strong";
    // ... process invite.
  }

Invites 送信コードを更新

UIViewController で実装するプロトコルを更新

変更前

GINInviteDelegate
変更後

FIRInviteDelegate

実際のコールバック メソッドは変更ありません。

Invite を送信

変更前

Swift


GINInvite.inviteDialog()

Objective-C


[GINInvite inviteDialog];
変更後

Swift


FIRInvites.inviteDialog()

Objective-C


[FIRInvites inviteDialog];

AdMob by Google をアップグレード

CocoaPods の依存関係を更新

変更前

pod 'Google/AdMob'
変更後

pod 'Firebase/AdMob'

コードを変更する必要はありません。

Google Cloud Messaging(GCM)を Firebase Cloud Messaging(FCM)にアップグレード

既存の GCM 統合の使用を継続することは可能ですが、Notifications Composer GUI を活用したい場合は、FCM へのアップグレードが必要になります。FCM を利用するための iOS GCM アプリのアップグレードの完全ガイドを参照してください。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。