Security News
pnpm 10.0.0 Blocks Lifecycle Scripts by Default
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
@monaca/monaca-plugin-nfc-reader
Advanced tools
Monaca NFCリーダープラグイン
このプラグインではNFCタグの情報を読み取ることができます。
androidは未対応
monaca.NfcReader.readId(successCallback, failCallback, args)
NFCタグのIDを読み込みます。 Type A: UID / Type F: IDm NFC Type Bには対応していません。
successCallback(result)
result: 以下のデータが返されます。
{
"type": "typeA", // NFCタグの種類 (typeA / typeF)
"id": "xxxxxxxxxx", // NFCタグのID
"cancelled": false // 読み取りがキャンセルされたかどうか
}
0003
のカードに設定されています。failCallback(error)
error: エラーメッセージ(文字列)
エラーの内容はエラーメッセージ参照
{
"message" : "NFCタグをスマートフォンに近づけてください"
}
parameter | type | optional | default value | description |
---|---|---|---|---|
message | string | YES | "Bring the NFC tag closer to your Smartphone" | 検出中のUIに表示されるメッセージ文字列 |
monaca.NfcReader.readId((result) => {
if (result.cancelled) {
// cancelled
} else {
// success
const detected_id = result.id;
const detected_type = result.type;
}
}, (error) => {
// error
const error_message = error;
}, {
"message" : "NFCタグをスマートフォンに近づけてください"
});
monaca.NfcReader.readBlockData(successCallback, failCallback, args)
FeliCaのブロックデータを読み込みます。
successCallback(result)
result: 以下のデータが返されます。
{
"type": "typeF", // NFCタグの種類 (typeF)
"id": "xxxxxxxxxx", // NFCタグのID
"cancelled": false, // 読み取りがキャンセルされたかどうか
"data": [n][16] // blockData[n][16] 1ブロック=16byte x n(n: 0 .. count-1)
}
failCallback(error)
error: エラーメッセージ(文字列)
エラーの内容はエラーメッセージ参照
{
"service_code" : [ 0x09, 0x0f ], // サービスコード
"start" : 0, // 読み取り開始インデックス
"count" : 12, // 読み取りブロック数 (count <= 12)
"message" : "NFCタグをスマートフォンに近づけてください"
}
parameter | type | optional | default value | description |
---|---|---|---|---|
service_code | array(byte[2]) | NO | - | サービスコード |
start | int | NO | - | 読み取り開始インデックス (0 <= start < 20) |
count | int | NO | - | 読み取りブロック数 (count <= 12) |
message | string | YES | "Bring the NFC tag closer to your Smartphone" | 検出中のUIに表示されるメッセージ文字列 |
monaca.NfcReader.readBlockData((result) => {
if (result.cancelled) {
// cancelled
} else {
// success
const detected_id = result.id;
const detected_type = result.type;
const blockData = result.data;
// convert block data to traffic IC history
const history = blockData.map(block => {
return monaca.NfcReader.convertToHistory(block);
});
}
}, (error) => {
// error
const error_message = error;
}, {
"service_code" : [ 0x09, 0x0f ],
"start" : 0, // start index
"count" : 12, // count
"message" : "NFCタグをスマートフォンに近づけてください"
});
message | description |
---|---|
"Invalid Arguments" | 引数指定のエラー |
"NFC Not Available" | NFCが使用できない |
"NFC Connection Error" | NFC接続時のエラー |
"Feature Not Supported" | 対応していない機能の呼び出し(typeA + readBlockData etc.) |
"Unsupported NFC Tag is detected" | 未対応のNFCタグの検出 |
"Request Service Error" | サービスコードの指定エラー |
"Read Block Data Error" | ブロックデータ読み込みエラー |
"Read Block Data Error: Invalid Status Code" | ブロックデータ読み込み ステータスコード異常 |
"NFC Session timed out" | NFC読み取りタイムアウト |
"Unhandled NFC error" | その他のNFCエラー |
プラグインの使用にはアプリケーションのconfig.xml
に以下の設定を追加する必要があります。
このプラグインはSwiftで書かれています。
アプリケーションの config.xml
にてSwiftのバージョンを指定する必要があります。
config.xml
に以下の記述を追加してください。
<platform name="ios">
<preference name="SwiftVersion" value="5"/>
</platform>
プラグインにデフォルトで指定されているFeliCaシステムコードは0003
です。
このコードを変更もしくは追加したい場合は以下のいずれかの方法で設定してください。
設定 → Cordova プラグインの管理
を選択します。0003
をfe00
に変更する場合: SYSTEM_CODES=fe00
Cordova CLIからプラグインを使用する場合は、プラグイン追加時にvariable
オプションで値を指定してください。
# '0003'を'fe00'に変更する場合
cordova plugin add @monaca/monaca-plugin-nfc-reader --variable SYSTEM_CODES=fe00
FeliCaにおいて事業者や使用目的ごとに割り当てられたコードをシステムコードと呼びます。 FeliCaカードを採用しているサービスごとに異なるシステムコードが割り当てられています。
また、FeliCaカードでは1枚のカードの中に複数のシステム領域を持つことができます。 この場合、1枚のカード内には複数のシステムコードが存在します。ID(IDm)はシステム領域ごとに割り当てられています。 対象のIDを取得するにはシステムコードの指定が必要となります。 このプラグインの現在のバージョンではシステムコードは1つのみ対応しています。
iOSアプリケーションでは対応するシステムコードを*.plist
ファイルに指定しておく必要があります。
この設定方法については前述のシステムコードの指定を参照してください。
FeliCaのシステム領域の中にはサービスと呼ばれる領域が存在します。複数のサービス領域が存在し、その中にブロックデータが格納されています。 どのサービス領域のブロックデータを取得するか特定するためにサービスコードが用いられます。
ブロックデータの取得にはシステムコードとサービスコードの両方が必要です。
readId()
, readBlockData()
ともに、システムコードで指定された1つのシステム領域からの読み込みに対応しています。readBlockData()
では1つのサービスコードで指定されたサービス領域からのブロックデータの読み込みに対応しています。ブロックデータの活用方法の1つとして、交通系ICカードの利用履歴の読み取りが挙げられます。 このプラグインでは参考としてブロックデータから利用履歴への変換メソッドを提供しています。
/**
* Convert blockData to traffic history
* @param {int[16]} blockData
* @return {object} traffic history object
*/
monaca.NfcReader.convertToHistory(blockData)
traffic history object:
{
"year": 2022, // 年
"month": 11, // 月
"day": 1, // 日
"boarding_station_code": [xxx, xxx], // 乗車駅(2byte)
"exit_station_code": [xxx, xxx], // 降車駅(2byte)
"balance": 1000 // 残高
}
使用例
monaca.NfcReader.readBlockData((result) => {
if (result.cancelled) {
} else {
const history = result.data.map(block => {
return monaca.NfcReader.convertToHistory(block);
});
}
}, (error) => {
}, {
// (略)
});
注意
交通系ICのデータ形式は公表されていません。
convertToHistory
の処理は独自の調査結果により実装されています。
このメソッドに関してはあくまでも参考程度として、以下の方針のもと提供させて頂きます。
2024年5月1日より、アップル社はアプリとサードパーティSDKに対してプライバシーマニフェストファイルの作成を義務付けています。プライバシーマニフェストファイルの目的は、収集されるデータとそれが使用する必要なAPIの理由を説明することです。cordova-ios@7.1.0
から、config.xml
からプライバシーマニフェストファイルを設定するためのAPIが利用可能になりました。
アプリ開発者としては、あなたのアプリがそのデータで何をするかを説明する追加情報を特定する責任があります。
この場合、既知の NSPrivacyCollectedDataTypes
と NSPrivacyCollectedDataTypePurposes
のリストを理解するために、"Describing data use in privacy manifests" を確認する必要があります。
NSPrivacyTracking
、NSPrivacyTrackingDomains
、NSPrivacyAccessedAPITypes
、NSPrivacyCollectedDataTypes
の4つのキーが定義されていることを確認してください。Appleはすべての定義を求めています。
その他のリソース
see LICENSE
FAQs
Monaca NFC Reader Plugin
We found that @monaca/monaca-plugin-nfc-reader demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 8 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.