웹 브라우저에서는 NFC 세션을 아예 시작하지 않게 수정
웹은 NFC 하드웨어에 접근할 방법이 없는데도 isAvailable()/startSession()을 그대로 호출하고 있었다. kIsWeb이면 바로 "스마트폰 앱에서만 사용할 수 있어요" 안내만 보여주고 세션 시도 자체를 건너뛰게 했다 (출석체크 화면 + 관리자 태그 쓰기 화면 둘 다). dispose()의 stopSession() 호출도 웹에서는 건너뛴다.
This commit is contained in:
@@ -105,7 +105,8 @@ class NfcPocketCheckinController extends ChangeNotifier {
|
|||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
// 화면을 나갈 때 NFC 감지만 종료. 백그라운드 감시 서비스는 화면과 무관하게 계속 동작해야 하므로 건드리지 않는다.
|
// 화면을 나갈 때 NFC 감지만 종료. 백그라운드 감시 서비스는 화면과 무관하게 계속 동작해야 하므로 건드리지 않는다.
|
||||||
NfcManager.instance.stopSession();
|
// 🌐 웹에서는 애초에 세션을 시작하지 않으므로 stopSession도 호출하지 않는다.
|
||||||
|
if (!kIsWeb) NfcManager.instance.stopSession();
|
||||||
_violationSub?.cancel();
|
_violationSub?.cancel();
|
||||||
_checkedOutSub?.cancel();
|
_checkedOutSub?.cancel();
|
||||||
// iOS 근접센서 감시는 (안드로이드와 달리) 이 컨트롤러 안에서 직접 도는 것이라,
|
// iOS 근접센서 감시는 (안드로이드와 달리) 이 컨트롤러 안에서 직접 도는 것이라,
|
||||||
@@ -119,6 +120,14 @@ class NfcPocketCheckinController extends ChangeNotifier {
|
|||||||
|
|
||||||
/// 📡 NFC 감지 세션 시작
|
/// 📡 NFC 감지 세션 시작
|
||||||
void _startNfcSession() async {
|
void _startNfcSession() async {
|
||||||
|
// 🌐 웹 브라우저는 NFC 하드웨어에 접근할 방법이 없어서, 시도조차 하지 않고
|
||||||
|
// 바로 안내 문구만 보여준다 (괜히 켜는 척하다 먹통되는 것 방지).
|
||||||
|
if (kIsWeb) {
|
||||||
|
_statusMessage = "NFC 태그 기능은 스마트폰 앱에서만 사용할 수 있어요.";
|
||||||
|
notifyListeners();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
bool isAvailable = await NfcManager.instance.isAvailable();
|
bool isAvailable = await NfcManager.instance.isAvailable();
|
||||||
if (!isAvailable) {
|
if (!isAvailable) {
|
||||||
_statusMessage = "이 스마트폰은 NFC 기능이 꺼져있거나 지원되지 않습니다.";
|
_statusMessage = "이 스마트폰은 NFC 기능이 꺼져있거나 지원되지 않습니다.";
|
||||||
|
|||||||
@@ -31,7 +31,8 @@ class NfcTagWriterController extends ChangeNotifier {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
NfcManager.instance.stopSession();
|
// 🌐 웹에서는 애초에 세션을 시작하지 않으므로 stopSession도 호출하지 않는다.
|
||||||
|
if (!kIsWeb) NfcManager.instance.stopSession();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,6 +41,11 @@ class NfcTagWriterController extends ChangeNotifier {
|
|||||||
onMessage("주머니 번호를 입력해주세요.", true);
|
onMessage("주머니 번호를 입력해주세요.", true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// 🌐 웹 브라우저는 NFC 하드웨어에 접근할 방법이 없어서 시도조차 하지 않는다.
|
||||||
|
if (kIsWeb) {
|
||||||
|
onMessage("NFC 태그 쓰기는 스마트폰 앱에서만 사용할 수 있어요.", true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
final String pocketLabel = "POCKET_$number";
|
final String pocketLabel = "POCKET_$number";
|
||||||
|
|
||||||
bool isAvailable = await NfcManager.instance.isAvailable();
|
bool isAvailable = await NfcManager.instance.isAvailable();
|
||||||
|
|||||||
Reference in New Issue
Block a user