API version 39

Runtime.DiscoverNfcTagAsyncメソッド

iOSAndroidWindows

説明

NFCタグの探索を非同期で行います。DiscoverNfcTagメソッドと異なり、NFCタグの探索中も処理をブロックしません。

NFCタグが見つかると、NfcTagDiscoveredAsyncイベントが発生します。

 

タグの探索を中止する時はStopDiscoverNfcTagAsyncメソッドを呼び出します。

 

対応しているタグについては、DiscoverNfcTagメソッドを参照してください。

 

呼出形式

Runtime.DiscoverNfcTagAsync( );

 

戻り値

なし

 

引数

なし

 

例外

RTM-48

端末にNFCリーダ/ライタが存在しません。

 

RTM-49

端末のNFCリーダ/ライタが有効になっていません。

 

RTM-50

NFCタグへのアクセスに失敗しました。

 

使用例

Button BtnAsyncStart {
	X = 8;
	Y = 8;
	Width = 180;
	Height = 30;
	Title = "非同期走査開始";
	FontSize = 8;
	/* 非同期NFC走査を開始する。*/
	Function OnTouch( e ) {
		Runtime.DiscoverNfcTagAsync();
	}
}
Button BtnAsyncStop {
	X = 8;
	Y = 48;
	Width = 180;
	Height = 30;
	Title = "非同期走査停止";
	FontSize = 8;
	/* 非同期NFC走査を停止する。*/
	Function OnTouch( e ) {
		Runtime.StopDiscoverNfcTagAsync();
	}
}
//{
	Function OnNfcTagDiscoveredAsync( e ) {
		if (!e.ScanResult) {
			print("読取に失敗しました");
			return;
		}
		var nfc = e.NfcConnect;
		if (nfc == null) {
			print("読取に失敗しました");
			return;
		}
		if (!nfc.IsFelicaTag) {
			nfc.Close(true);
			print("FeliCa以外のタグが読み取られました");
			return;
		}
		try {
			/* システムコード0x0003(Suica)のIDmを取得 */
			var pollingResult = nfc.Felica_Polling(0x0003);
			var targetIDm  = pollingResult.IDm;
			/* サービス0x008B(カード情報)から1ブロック取得 */
			var blockData = nfc.Felica_Read(targetIDm , 0x008B, 0, 1);
			var balance = blockData.byteat(11) + (blockData.byteat(12) * 256);
			nfc.Close(true);
			print("読取が正常に終了しました");
			/* 読取結果を出力 */
			MessageBox("Suica残高: " + str(balance) + " 円");
		} catch (e) {
			nfc.Close(false);
			print("読取が異常終了しました");
		}
	}
}

 

関連項目

DiscoverNfcTag、StopDiscoverNfcTagAsyncメソッド

NfcTagConnectionクラス



「オンラインマニュアル」一覧へ戻る
「Bizの宝箱」TOPへ戻る