slooProImg_20140421073202.jpg
みまもりケータイからiPhoneへのPush通知を実装してみた

みまもりケータイ202Zは、速度検知や電話発信操作などで位置情報を通知することができますが、よく分からない地図サービスへのリンクが記載されたメールが来るのは寂しかったので、iPhoneにPush通知してiPhoneの地図コンポーネントで表示するようにしてみる実験をしてみました。

月3円で運用できるケータイでこんな風に遊べるなんて素晴らしいですね!

202Zからの通知とPush通知

iPhone上でのMapView表示

※この位置情報はダミーです

動画

202Zからの通知受け取り

メール受信トリガーの仕組みを使ってメール受信をもとにプログラムを起動します。202Zからの位置情報通知メールの送信先をこのメールアドレスに設定しました。

メール受信からプログラムの起動は、Postfixなら/etc/aliacesでメール転送として設定できます。GAEのinbound mailサービスも受信できます。

プログラムでプッシュ通知

iOSのプッシュ通知(APNS)を使うために、楽なサービスを使おうと考え、今回はAWSのSimple Notification Service(SNS)を使うことにしました。

SNSの利用方法の解説はググるとたくさんありましたのでそれにお任せするとして、プログラムの方は、Python用のAWS APIライブラリBotoを使用しました。

これもサンプルがあったので簡単に実装できまいした。


def publish(aws_access_key, aws_secret_access_key, endpoint_arn, token):

    sns_connection = boto.sns.connect_to_region('ap-northeast-1',
            aws_access_key_id=aws_access_key,
            aws_secret_access_key=aws_secret_access_key)

    apns_dict = {'aps': {'alert': 'Hello', 'badge': 1}}
    message = {'APNS_SANDBOX': json.dumps(apns_dict, ensure_ascii=False)}

    sns_connection.publish(target_arn=endpoint_arn,
                           message=json.dumps(message, ensure_ascii=False),
                           message_structure='json')
}

これはJSON形式でHelloと送っていますが、実際には緯度経度情報を送ります。この辺の通知フォーマットは通知したい情報をお好きなように組み立てます。

ちなみにみまもりケータイの位置情報は、度時分秒の形式で送ってくるので、ここで度形式に変換しました。

iPhoneでのプッシュ通知受け取り

iPhoneでプッシュ通知を受け取ったら、記載された位置情報から、MapViewにピンを落とします。

まとめ

特に目新しい技術はないですが、いちおうちゃんと動いてます。AWSのSNSがこんなに簡単だとは知りませんでした。(push通知100万件まで無料)

問題点としては、みまもりケータイの速度検知の位置情報通知は、発信可能な3件のアドレス登録でないとだめで、貴重な3件のリソースの1つのメールアドレスを使用してしまうのが痛いです。

メールアドレスを登録すると、そのメールがみまもりケータイのアドレス帳に登録されるので、位置情報がない通常のメールは通常のメールとして転送するようにしたら良いと思います。

これをサービスとして運用するのは、取り扱いが危険な超プライバシー情報なので人のこどもの位置情報を受け取って配信するとかは、怖いなあと思った次第です。

それでは快適な監視社会生活を!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)