Xamarin.iOS で Web マークアップを使用して検索する
(アプリ内からだけでなく) Web サイト経由でコンテンツにアクセスできるアプリの場合、Web コンテンツは、Apple によってクロールされ、ユーザーの iOS 9 デバイス上のアプリへのディープ リンクを提供する特別なリンクでマークできます。
iOS アプリでモバイル ディープ リンクが既にサポートされていて、Web サイトでアプリ内のコンテンツへのディープ リンクが表示されている場合、Apple の Applebot Web クローラーによってこのコンテンツのインデックスが作成され、自動的にクラウド インデックスに追加されます。
Apple では、これらの結果を Spotlight 検索と Safari 検索の結果に表示します。 ユーザーが次のいずれかの結果をタップする (アプリがインストールされている) と、アプリ内のコンテンツが表示されます。
Web コンテンツのインデックス作成の有効化
Web マークアップを使用してアプリのコンテンツを検索できるようにするには、次の 4 つの手順が必要です。
- iTunes Connect のサポートまたはマーケティング Web サイトとして定義することで、Apple がアプリの Web サイトを検出してインデックスを作成できることを確かめます。
- モバイル ディープ リンクを実装するために必要なマークアップがアプリの Web サイトに含まれていることを確かめます。 以下のセクションで詳細をご覧ください。
- iOS アプリでディープ リンク処理を有効にします。
- アプリの Web サイトで表示される構造化データのマークアップを追加して、豊富で魅力的な結果をエンド ユーザーに提供します。 この手順は厳密には必須ではありませんが、Apple で強く推奨されています。
以降のセクションでは、これらの手順について詳しく説明します。
アプリの Web サイトを検出可能にする
Apple でアプリの Web サイトを見つける最も簡単な方法は、iTunes Connect 経由でアプリを Apple に提出するときに、サポートまたはマーケティング Web サイトとして使用することです。
スマート アプリ バナーの使用
Web サイトにスマート アプリ バナーを提供して、アプリへの明確なリンクを示します。 アプリがまだインストールされていない場合、Safari ではユーザーにアプリのインストールを求めるメッセージが自動的に表示されます。 それ以外の場合、ユーザーはビュー リンクをタップして、Web サイトからアプリを起動できます。 たとえば、スマート アプリ バナーを作成するために、次のコードを使用できます。
<meta name="AppName" content="app-id=123456, app-argument=http://company.com/AppName">
詳細については、Apple の「スマート アプリ バナーを使用したアプリのプロモーション」のドキュメントを参照してください。
ユニバーサル リンクの使用
iOS 9 の新機能であるユニバーサル リンクでは、以下を提供することで、スマート アプリ バナーや既存のカスタム URL スキームに代わる優れた代替手段が提供されます。
- 一意 – 同じ URL を複数の Web サイトで要求することはできません。
- 安全 – Web サイトを自分が所有しており、自分のアプリに有効にリンクされていることを保証する署名付き証明書が Web サイトには必要です。
- 柔軟 – エンド ユーザーは、URL で Web サイトとアプリのどちらを起動するかを制御できます。
- ユニバーサル – 同じ URL を使用して、Web サイトとアプリのコンテンツの両方を定義できます。
Twitter カードの使用
Twitter カードを使用して、アプリのコンテンツへのディープ リンクを提供できます。 次に例を示します。
<meta name="twitter:app:name:iphone" content="AppName">
<meta name="twitter:app:id:iphone" content="AppNameID">
<meta name="twitter:app:url:iphone" content="AppNameURL">
詳細については、Twitter の Twitter カード プロトコルに関するドキュメントを参照してください。
Facebook アプリ リンクの使用
Facebook アプリ リンクを使用して、アプリのコンテンツへのディープ リンクを提供できます。 次に例を示します。
<meta property="al:ios:app_name" content="AppName">
<meta property="al:ios:app_store_id" content="AppNameID">
<meta property="al:ios:url" content="AppNameURL">
詳細については、Facebook のアプリ リンクに関するドキュメントを参照してください。
ディープ リンクを開く
Xamarin.iOS アプリでディープ リンクを開いて表示するためのサポートを追加する必要があります。 AppDelegate.cs ファイルを編集し、OpenURL
メソッドをオーバーライドしてカスタム URL 形式を処理します。 次に例を示します。
public override bool OpenUrl (UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
// Handling a URL in the form http://company.com/appname/?123
try {
var components = new NSUrlComponents(url,true);
var path = components.Path;
var query = components.Query;
// Is this a known format?
if (path == "/appname") {
// Display the view controller for the content
// specified in query (123)
return ContentViewController.LoadContent(query);
}
} catch {
// Ignore issue for now
}
return false;
}
上記のコードでは、/appname
を含む URL を探し、query
の値 (この例では 123
) をアプリのカスタム ビュー コントローラーに渡して、要求されたコンテンツをユーザーに表示します。
構造化データを使用した豊富な結果の提供
構造化データ マークアップを含めることで、タイトルや説明だけでなく、豊富な検索結果をエンド ユーザーに提供できます。 構造化データ マークアップを使用して、画像、アプリ固有のデータ (評価など) と結果に対するアクションを含めます。
豊富な結果はより魅力的であり、より多くのユーザーに対話を求めることで、クラウドベースの検索インデックスのランキングを向上させるのに役立つ場合があります。
構造化データ マークアップを提供する 1 つのオプションは、Open Graph を使用することです。 次に例を示します。
<meta property="og:image" content="http://company.com/appname/icon.jpg">
<meta property="og:audio" content="http://company.com/appname/theme.m4a">
<meta property="og:video" content="http://company.com/appname/tutorial.mp4">
詳細については、Open Graph Web サイトを参照してください。
構造化データ マークアップのもう 1 つの一般的な形式は、schema.org の Microdata 形式です。 次に例を示します。
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
<span itemprop="ratingValue">4** stars -
<span itemprop="reviewCount">255** reviews
schema.org の JSON-LD 形式で同じ情報を表すことができます。
<script type="application/ld+json">
"@content":"http://schema.org",
"@type":"AggregateRating",
"ratingValue":"4",
"reviewCount":"255"
</script>
以下に、エンド ユーザーに豊富な検索結果を提供する Web サイトのメタデータの例を示します。
Apple は現在、schema.org から次のスキーマの種類をサポートしています。
- AggregateRating
- ImageObject
- InteractionCount
- オファー
- 組織
- PriceRange
- Recipe
- SearchAction
これらのスキームの種類の詳細については、schema.org を参照してください。
構造化データを使用したアクションの提供
特定の種類の構造化データを使用すると、検索結果をエンド ユーザーが操作できるようになります。 現在、次のアクションがサポートされています。
- 電話番号をダイヤルする。
- 地図で特定の住所へのルート案内を表示する。
- オーディオまたはビデオ ファイルを再生する。
たとえば、電話番号をダイヤルするアクションを定義すると、次のようになります。
<div itemscope itemtype="http://schema.org/Organization">
<span itemprop="telephone">(408) 555-1212**
この検索結果がエンド ユーザーに示されると、結果に小さな電話アイコンが表示されます。 ユーザーがアイコンをタップすると、指定された番号に電話がかけられます。
次の HTML では、検索結果からオーディオ ファイルを再生するアクションを追加します。
<div itemscope itemtype="http://schema.org/AudioObject">
<span itemprop="contentUrl">http://company.com/appname/greeting.m4a**
最後に、次の HTML では、検索結果からルート案内を表示するアクションを追加します。
<div itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">1 Infinite Loop**
<span itemprop="addressLocality">Cupertino**
<span itemprop="addressRegion">CA**
<span itemprop="postalCode">95014**
詳細については、Apple の アプリ検索開発者向けサイトを参照してください。