28
© 2009 Sony Corporation X SDK for FeliCa & Adobe ® AIR ® /Adobe ® Flash ® によるアプリケーション開発 2010/01/29 ソニー株式会社 FeliCaデバイス事業部 竹村

Felica Night 20090129(sony Felica) No2

Embed Size (px)

Citation preview

Page 1: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

X

SDK for FeliCa & Adobe® AIR ® /Adobe ® Flash ®

によるアプリケーション開発

2010/01/29

ソニー株式会社FeliCaデバイス事業部

竹村 航

Page 2: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

FeliCaを使ったことある人?

FeliCaでプログラミングしたことのある人?

ActionScript開発者?(Flash派? Flex派?)

Page 3: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

どのように実現しているのか

Flash/AIRアプリケーションからUSB接続されたリーダ/ライタへは直接制御できない

FeliCa Proxy Service という常駐プロセスを経由することで実現

あらかじめクライアントPCにインストールされている必要がある

FeliCa Port Software (ドライバ、ツールなどの基本的なソフトウェア一式)に含まれている

Flash/AIRアプリケーション

FeliCa ProxyService

リーダ/ライター

カード

localhost内でのSocket通信

USB

無線

Page 4: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

Flash/AIRとFeliCa Proxy Serviceとの通信

Flash/AIRアプリケーションから送信したリクエストはFeliCa Proxy Serivceに処理される。

処理結果のレスポンスは非同期にイベント通知される。

Flash/AIR アプリケーション

FeliCa Proxy Service

① 非同期イベントを待ち受けるリスナをaddEventListener()で登録する。

② リクエストを送信する。

③ リーダー/ライターやカードへコマンドを送信。コマンドの処理結果を受ける。

④ レスポンスを送信

⑤ あらかじめ指定したリスナーが呼び出されることで、結果を取得できる。

Page 5: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

アプリケーション開発の流れ

SDK for FeliCa & Adobe® AIR® / Adobe® Flash®の基本的な手順の理解する為に簡単なFlashアプリケーションとして、ボタンをクリックすると「FeliCa機能搭載の携帯電話のブラウザを起動させる」というFlashアプリケーションを作成します。

1. 初期化2. FeliCaProxyServiceと認証を行なう3. 「FeliCa機能搭載の携帯電話のブラウザを起動させる」APIの実行する4. FeliCaProxyServiceとの認証を切断する

Page 6: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

初期化

SDKで提供されているクラスをインポートします。

import com.sony.felica.*;

import com.sony.jp.felica.event.*;

FeliCaControlオブジェクトを作成します。

private var fc:FeliCaControl = new FeliCaControl();

Page 7: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

FeliCaProxyServiceとの認証

FeliCaAccessクラスのopenメソッドでソケット接続の要求を行います。

private function init():void{

fc.open(10250);

} 10250はポート番号ですが、必ずこの値を指定してください。

Page 8: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

FeliCaProxyServiceとの認証

openメソッド呼び出しの前に、open成功時に呼び出されるリスナを登録します。

private function init():void{

fc.addEventListener(OpenStatusEvent.OPEN_COMPLETE, onOpenComplete);

fc.open(10250);

}

private function onOpenComplete(evt:OpenStatusEvent):void

{

mx.controls.Alert.show(“open成功”);

}

openが成功したときに通知される非同期イベント。失敗したときに通知されるイベント(OPEN_FAILURE)もある。

Page 9: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

携帯電話のブラウザ起動

MobileFeliCaRequestを初期化し、FeliCa Proxy Service に送信します。

private function sendURL():void{

var request:MobileFeliCaRequest = new MobileFeliCaRequest();

request.type = MobileFeliCaRequest.WEBTO;

request.url = “http://www.google.co.jp/m”;

fc.access(request);

}

携帯電話内部の機能の起動を要求するためのリクエスト

「ブラウザの起動」の他には、「iアプリの起動」、「共通領域の読み

込み」がある

リクエストをFeliCa Proxy Serviceに送信

Page 10: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

携帯電話のブラウザ起動

open()と同様、access()呼び出しの前にリスナを登録します。

private function sendURL():void{

fc.addEventListener(FeliCaStatusEvent.FELICA_ACCESS_COMPLETE,

onAccessComplete);

var request:MobileFeliCaRequest = new MobileFeliCaRequest();

request.type = MobileFeliCaRequest.WEBTO;

request.url = “http://www.google.co.jp/m”;

fc.access(request);

}

private function onAccessComplete(evt:FeliCaStatusEvent):void{

mx.control.Alert.show(“完了”);

}

この他にエラー用のイベントが2種類ある

Page 11: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

FeliCaProxyServiceの切断

最後に、FeliCa Control クラスのclose()メソッドを呼び出します。

private function onAccessComplete(evt:FeliCaStatusEvent):void{

mx.control.Alert.show(“完了”);

fc.close();

}

Page 12: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

カード補足デモ

Page 13: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

FeliCa検知 (Polling)

リーダー/ライターにかざされたカードを検知することができる

検知時に取得できるデータIDm

PMm

IDmは概ねユニークなので、セキュリティを必要としないのならば利用可能

Page 14: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

NFC Type3 Tag を利用した例

Page 15: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

NFC, Type3 Tag

NFCNFC Forumが定める近距離通信の国際規格です。FeliCaはNFCに対応しています。

Type3 TagNFCが定めるタグの一つ。

タグとは?

カードの一種

少メモリ、安価

様々な形状

Page 16: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

private function writeTag():void{

fc.addEventListener(FeliCaStatusEvent.FELICA_ACCESS_COMPLETE,

onWriteComplete);

var request:NFCType3TagRequest = new NFCType3TagRequest();

request.type = NFCType3TagRequest.WRITE;

request.data = “0123456789” // 16進数で表記

fc.access(request);

}

private function onWriteComplete(evt:FeliCaStatusEvent):void{

mx.control.Alert.show(“書き込み完了”);

}

Type3 Tag への書き込み、読み込み

基本的には、MobileFeliCaRequest()の例と同様です

Page 17: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

private function readTag():void{

fc.addEventListener(FeliCaStatusEvent.FELICA_ACCESS_COMPLETE,

onWriteComplete);

var request:NFCType3TagRequest = new NFCType3TagRequest();

request.type = NFCType3TagRequest.READ;

fc.access(request);

}

private function onReadComplete(evt:FeliCaStatusEvent):void{

var response:NFCType3TagResponse = evt.object as NFCType3TagResponse;

mx.control.Alert.show(response.data);

}

Type3 Tag への書き込み、読み込み

基本的には、MobileFeliCaRequest()の例と同様です

Page 18: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

Type3 Tag に書き込めるデータフォーマット

Type3 Tag 自体は書き込むデータフォーマットを定義しない

単なる208バイトのスクラッチパッドとしても扱える

NFC では複数の Record Type Definition (RTD) が定義されている

Smart Poster – URL情報などを記録し、かざした対象機器上でウェブ

サイトへ誘導

Smart Poster 形式を使えばFeliCa Launcherと連携してウェブサイトへの誘導ができる

Page 19: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

NFC Forum からダウンロード可能な資料

Page 20: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

FeliCa Plug を利用した例

Page 21: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

FeliCa Plug とは

機器に組み込み、リーダー/ライターとデータ転送をすることが可能

リーダー/ライターからはFeliCaカードと同様にアクセスすることが可能

FeliCa Plug 内蔵歩数計

アコーズ開発

過去15日分のデータをFeliCaで送信

Page 22: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

FeliCaプリクラデモ

Page 23: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

このように処理しています

① 写真を撮る

② サーバーに送信

③ URLを返す

④ WebTo機能でURLを送信

⑤ URLへアクセス

wataru-takemura.com

Page 24: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

(最後に)FeliCaって言ったら電子マネーでしょ?

Page 25: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

電子マネーの対応状況

Edyの履歴表示機能が利用可能Edy番号

残高

使用金額、時間

マッシュアップできそうなメタデータは今のところ利用できない・・・

利用した店舗情報

購入した商品名

「Edyの購入履歴とHotpepper APIをマッシュアップしておすすめ店舗の検索するサービス」

「利用した駅、店舗をGoogle Map上に表示するアプリ」を作りたい

第一回FeliCaナイトより

Page 26: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

FeliCaの使い方提案

IDとしてセキュリティを必要としないならばIDm

携帯電話とのインターフェース送信できるデータ量は少ないが、サーバー連携でできることが増えそう

Tag不特定多数に配布してサイト誘導

FeliCa Plug組み込み機器とのインターフェース健康器具の履歴をオンライン管理

玩具を使ったソーシャルアプリ

Page 27: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation

開発上の注意

エラー処理についてエラー時に発生するイベントに対するリスナを登録し、エラー時の処理を適切に行ってください。エラー要因としては以下のようなものがあります。

FeliCa Proxy Service が起動していない

リーダー/ライタが接続されていない、正しく認識されていない

必要なソフトウェアがインストールされていない (FeliCa Port Software)

カードがかざされていない

通信エラー

連続してリクエストを送信しない複数のリクエストを送信する場合には、

リクエストはキューされません

非同期イベントの到着を待って、次のリクエストを送信してください

Page 28: Felica Night 20090129(sony Felica) No2

© 2009 Sony Corporation