Xamarin.iOS でのアプリ検索の機能強化

この記事では、Apple が iOS 10 のアプリ検索に対して行った機能強化と、それらを Xamarin.iOS で実装する方法について説明します。

iOS 10では、Appleは、クラウドソース ディープリンク、アプリ検索、検索の継続、検証結果の視覚化など、アプリ検索にいくつかの機能強化を行いました。 この記事では、Xamarin.iOS アプリでのこれらの機能の実装について説明します。

アプリ検索の機能強化について

iOS 10 の Core Spotlight は、アプリ検索に次のようないくつかの拡張機能を提供します。

  • クラウドソースのディープリンク人気度 (差分プライバシー) - 検索結果でディープリンクされたアプリ コンテンツを促進する方法を提供します。
  • アプリ内検索 - 新しい CSSearchQuery クラスを使用して、メール、メッセージ、メモ アプリの動作に似たアプリ内 Spotlight 検索機能を提供します。
  • 検索の継続 - ユーザーが Spotlight または Safari で検索を開始し、アプリを開き、その検索を続けられるようにします。
  • 検証結果の視覚化 - Apple の App Search API 検証ツールを使用すると、Web サイトのマークアップの視覚的な表現と、テスト実行時のディープ リンクが表示されるようになりました。
  • メッセージ アプリの画像共有 - メッセージ内で (メッセージ App Extension を介して) 共有するために提供される一般的なアプリ内イメージを Spotlight 検索に表示できるようにします。

以下のセクションでは、これらのトピックについて詳しく説明します。

iOS 10 では、アプリへの一般的なディープ リンクの頻度をカウントし、この情報を使用して検索結果内のアプリのコンテンツのランキングを向上させ、差分プライバシーを使用してユーザーの ID を保護するメカニズムを提供します。

NSUserActivity オブジェクトを使用してディープリンク URL を提供し、EligibleForPublicIndexing プロパティが true に設定されているアプリの場合、iOS 10 は差分プライバシー ハッシュのサブセットを Apple のサーバーに送信します。 この情報は、検索結果で一般的なアプリ内コンテンツを昇格させるために使用されます。

Xamarin.iOS アプリでのディープ リンクの実装の詳細については、NSUserActivity を使用した検索に関するドキュメントを参照してください。

アプリ内検索

新しい CSSearchQuery クラスを実装することで、アプリは Spotlight の検索と照合ルール テクノロジを提供して、ユーザーがアプリを離れることなく (メール、メッセージ、ノート アプリの動作と同様に) それ自体のコンテンツを検索できます。

通常、CSSearchQuery をサポートするアプリは、独自の個別の検索インデックスを維持する必要はありません。

検索の継続

iOS 9 では、Apple は検索 API (Core Spotlight、NSUserActivity、Web マークアップなど) を導入して、アプリ内のコンテンツの深い評価を提供し、ユーザーが Spotlight と Safari の両方の検索インターフェイスを使用してそのコンテンツを検索できるようにしました。 詳細については、新しい検索 API のドキュメントを参照してください。

iOS 10 Apple では、ユーザーが Spotlight または Safari で検索を開始し、アプリを開いたときに検索を続行できるようにすることで、この機能に基づいて構築されています。

この機能を実装するには、アプリの Info.plist ファイルを編集し、ブール型の CoreSpotlightContinuation キーを追加し、その値を YES に設定します。

検索結果 (NSUserActivity) を続けるユーザーに応答するには、AppDelegate.cs ファイルを編集して ContinueUserActivity メソッドをオーバーライドします。 次に例を示します。

public override bool ContinueUserActivity (UIApplication application, NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler)
{

    // Take action based on the activity type
    switch (userActivity.ActivityType) {
    case "com.xamarin.platform":
        // Restore the state of the app here...
        break;
    default:
        if (userActivity.ActivityType == CSSearchQuery.ContinuationActionType) {
            var search = userActivity.UserInfo.KeyForValue(CSSearchQuery.QueryString);
            // Continue user's search here...
        }
        break;
    }

    return true;
}

このコードでは、クエリ継続アクションの種類 (userActivity.ActivityType == CSSearchQuery.ContinuationActionType) を検索し、NSUserActivity クラスのユーザー情報ディクショナリ (userActivity.UserInfo.KeyForValue(CSSearchQuery.QueryString)) からユーザーの現在のクエリを読み取ります。 ここから、アプリはユーザーの検索を続行するためにアクションを実行する必要があります。

Xamarin.iOS アプリでの検索の操作の詳細については、Core Spotlight を使用した検索に関するドキュメントを参照してください。

検証結果の視覚化

Apple の App Search API 検証ツールでは、テストを実行するときに、Web サイトのマークアップとディープ リンク (Schema.org で定義されているマークアップなど) の視覚的な表現が表示されるようになりました。

検証ツールを使用すると、開発者は Applebot Web クローラがサイトに対してインデックスを作成した情報 (タイトル、説明、URL、その他のサポートされている要素など) を確認できます。

Web マークアップの操作の詳細については、Web マークアップを使用した検索に関するドキュメントを参照してください。

メッセージ アプリのイメージ共有

メッセージ アプリ拡張機能がメッセージで共有する画像を提供する場合、ユーザーがアプリを離れることなく、メッセージ内から人気のある画像のスポットライト検索を実行できるように拡張機能を構成できます。

この機能を有効にするには、次の操作を行います。

  1. メッセージ アプリ拡張機能を作成します。
  2. com.apple.developer.associated-domains をアプリのエンタイトルメントに追加し、メッセージ アプリ拡張機能が共有しているイメージをホストする Web ドメインの一覧を含めます。 ドメインごとに、spotlight-image-search サービスを指定します。
  3. イメージをホストしている Web サイトに apple-app-site-association ファイルを追加します。 このファイルには、 spotlight-image-search サービスのディクショナリが含まれ、アプリの ID (チーム ID またはアプリ ID プレフィックスの後にバンドル ID が続く) が含まれます。 このファイルには、Spotlight によってインデックスが作成され、一般的な画像検索に含まれる最大 500 個のパスとパターンを含めることができます。 詳細については、Apple の関連付けファイルの作成とアップロードに関するドキュメントを 参照してください。
  4. Applebot が Web サイトをクロールできるようにします。 Apple の Applebot に関するドキュメントを参照してください。

詳細については、メッセージ アプリの統合に関するドキュメントを参照してください。

まとめ

この記事では、Apple が iOS 10 の App Search に対して行った機能強化と、それらを Xamarin.iOS で実装する方法について説明しました。