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

FeliCa Night @Adobe

Embed Size (px)

Citation preview

Page 1: FeliCa Night @Adobe

© 2009 Sony Corporation

X

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

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

2010/01/12

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

竹村 航

Page 2: FeliCa Night @Adobe

© 2009 Sony Corporation

Content

FeliCaについて

FeliCa SDK for Adobe AIR/Adobe Flashを使った開発

携帯電話のブラウザ送信

Type3 Tag の読み書き

ACOS 歩数計の読み込み

Page 3: FeliCa Night @Adobe

© 2009 Sony Corporation

FeliCaとは

ソニーが開発した非接触通信技術。

読み取る側 = リーダ/ライタ

パソリ (PC向け、外付けUSB)

FeliCaポート(PC内蔵)

鉄道の改札

おサイフケータイ

読まれる側 = カード

カード形状 (Suica、Edyなど)

おサイフケータイ

その他の形状(トークン、シール)

歩数計

Page 4: FeliCa Night @Adobe

© 2009 Sony Corporation

FeliCaの動作原理

リーダ/ライタリーダ/ライタ

カードの電力は無線によってリーダ/ライタ側から供給(カード自身は電源を持たない)

搬送周波数13.56MHz

非接触・近接型(10cm程度)

212,424Kbps

ICチップICチップアンテナアンテナ

メモリ容量:200Byte~9KB

Page 5: FeliCa Night @Adobe

© 2009 Sony Corporation

FeliCaの特長

カード管理者

事業者1エリア

管理者エリア

事業者2エリア

ポイントデータ

電子マネー 乗車履歴

カード内のイメージ【実現例】

1枚のカードに複数のサービスを格納できる仕組みを実現

それぞれのサービスは鍵によってセキュリティー的に分離

サービスごとに鍵あり、鍵なしの設定が可能

必要に応じてサービス間の連携も可能

Page 6: FeliCa Night @Adobe

© 2009 Sony Corporation

ファイルシステム

「システムコード」はカードを検出するのに用いる「ラベル」

PCの「フォルダ」や「ファイル」のように「エリア」と「サービス」を階層化できる

「サービス」にはデータブロックへのポインタやアクセス方法を定義

6

データブロック2

エリア0000

エリア10

サービス1

システムコード

エリア20

サービス2 サービス3 サービス4 サービス5

データブロック1

(鍵なし) (鍵なし)

カード内のイメージ

Page 7: FeliCa Night @Adobe

© 2009 Sony Corporation

3種類のサービス

7

CPUの機能により、さまざまなデータの登録・演算が可能

任意のブロックをRead/Write

ブロック単位でサイクリックにRead/Write

Read/ Write

Read Only

Read/ Write

Read Only

ユーザブロック1

ユーザブロック2

ユーザブロック3

New

ユーザブロック

通常のRead/Write

新しいデータを最も古いデータに上書き

Write

Read

ランダムアクセス

(文字列等)

サイクリックアクセス

(履歴等)

パースアクセス(数値等)

数値のRead/Write/減算/加算

Read/ Write

Read/減算/ 加算

Read/減算

Read Only

パース

ユーザブロック

Page 8: FeliCa Night @Adobe

© 2009 Sony Corporation

SDK について

Page 9: FeliCa Night @Adobe

© 2009 Sony Corporation

今までの SDK for FeliCa

OperatingSystem

FeliCaDLLs

カード検知・通信

ネイティブ/.NET アプリケーション

インストールされたDLLからリーダ/ライターを制御

ネイティブ/.NETアプリケーションのみ実行可能

開発言語は 主にC, C++, Visual Basic, C#、開発環境はVisual Studio

B2B用途

Page 10: FeliCa Night @Adobe

© 2009 Sony Corporation

Flash

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

構成概要

OperatingSystem

FeliCaDLLs

アプリ起動

通信(Socket & XML)

カード検知・通信

FeliCaProxyFeliCa

Launcher

ブラウザ

AIRアプリケーション

Flashライブラリライセンス

認証サーバ

ライセンス認証

リーダ/ライターをFlash/AIRアプリケーションから制御することが可能

Flex/ActionScriptを利用した開発

よりポータブルなアプリケーション (ただし、今のところWindowsのみです。)

Page 11: FeliCa Night @Adobe

© 2009 Sony Corporation

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

機能概要

【Standard】

【Basic(無償版)】

カード検知

FeliCaカードの暗号化無しでのRead/Write (おサイフケータイ・フリー領域、NFC Type3タグ)

リーダ/ライタから携帯電話へのURL送信、アプリ起動

FeliCaカードの暗号化無しでのRead/Write (FeliCaカード全般)

Edyビューア機能(残高照会、利用履歴)

リーダ/ライタのオープンからクローズまでのFeliCaアクセスの一連の動作をまとめることでFlashコンテンツ及びAIRを開発する皆様が容易にFeliCaアクセスを行えます

Page 12: FeliCa Night @Adobe

© 2009 Sony Corporation

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

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

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

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

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

Flash/AIRアプリケーション

FeliCa ProxyService

リーダ/ライター

カード

localhost内でのSocket通信

USB

無線

Page 13: FeliCa Night @Adobe

© 2009 Sony Corporation

Flash/AIRとFeliCa Proxy Serviceとの通信

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

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

Flash/AIR アプリケーション

FeliCa Proxy Service

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

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

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

④ レスポンスを送信

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

Page 14: FeliCa Night @Adobe

© 2009 Sony Corporation

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

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

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

Page 15: FeliCa Night @Adobe

© 2009 Sony Corporation

初期化

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

import com.sony.felica.*;

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

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

private var fc:FeliCaControl = new FeliCaControl();

Page 16: FeliCa Night @Adobe

© 2009 Sony Corporation

FeliCaProxyServiceとの認証

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

private function init():void{

fc.open(10250);

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

Page 17: FeliCa Night @Adobe

© 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 18: FeliCa Night @Adobe

© 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 19: FeliCa Night @Adobe

© 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 20: FeliCa Night @Adobe

© 2009 Sony Corporation

FeliCaProxyServiceの切断

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

private function onAccessComplete(evt:FeliCaStatusEvent):void{

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

fc.close();

}

Page 21: FeliCa Night @Adobe

© 2009 Sony Corporation

開発上の注意

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

FeliCa Proxy Service が起動していない

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

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

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

通信エラー

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

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

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

Page 22: FeliCa Night @Adobe

© 2009 Sony Corporation

NFC Type3 Tag を利用した例

Page 23: FeliCa Night @Adobe

© 2009 Sony Corporation

NFC, Type3 Tag

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

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

タグとは?

カードの一種

少メモリ、安価

様々な形状

Page 24: FeliCa Night @Adobe

© 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 25: FeliCa Night @Adobe

© 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 26: FeliCa Night @Adobe

© 2009 Sony Corporation

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

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

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

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

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

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

Page 27: FeliCa Night @Adobe

© 2009 Sony Corporation

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

Page 28: FeliCa Night @Adobe

© 2009 Sony Corporation

FeliCa Plug を利用した例

Page 29: FeliCa Night @Adobe

© 2009 Sony Corporation

FeliCa Plug とは

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

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

FeliCa Plug 内蔵歩数計

アコーズ開発

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

Page 30: FeliCa Night @Adobe

© 2009 Sony Corporation