翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Android アプリケーションの作成
Amazon Location Service を使用して iOS アプリケーションを構築するには、次の手順に従います。
GitHub
AWS アカウントの準備ができたら、Amazon Location Service リソースを生成できます。これらのリソースは、提供されたコードスニペットの実行に不可欠です。
注記
AWS アカウントをまだ作成していない場合は、AWS アカウントを作成
まず、Amazon Cognito アイデンティティプール ID を作成する必要があります。以下の手順に従ってください。
-
AWS コンソールで、Amazon Cognito に移動して、左側のメニューから [アイデンティティプール] を選択し、[アイデンティティプールを作成] を選択します。
-
[ゲストアクセス] がオンになっていることを確認し、[次へ] を押して続行します。
-
次に、新しい 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 関数が必要です。この関数は、位置データを抽出し、Amazon Location Service 用にフォーマットし、Amazon Location Tracker API を通じて送信します。この関数は AWS Lambda コンソールから作成することも、AWS Command Line Interface (AWS CLI) や AWS Lambda API を使用することもできます。コンソールを使用して Amazon Location に位置更新を公開する Lambda 関数を作成するには:
-
https://console.aws.amazon.com/lambda/ で、AWS Lambda コンソールを開きます。
-
ナビゲーションペインで、[関数] を選択します。
-
[関数を作成] を選択し、[ゼロから作る] が選択されていることを確認します。
-
次のボックスに入力します。
-
関数名
-
[ランタイム] オプションで [Node.js 16.x] を選択します。
-
-
[Create function] を選択します。
-
[コード] タブを選択してエディタを開きます。
-
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 テストクライアント
-
https://console.aws.amazon.com/iot/
を開きます。 -
左側のナビゲーションペインで、[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.propertiescustom.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 を使用してフィルターのオン/オフを切り替えます。
-
必要に応じて、時間と距離のフィルタを更新します。
-
-
追跡オペレーション:
追跡画面を開き、以下の操作を実行します。
-
フォアグラウンド、バックグラウンド、バッテリーセーバーの各モードでの追跡は、それぞれ対応するボタンを押すと、開始および停止できます。
-