Belajar CoreNFC di iOS Swift (Part 2)
Oke setelah beberapa bulan tidak menemukan titik terang, akhirnya saya mencoba bertanya pada teman yang memang sedang mengerjakan project NFC.
Awalnya teman saya juga bingung karena pada dokumentasi dan pada aplikasi android tidak menjelaskan secara spesifik AIDs yang digunakan, akhirnya teman saya mencoba berbagai aplikasi NFC tool untuk membaca AIDs dari NFC card nya, dan akhirnya menemukan satu aplikasi yang menampilkan AIDs dari card tersebut yaitu NFC TagInfo.
Aplikasi nya dapa anda download di playstore
Next dari aplikasi tersebut menampilkan AIDs A000000151000000, oke akhirnya kita bisa menambahkan AIDs di Info.plist kita.
Tahap selanjutnya kita bisa membaca APDU kita dengan method NFCISO7816APDU. Dokumentasi dapat teman-teman baca di
Sebenarnya saya masih menelaah mengenai instructionClass, instructionCode, p1Parameter, p2Parameter, data, expectedResponseLength. Kita abaikan parameter untuk mendapatkan APDU, saya hanya mencoba instruksi dari stackoverflow dll. Intinya kita sudah mendapatkan APDU kita dan kita bisa membuat command dari APDU kita dengan method sendCommand. Dari method tersebut kita mendapatkan result responseData, sw1, sw2 dan error. Lagi-lagi saya masih belum tau apa itu sw1 dan sw2. Dari result tersebut kita mendapatkan sw1 adalah 110 dan sw2 adalah 0 dimana hasil tersebut memeilik format UInt8 atau dalam hal ini adalaha Unsigned byte sedangkan dalam APDU response yang saya dapat menggunakan Hexadecimal byte.
Oke jadi kita harus mengkonversi Unsigned byte ke Hexadecimal Byte, teman-teman bisa menggunakan chart ini. Atau mengkonversi menggunakan kode di swift seperti dibawah :
let hexSW1 = String(sw1, radix: 16, uppercase: true)let hexSW2 = String(sw2, radix: 16, uppercase: true)
Reference:
Weeiiiit !!!
Kok hasilnya jika dilihat di APDU list dengan sw1 110 dan sw2 0 menghasilkan error Class not supported. Hmmmm …
Apakah ada yang salah pada parameter APDU atau Command nya ya ??
Kesimpulan
Kesimpulan kali ini karena kita sudah bisa terhubung dengan NFC card adalah kesalah dalam mengisi parameter instructionClass, instructionCode, p1Parameter, p2Parameter, data, expectedResponseLength pada method NFCISO7816APDU untuk mendapatkan APDU atau instruction command pada APDU kita.
Oke untuk CoreNFC part 2 mungkin cukup sekian, mungkin next time setelah dapat refrensi mengenai APDU dan kawan-kawan mungkin akan saya lanjut di next part.