투케이2K

115. (TWOK/LOGIC) [Ios] 기기 QR 스캔 및 스키마 scheme 정보 활용 다이렉트 AP 연결 로직 - NEHotspotConfigurationManager 본문

투케이2K 로직정리

115. (TWOK/LOGIC) [Ios] 기기 QR 스캔 및 스키마 scheme 정보 활용 다이렉트 AP 연결 로직 - NEHotspotConfigurationManager

투케이2K 2024. 11. 4. 19:50

[로직 정리]

정리 로직 : Ios / 아이폰

상태 : [Ios] 기기 QR 스캔 및 스키마 scheme 정보 활용 다이렉트 AP 연결 로직 - NEHotspotConfigurationManager

 

[설 명]

 

// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------

- 하드웨어 : 기기에 스키마 정보 형식으로 이뤄진 QR 부착 필요 (사전 협의 필요)

  >> 예시 : 호스트 명 지정 없음 : 스키마 접속 형태 : [testui://?name=twok&age=28]
  
  >> 예시 : 호스트 명 지정 사용 : 스키마 접속 형태 : [testui://call?name=twok&age=28]


- 하드웨어 : 장치 AP 로컬 핫스팟 활성 수행 시 특정 SSID 정보로 와이파이 생성 필요 (DB 에 매핑 된 정보) 


- Ios : 프로젝트 URL Types 에서 스키마 접속 허용 처리를 위한 스키마 명칭 및 번들 아이디 설정 필요


- Ios : QR 스캔을 하기 위한 info.plist 카메라 권한 설정 필요


- DB : 특정 암호화 스키마 명칭에 맞게 연결 될 SSID 정보 매핑 저장

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------

1. 애플리케이션 실행 및 사용자에게 특정 카메라 권한이 부여 된 상태 인지 확인


2. 정상적으로 카메라 권한이 부여 된 경우 QR 스캔 화면 이동 수행

  >> 권한이 부여 되어 있지 않은 경우는 사용자에게 [QR 스캔에 필요한 카메라 사용 권한을 활성해 주세요.] 팝업창 표시 및 설정창 이동


3. 기기에 부착된 스키마 정보 QR 스캔 수행

  >> 예시 : testapp://call?ssid=AKORD789P


4. App 은 QR 을 스캔 한 정보가 스키마 형식이 맞는 경우 UIApplication.shared.open 스키마 외부 앱 열기 수행

  >> 참고 : QR 을 스캔한 APP 과 스키마 이동 처리를 하는 APP , 스키마 접속 상태 확인 하는 APP 은 하나의 앱에서 수행


5. App SceneDelegate 클래스에서 스키마로 접속한 상태 확인 및 데이터 파싱 후 , 실제 로컬 핫스팟에 연결하기 위한 SSID 조회 요청 수행

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        print("[SceneDelegate >> willConnectTo :: UI창 선택적 구성 및 제공된 UI창에 Scene 연결]")

        guard let _ = (scene as? UIWindowScene) else { return }
        
        
        // [스키마 접속 체크] : [testapp://call?ssid=AKORD789P]
        if let _url = connectionOptions.urlContexts.first?.url {
            schemeHandleURL(url: _url) // 스키마 데이터 파싱 및 SSID 조회 요청 수행
        }
    }


6. 정상적으로 로컬 핫스팟 SSID 정보가 조회 된 경우 >> 다이렉트 AP 연결을 수행 하는 화면으로 전환 수행

  >> SSID 정보가 조회 되지 않는 경우나, HTTP 통신 에러가 발생한 경우 에러 표시 화면으로 전환 수행


7. 다이렉트 AP 연결 화면에서 NEHotspotConfigurationManager 를 사용해 와이파이 연결 수행 실시


// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[Ios - url scheme 스키마 데이터 전송 및 받은 데이터 확인]

https://blog.naver.com/kkh0977/222544821252?trackingCode=blog_bloghome_searchlist

https://blog.naver.com/kkh0977/222594008519?trackingCode=blog_bloghome_searchlist


[Ios - url scheme 스키마 외부 앱 실행 및 앱 스토어 이동 실시 - canOpenURL always true and false]

https://blog.naver.com/kkh0977/222696853666?trackingCode=blog_bloghome_searchlist


[모바일 ( android , ios ) 앱 스키마 scheme 접속 확인 및 웹뷰 브릿지 데이터 전달 로직]

https://blog.naver.com/kkh0977/223630712323?trackingCode=blog_bloghome_searchlist


[Swift - QR , Barcode 스캔 수행 실시 - AVCaptureDevice]

https://blog.naver.com/kkh0977/223299755604?trackingCode=blog_bloghome_searchlist


[Swift - yannickl QRCodeReader]

https://blog.naver.com/kkh0977/222550938341?trackingCode=blog_bloghome_searchlist


[Ios - getWifiIpAddress : 현재 연결 된 와이파이 (wifi) ip 주소 확인 - ifaddrs]

https://blog.naver.com/kkh0977/223291691739?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------

 

반응형
Comments