翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Android アプリケーションの作成
Amazon Location Service を使用して iOS アプリケーションを構築するには、次の手順に従います。
GitHub
AWS アカウントの準備ができたら、Amazon Location Service リソースを生成できます。これらのリソースは、提供されたコードスニペットの実行に不可欠です。
注記
AWS アカウントをまだ作成していない場合は、AWS アカウントを作成
まず、Amazon Cognito アイデンティティプール ID を作成する必要があります。以下の手順に従ってください。
-
AWS コンソールで、Amazon Cognito サービスに移動し、左側のメニューから ID プールを選択し、ID プールの作成を選択します。
-
[ゲストアクセス] がオンになっていることを確認し、[次へ] を押して続行します。
-
次に、新しい IAM ロールを作成するか、既存の IAM ロールを使用します。
-
アイデンティティプール名を入力し、次の手順で作成するマップとトラッカーの Amazon Location
(geo)リソースにアイデンティティプールがアクセスできることを確認します。
次に、 AWS Amazon Location コンソールでマップを作成してスタイル設定する必要があります。次の手順を使用します。
-
Amazon Location コンソールの [マップ]
セクションに移動し、[マップを作成] を選択して使用可能なマップスタイルをプレビューします。 -
新しいマップリソースに名前と説明を付けます。後からチュートリアルで使用するため、マップリソースに割り当てた名前を記録しておいてください。
-
マップスタイルを選択する際は、マップデータプロバイダーを考慮してください。詳細については、AWS サービス利用規約
の第 82 項を参照してください。 -
Amazon Location の利用規約
に同意し、[マップを作成] を選択します。マップを作成したら、任意の方向にズームイン、ズームアウト、またはパンしてマップを操作できます。
Amazon Location コンソールを使用してトラッカーを作成するには
-
左のナビゲーションペインから、[トラッカー] を選択します。
-
トラッカーを作成を選択します。
-
すべての必須フィールドに入力します。
-
[位置フィルター] で、トラッカーリソースの使用目的に最も適したオプションを選択します。位置のフィルタリングを設定しない場合、デフォルト設定は TimeBased となります。詳細については、このガイドの「トラッカー」と「Amazon Location Service トラッカー API リファレンス」の「PositionFiltering」を参照してください。
-
[トラッカーを作成] を選択して終了します。
ジオフェンスコレクションを作成する際は、コンソール、API、または CLI のいずれかを使用できます。以下の手順で、各オプションについて説明します。
Amazon Location コンソールを使用してジオフェンスコレクションを作成する:
-
Amazon Location Service コンソール (https://console.aws.amazon.com/location/) を開きます。
-
左のナビゲーションペインから、[ジオフェンスコレクション] を選択します。
-
[ジオフェンスコレクションの作成] を選択します。
-
コレクションの名前と説明を入力します。
-
[CloudWatch をターゲットとするEventBridge ルール] で、オプションのEventBridge ルールを作成して、ジオフェンスイベントへの対応を開始できます。これにより、Amazon Location は Amazon CloudWatch Logs にイベントをパブリッシュできるようになります。
-
[ジオフェンスコレクションの作成] を選択します。
Amazon Location API を使用してジオフェンスコレクションを作成する:
Amazon Location Geofences API の CreateGeofenceCollection オペレーションを使用してください。以下の例では、API リクエストを使用して というジオフェンスコレクションを作成します。GOECOLLECTION_NAME
POST /geofencing/v0/collections Content-type: application/json { "CollectionName": "GOECOLLECTION_NAME", "Description": "Geofence collection 1 for shopping center", "Tags": { "Tag1" : "Value1" } }
AWS CLI コマンドを使用してジオフェンスコレクションを作成します。
create-geofence-collection コマンドを使用します。以下の例では、 AWS CLI を使用して というジオフェンスコレクションを作成します。GOECOLLECTION_NAME
aws location \ create-geofence-collection \ --collection-name "GOECOLLECTION_NAME" \ --description "Shopping center geofence collection" \ --tags Tag1=Value1
トラッカーをジオフェンスコレクションにリンクするには、コンソール、API、または CLI のいずれかを使用できます。以下の手順で、各オプションについて説明します。
Amazon Location Service コンソールを使用してトラッカーリソースをジオフェンスコレクションにリンクする:
-
Amazon Location コンソールを開きます。
-
左のナビゲーションペインから、[トラッカー] を選択します。
-
[デバイストラッカー] で、対象トラッカーの名前リンクを選択します。
-
[リンクされたジオフェンスコレクション] で [ジオフェンスコレクションをリンク] を選択します。
-
[リンクされたジオフェンスコレクション] ウィンドウのドロップダウンメニューからジオフェンスコレクションを選択します。
-
[Link (リンク)] を選択します。
-
トラッカーリソースをリンクすると、そのリソースには[アクティブ] ステータスが割り当てられます。
Amazon Location API を使用してトラッカーリソースをジオフェンスコレクションにリンクする:
Amazon Location Trackers API の AsssociateTrackerConsumer オペレーションを使用してください。以下は、Amazon リソースネーム (ARN) を使用して ExampleTracker をジオフェンスコレクションにリンクする API リクエストの例です。
POST /tracking/v0/trackers/ExampleTracker/consumers Content-type: application/json { "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" }
AWS CLI コマンドを使用してトラッカーリソースをジオフェンスコレクションにリンクする:
associate-tracker-consumer コマンドを使用します。次の例では、 を使用して AWS CLI というジオフェンスコレクションを作成します。GOECOLLECTION_NAME
aws location \ associate-tracker-consumer \ --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" \ --tracker-name "ExampleTracker"
Lambda 関数を作成します。
AWS IoT Core と Amazon Location Service 間の接続を作成するには、EventBridge CloudWatch イベントによって転送されたメッセージを処理するための AWS Lambda 関数が必要です。 CloudWatch この関数は、位置データを抽出し、Amazon Location Service 用にフォーマットし、Amazon Location Tracker API を通じて送信します。この関数は、 AWS Lambda コンソールから作成することも、 AWS Command Line Interface (AWS CLI) または AWS Lambda APIsを使用することもできます。コンソールを使用して Amazon Location に位置更新を公開する Lambda 関数を作成するには:
-
https://console.aws.amazon.com/lambda/ で AWS Lambda コンソールを開きます。
-
ナビゲーションペインで、[関数] を選択します。
-
関数を作成を選択し、最初から作成するが選択されていることを確認します。
-
次のボックスに入力します。
-
関数名
-
[ランタイム] オプションで [Node.js 16.x] を選択します。
-
-
[関数の作成] を選択してください。
-
[コード] タブを選択してエディタを開きます。
-
index.js のプレースホルダーコードを次のように上書きします。
const AWS = require('aws-sdk') const iot = new AWS.Iot(); exports.handler = function(event) { console.log("event===>>>", JSON.stringify(event)); var param = { endpointType: "iot:Data-ATS" }; iot.describeEndpoint(param, function(err, data) { if (err) { console.log("error===>>>", err, err.stack); // an error occurred } else { var endp = data['endpointAddress']; const iotdata = new AWS.IotData({endpoint: endp}); const trackerEvent = event["detail"]["EventType"]; const src = event["source"]; const time = event["time"]; const gfId = event["detail"]["GeofenceId"]; const resources = event["resources"][0]; const splitResources = resources.split("."); const geofenceCollection = splitResources[splitResources.length - 1]; const coordinates = event["detail"]["Position"]; const deviceId = event["detail"]["DeviceId"]; console.log("deviceId===>>>", deviceId); const msg = { "trackerEventType" : trackerEvent, "source" : src, "eventTime" : time, "geofenceId" : gfId, "coordinates": coordinates, "geofenceCollection": geofenceCollection }; const params = { topic: `${deviceId}/tracker`, payload: JSON.stringify(msg), qos: 0 }; iotdata.publish(params, function(err, data) { if (err) { console.log("error===>>>", err, err.stack); // an error occurred } else { console.log("Ladmbda triggered===>>>", trackerEvent); // successful response } }); } }); } -
[デプロイ] を選択して、関数を更新します。
-
設定タブを選択します。
-
[トリガー] セクションで、[トリガーを追加] を選択します。
-
[ソース] フィールドで [EventBridge (CloudWatch Events)] を選択します。
-
[既存のルール] ラジオオプションを選択します。
-
「AmazonLocationMonitor-GEOFENCECOLLECTION_NAME」のようなルール名を入力します。
-
[追加] ボタンをクリックします。
-
これにより、アクセス許可タブに「リソースベースのポリシーステートメント」もアタッチされます。
MQTT テストクライアント
-
左側のナビゲーションペインで、[MQTT テストクライアント] を選択します。
-
[MQTT テストクライアント] というセクションが表示され、そこで MQTT 接続を設定できます。
-
必要な設定を行った後、[接続] ボタンをクリックして、指定したパラメータを使用して MQTT ブローカーへの接続を確立します。
-
エンドポイント値を書き留めます。
接続すると、MQTT テストクライアントインターフェイスに用意されている各入力フィールドを使用して、MQTT トピックにサブスクライブしたり、トピックにメッセージをパブリッシュしたりできます。次に、MQTT ポリシーをアタッチします。
-
左側のメニューの [管理] で、[セキュリティ] オプションを展開し、[ポリシー] をクリックします。
-
[ポリシーを作成] ボタンをクリックします。
-
ポリシー名を入力します。
-
[ポリシードキュメント] で [JSON] タブを選択します。
-
以下に示すポリシーをコピーして貼り付けます。ただし、すべての要素を実際の
とREGIONで更新してください。ACCOUNT_ID{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iot:Connect", "iot:Publish", "iot:Subscribe", "iot:Receive" ], "Resource": [ "arn:aws:iot:REGION:ACCOUNT_ID:client/${cognito-identity.amazonaws.com:sub}", "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}", "arn:aws:iot:REGION:ACCOUNT_ID:topicfilter/${cognito-identity.amazonaws.com:sub}/", "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}/tracker" ], "Effect": "Allow" } ] }注記
次の手順で使用するポリシー名とトピック名を記録します。
-
[作成] ボタンを選択して終了します。
前の手順が完了したら、以下のようにゲストロールのアクセス許可を更新します。
-
Amazon Cognito に移動し、アイデンティティプールを開きます。次に、[ユーザーアクセス] に進み、[ゲストロール] を選択します。
-
[アクセス許可ポリシー] をクリックして、[編集] を有効にします。
{ 'Version': '2012-10-17', 'Statement': [ { 'Action': [ 'geo:GetMap*', 'geo:BatchUpdateDevicePosition', 'geo:BatchEvaluateGeofences', 'iot:Subscribe', 'iot:Publish', 'iot:Connect', 'iot:Receive', 'iot:AttachPrincipalPolicy', 'iot:AttachPolicy', 'iot:DetachPrincipalPolicy', 'iot:DetachPolicy' ], 'Resource': [ 'arn:aws:geo:us-east-1:{USER_ID}:map/{MAP_NAME}', 'arn:aws:geo:us-east-1:{USER_ID}:tracker/{TRACKER_NAME}', 'arn:aws:geo:us-east-1:{USER_ID}:geofence-collection/{GEOFENCE_COLLECTION_NAME}', 'arn:aws:iot:us-east-1:{USER_ID}:client/${cognito-identity.amazonaws.com:sub}', 'arn:aws:iot:us-east-1:{USER_ID}:topic/${cognito-identity.amazonaws.com:sub}', 'arn:aws:iot:us-east-1:{USER_ID}:topicfilter/${cognito-identity.amazonaws.com:sub}/*', 'arn:aws:iot:us-east-1:{USER_ID}:topic/${cognito-identity.amazonaws.com:sub}/tracker' ], 'Effect': 'Allow' }, { 'Condition': { 'StringEquals': { 'cognito-identity.amazonaws.com:sub': '${cognito-identity.amazonaws.com:sub}' } }, 'Action': [ 'iot:AttachPolicy', 'iot:DetachPolicy', 'iot:AttachPrincipalPolicy', 'iot:DetachPrincipalPolicy' ], 'Resource': [ '*' ], 'Effect': 'Allow' } ] } -
上記のポリシーの変更により、必要なすべての AWS リソースがアプリケーションに対して適切に設定されるようになりました。
-
Android Studio を開き、[New]、[Project from Version Control] の順に選択します。
-
Android Studio の左上隅にある [File] メニューに移動します。
-
ドロップダウンメニューで [New] を選択します。
-
[Project from Version Control] を選択します。
-
リポジトリ URL を入力します。表示されるダイアログボックスで、「URL」とマークされたフィールドを見つけます。
-
サンプルアプリケーションの次の URL をコピーして、次のフィールドに貼り付けます。https://github.com/aws-geospatial/amazon-location-samples-android.git
-
リポジトリをクローンするディレクトリを決定します。デフォルトのディレクトリを使用するか、カスタムの場所を選択します。
-
リポジトリ URL とディレクトリの設定が完了したら、[Clone] ボタンをクリックします。Android Studio により、指定された場所にリポジトリのクローンが作成されます。
-
アプリケーションがマシンにクローンされ、使用を開始できます。
サンプルを使用するには、以下の手順に従います。
-
custom.propertiesを作成する:custom.propertiesファイルを設定するには、以下の手順に従います。-
任意のテキストエディタまたは IDE を開きます。
-
新しいファイルを作成します。
-
次に、
custom.propertiesという名前でファイルを保存します。 -
custom.propertiesを以下のコードサンプルで更新し、MQTT_END_POINT、POLICY_NAME、GEOFENCE_COLLECTION_NAME、TOPIC_TRACKERを実際の値に置き換えます。MQTT_END_POINT=xxxxxxxxxxxxx-xxx.xxx.us-east-1.amazonaws.com POLICY_NAME=xxxxxxxxx GEOFENCE_COLLECTION_NAME=xxxxxxxxxxxxxxxxx TOPIC_TRACKER=xxxxxxxxxx -
プロジェクトをクリーンアップして再構築します。その後、プロジェクトを実行できます。
-
-
サインイン:
アプリケーションにサインインするには、以下の手順に従います。
-
[サインイン] ボタンを押します。
-
アイデンティティプール ID、トラッカー名、マップ名を指定します。
-
[サインイン] をもう一度押して終了します。
-
-
フィルタを管理する:
設定画面を開き、次の操作を実行します。
-
スイッチ UI を使用してフィルターのオン/オフを切り替えます。
-
必要に応じて、時間と距離のフィルタを更新します。
-
-
追跡オペレーション:
追跡画面を開き、以下の操作を実行します。
-
フォアグラウンド、バックグラウンド、バッテリーセーバーの各モードでの追跡は、それぞれ対応するボタンを押すと、開始および停止できます。
-