2015年5月31日日曜日

"App Indexing for iOS" Part 1: Set Up Your iOS App for App Indexing

2015・09・29のアップデート以降は下記の方法は非推奨になりました。
後ほど新しいほうの訳を出す予定。
iOSアプリのApp Indexing設定その①
アプリ側設定。
出典は「 Set Up Your iOS App for App Indexing」 
=============




iOSアプリのApp Indexing設定






iOSアプリをApp Indexingに対応させるためには、アプリに以下の設定を行ってください。
  1. カスタムURLスキームのサポートを宣言
  2. カスタムスキームを利用したURLの処理
  3. 検索からのディープリンクにバックバーのサポートを追加

1.カスタムURLスキームのサポートを宣言

Info.plistを変更して、一つ以上のカスタムURLスキームをサポートしていることを宣言します。また、App IndexingをサポートするカスタムURLスキームも一つ宣言します。以下の画像は、gizmos スキームとApp Indexing 用スキームのサポートを宣言するInfo.plistです。
gizmos ・gsd-gizmosの二つのURLスキームを宣言しています。
実際に設定する時にはgizmosをアプリが実際に利用している、ウェブサイト上で設定したものと同じURLスキームと置き換えてください。
クリーム色の部分でApp Indexing用のスキームであるgsd-gizmos. のサポートを宣言しています。実際に設定する時にはgsd-gizmos gsd-{scheme}( {scheme} には上記gizmosで宣言したのと同じURLスキームを代入)と置き換えてください。

2.カスタムスキームを利用したURLの処理

Info.plistでアプリが利用するカスタムスキームを宣言したら、AppDelegateが「スキームを利用したURLを処理するための正しいメソッド」を実装していることを確認します。詳しくはAppleの「handling inter-app communication」をご覧ください。
ここまでの手順を終えると、Googleからアプリを訪問するのに使われるgsd-{scheme}形式でのディープリンクに対して、Google SDKでサポートを追加できます。Google SDKではたった一行のコードでバックバー(検索画面に戻るバー)を追加できます。iOS向けApp Indexingの利用には、これを実装することが必須です。
  1. CocoaPodsをインストールします (すでにインストールしていれば省略可) 
  2. Podfileに以下の一行を記載し、GoogleAppIndexing Podを dependencyとして追加します。
    pod 'GoogleAppIndexing', '~> 1.0.0' 
  3. $ pod installを利用し、GoogleAppIndexing Pod をXcodeプロジェクトに追加します。 詳しくは「 Using Cocoapods」をご覧ください
  4. コードを更新すると、SDKの利用とディープリンクによる訪問を処理するのに適切なAPIコールが行われるようになります。
    #import 
    ...
    - (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
      sourceApplication:(NSString *)sourceApplication
             annotation:(id)annotation {
      NSURL *sanitizedURL = [GSDDeepLink handleDeepLink:url];
      // Navigate into the appropriate view in the app using sanitizedURL
      ...
    
      return YES;
    }

どういう仕組み?

① APIコールが頭にgsd-がついているURL(=Googleから訪問しているURL)をパースし、スキームを確認します。
② SDKが画面最上部にバックバーを追加し、ユーザーがGoogle検索結果画面に戻れるようにします。アプリにはApp Indexing用のパラメータを省いたURLを渡します。上記の例だとgsd-が省略され、アプリはgizmos://以下のURLを受け取ります。Google以外から訪問したURLに対しては、APIコールは何の効果も引き起こしません。
アプリが上記メソッドを最初に呼び出し、その後の処理・ビューへの誘導にはAPIが返したURLを利用する必要があります。
バックバーは「ユーザーが一定時間バックバーを利用しない」あるいは「ユーザーがホーム画面や他アプリに移動」した場合に消えます。
ios-appフォーマットでのiOSアプリ用URIの場合、APIでのディープリンクは以下のようになります。
  • iOS App URI:ios-app://{itunes_id}/{scheme}/{host_path}
  • GSD Deep Link:
    gsd-{scheme}://{itunes_id}/?google-deep-link=url-encode({scheme}://{host_path})&google-callback-url=url-encode(callback-url)&google-min-sdk-version=version
URLフォーマットの詳細については次ページの「ウェブサイトにiOSのディープリンクを設定」をご確認ください。
ディープリンクとコールバックURIはURLエンコードしてください; +[GSDDeepLink handleDeepLink:] がデコードします。
次はウェブサイトにiOSのディープリンクを設定」を確認し、アプリ内で設定したディープリンクをGoogleに通知します。