Проблема с чтением данных NFC из приложения iPhone Suica с использованием Android 7.0 или более поздней версии - PullRequest
1 голос
/ 25 апреля 2019

Мой проект требует использования устройства Android для чтения данных истории транзакций из Suica , не только с физической карты, но также с мобильных устройств, которые интегрированы с картой через определенное приложение.Для более позднего примера примером является приложение Suica на iPhone, которое подключается к сервису Apple Pay ссылка .

Мой подход заключается в простом использовании Android NFC API для обоих случаев.Мы считаем, что как физическая карта, так и мобильное устройство с приложением Suica фактически могут рассматриваться как тег NFC-F (Felica).Приложение Suica эффективно работает в режиме эмуляции карт, не так ли?

Проблема в устройствах Android с SDK-версией до Android 6.0 (уровень API 23), при чтении данных изфизическая карта или мобильное устройство, но для устройств Android с версией SDK от Android 7.0 (уровень API 24) оно вряд ли может обнаружить мобильное устройство как тег NFC-F, поэтому мы в основном не можем прочитать данные с него.

Возможно, есть некоторые изменения в Android SDK, вызывающие эту проблему, но я понятия не имею, что это, и как я могу их найти.Может кто-то объяснить это мне ?Я уже отправил вопрос к Teratail, но ответа нет.

------------- Обновлено 2019/05/01 -------------

Взглянув на исходный код Android SDK, выясняется, что из самой версии SDK Android 7.0 добавлен HostNfcFService for CardEmulation.Возможно, это не совпадение, но я пока не смог понять. Ссылка на Github

<!-- Scan activity -->
<activity
    android:name="xxxx.ScanActivity"
    android:launchMode="singleTask"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme.NoActionBar">
    <meta-data
        android:name="android.nfc.action.TECH_DISCOVERED"
        android:resource="@xml/nfc_tech_filter" />

    <!-- NFC TAG -->
    <intent-filter>
        <action android:name="android.nfc.action.TECH_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <tech-list>
        <tech>android.nfc.tech.NfcF</tech>
    </tech-list>
</resources>
...