Сканирование React Native NFC иногда возвращает неопределенное значение на устройствах iOSIOS

Программируем под IOS
Ответить
Anonymous
 Сканирование React Native NFC иногда возвращает неопределенное значение на устройствах iOS

Сообщение Anonymous »

У меня есть мобильное приложение, написанное на React Native, которое также использует Expo. Он использует сканирование NFC в качестве механизма для размещения штампов на картах лояльности в цифровом виде, поэтому вы можете предположить, что для меня это очень важная функция, которая работает безупречно. Он работает нормально, но я заметил одну проблему: иногда при сканировании на устройствах iOS плагин возвращает неопределенное значение, даже если тег был отсканирован, и в появившемся ящике NFC iOS появляется флажок. Я пробовал отлаживать его, используя журналы повсюду, но так и не нашел причин, по которым это происходит, за исключением того, что это происходит случайным образом, а когда это происходит, то, как правило, это происходит несколько раз впоследствии.
Это моя код для запуска менеджера nfc в компоненте приложения:

Код: Выделить всё

useEffect(() => {
const setupNfc = async () => {
try {
const isSupported = await NfcManager.isSupported();
if (!isSupported) {
console.warn("NFC is not supported on this device.");
return;
}

const isEnabled = await NfcManager.isEnabled();
if (!isEnabled) {
console.warn("NFC is not enabled on this device.");
return;
}

await NfcManager.start();

if (Platform.OS === "android") {
await NfcManager.registerTagEvent();
}
} catch (error) {
console.error("Error starting NFC:", error);
}
};

setupNfc();
}, []);
А это мой код для сканирования тега nfc:

Код: Выделить всё

const scanNFC = async (): Promise => {
try {
await NfcManager.requestTechnology(NfcTech.Ndef);

const tag = await NfcManager.getTag();

if (!tag || !tag.id) {
console.log("NFC: No tag found or tag ID undefined");
return undefined;
}

const tagId = tag.id;
console.log(`NFC: Tag ID found: ${tagId}`);

return tagId;
} catch (ex) {
if (ex instanceof NfcError.UserCancel) {
console.log("NFC: User canceled the NFC scan.");
} else {
console.error("NFC: NFC read error:", ex);
}
return undefined;
} finally {
await NfcManager.cancelTechnologyRequest();
}
};
Вот несколько журналов, которые будут вам полезны:

Код: Выделить всё

 LOG  NFC: Tag ID found: 0422DA34BA2A81
LOG  HomePage: Tag: 0422DA34BA2A81
LOG  HomePage: Scanned tag id is: 0422DA34BA2A81
LOG  HomePage: Scanned tag belongs to an admin, skipping updating stamps...
LOG  NFC: Tag ID found: 0422DA34BA2A81
LOG  HomePage: Tag: 0422DA34BA2A81
LOG  HomePage: Scanned tag id is: 0422DA34BA2A81
LOG  HomePage: Scanned tag belongs to an admin, skipping updating stamps...
LOG  NFC: Tag ID found: 0422DA34BA2A81
LOG  HomePage: Tag: 0422DA34BA2A81
LOG  HomePage: Scanned tag id is: 0422DA34BA2A81
LOG  HomePage: Scanned tag belongs to an admin, skipping updating stamps...
LOG  NFC: User canceled the NFC scan.
LOG  HomePage: Tag: undefined
LOG  HomePage: NFC scan did not return a valid tag
Буду рад, если кто-нибудь из вас сможет мне в этом помочь!

Подробнее здесь: https://stackoverflow.com/questions/791 ... os-devices
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»