翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
iOS アプリケーションを作成する
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" } ] } -
[作成] ボタンを選択して終了します。
サンプルコードを設定するには、以下のツールがインストールされている必要があります。
-
Git
-
XCode 15.3 以後
-
iOS Simulator 16 以降
以下の手順を使用して、サンプルアプリケーションコードを設定します。
-
この URL (https://github.com/aws-geospatial/amazon-location-samples-ios/tree/main/tracking-with-geofence-notifications
) から git リポジトリを複製します。 -
AWSLocationSampleApp.xcodeprojプロジェクトファイルを開きます。 -
パッケージの解決プロセスを待ちます。
-
オプション: プロジェクトナビゲーションメニューで、
ConfigTemplate.xcconfigをConfig.xcconfigに変更し、以下の値を入力します。IDENTITY_POOL_ID = `YOUR_IDENTITY_POOL_ID` MAP_NAME = `YOUR_MAP_NAME` TRACKER_NAME = `YOUR_TRACKER_NAME` WEBSOCKET_URL = `YOUR_MQTT_TEST_CLIENT_ENDPOINT` GEOFENCE_ARN = `YOUR_GEOFENCE_COLLECTION_NAME`
サンプルコードの設定が完了したら、iOS シミュレーターまたは実機でアプリケーションを実行できるようになります。
-
アプリケーションをビルドして実行します。
-
アプリケーションから位置情報と通知に対するアクセス許可を求められます。それらのアクセス許可を付与する必要があります。
-
[Cognito Configuration] ボタンをタップします。
-
[Config.xcconfig] ファイルに値を入力していない場合は、設定画面で以前に作成したリソース値をフィールドに入力する必要があります。
IDENTITY_POOL_ID = `YOUR_IDENTITY_POOL_ID` MAP_NAME = `YOUR_MAP_NAME` TRACKER_NAME = `YOUR_TRACKER_NAME` WEBSOCKET_URL = `YOUR_MQTT_TEST_CLIENT_ENDPOINT` GEOFENCE_ARN = `YOUR_GEOFENCE_COLLECTION_NAME` -
設定を保存します。
-
[フィルタ] のオプションとして時間、距離、精度が表示されるようになりました。必要に応じてそれらのオプションを使用してください。
-
アプリケーションの [追跡] タブに移動すると、マップと [追跡を開始する] ボタンが表示されます。
-
このアプリケーションをシミュレーターにインストールしている場合は、位置の変更をシミュレートできます。これは [機能] の [ロケーション] メニューオプションで実行できます。例えば、[機能] を選択し、続いて [ロケーション]、[高速道路走行] の順に選択します。
-
[追跡を開始する] ボタンをタップします。マップに追跡ポイントが表示されます。
-
アプリケーションはバックグラウンドでも位置を追跡します。そのため、アプリケーションをバックグラウンドに移行すると、バックグラウンドモードで追跡を続けるためのアクセス許可を求められます。
-
[追跡を停止する] ボタンをタップすると、追跡を停止できます。