ドキュメント

ウィジェットでの位置情報へのアクセス

位置情報をウィジェットのプレゼンテーションに組み込むことで、状況に応じてより関連性の高い情報がウィジェットに表示されるようにします。

最新の英語ドキュメント

Accessing Location Information in Widgets

概要

ユーザーの位置情報を考慮することで、より関連性が高く有益な情報をウィジェットに表示できます。ウィジェットのExtensionは継続的に実行されるわけではないため、ウィジェットで位置情報サービスを使用するにはいくつかの追加手順が必要です。

ウィジェットでの位置情報サービスの有効化

ウィジェットで位置情報サービスを使用するには、以下の手順を実行します。

  • NSWidgetWantsLocationキーをWidget ExtensionのInfo.plistファイルに追加します。

  • ウィジェットを含むアプリのInfo.plistファイルに、関連する目的文字列を追加します。

リクエストする位置情報サービスへのアクセス許可の選択」で説明されているように、できるだけアプリ利用時(When In Use)の承認をリクエストしてください。

ウィジェットからの位置情報へのアクセス

ユーザーが位置情報を使用するウィジェットを追加すると、システムは、アプリが位置情報にアクセスすることについての許可をウィジェットにも適用するかどうか、ユーザーに確認を求めます。ウィジェットが位置情報の更新を受け取れるかどうかは、authorizedForWidgetUpdatesを使用して判断できます。ユーザーは「設定」>「プライバシー」>「位置情報サービス」で許可の設定をいつでも変更できます。

ウィジェットによる位置情報の使用をユーザーが許可すると、システムは、ウィジェットが表示されてからの短い間を「使用中」とみなします。この使用中の間にシステムがウィジェットの表示を更新すると、ウィジェットは位置情報にアクセスできます。たとえば、ユーザーがホーム画面にウィジェットを追加して、アプリの位置情報へのアクセス許可をウィジェットにも適用した直後、ウィジェットはユーザーの位置情報を利用できます。

しばらくの間ウィジェットが表示されていないと、システムはウィジェットを使用中とみなさなくなり、位置情報の更新の提供を停止します。WidgetKitがウィジェットのビューを再度読み込んだ時、authorizedForWidgetUpdatestrueであるのにウィジェットが位置情報の更新を受け取らない場合は、ユーザーの位置情報が現在利用できないことを示していると考えるとよいでしょう。これは、authorizedForWidgetUpdatesfalseの場合とは異なります。falseの場合は、ウィジェットによる位置情報更新の受け取りをユーザーが許可していないことを示します。

現実世界のシナリオにおけるウィジェットのテスト

ウィジェットはタイムラインに基づいて更新され、ウィジェットが使用される状況は変化するため、位置情報を使用するウィジェットを実際のシナリオでテストすることが重要です。たとえば、次のようなテストシナリオを作成します。

  • ウィジェットの追加時に、アプリが位置情報にアクセスすることについての許可をウィジェットにも適用する。

  • ウィジェットの追加時に、アプリが位置情報にアクセスすることについての許可をウィジェットに適用しない。

  • ウィジェットが追加された後、「設定」>「プライバシー」>「位置情報サービス」でアプリに対する許可を変更する。

  • ウィジェットが追加された後、「設定」>「プライバシー」>「位置情報サービス」でウィジェットが位置情報にアクセスすることについての許可を変更する。

  • ホーム画面の頻繁に表示されるページと頻繁に表示されないページの両方にウィジェットを追加する。

ウィジェットが1日に受け取る更新の数は限られるため、複数日にわたってウィジェットをテストしてください。

位置情報利用の有無に応じて複数のWidget Extensionに分ける

アプリで複数のウィジェットを提供しており、位置情報を使用するウィジェットがその一部である場合は、ウィジェットを複数のExtensionに分けます。位置情報を使用するウィジェットを含むExtensionに、NSWidgetWantsLocationを追加します。これにより、位置情報を使用するウィジェットについてのみユーザーにプロンプトが表示されるため、より状況に適したユーザー体験を提供できます。

詳しくは「Widget Extensionの作成」の「App Extensionでの複数のウィジェットの宣言」セクションを参照してください。