투케이2K

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

투케이2K 로직정리

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

투케이2K 2024. 10. 23. 19:30

[로직 정리]

정리 로직 : Mobile

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

 

[설 명]

 


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

- 웹뷰 브릿지 통신을 하기 위한 사전) 인터페이스 협의 필요

- Android : AndroidManifest.xml 파일에서 스키마 접속을 처리하려는 액티비티 설정 필요

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

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






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

1. 외부 앱 및 웹 페이지에서 MyApp 스키마 명칭 사용해 App 이동 수행 실시


2. MyApp 에서 스키마로 접속한 경우 체크 및 파라미터가 포함 되어 있는지 체크 수행 실시

  -------------------------------------------------
  [Android] : 스키마 처리 액티비티 : onCreate
  -------------------------------------------------
  Uri uri = getIntent().getData();

  String total = String.valueOf(uri.toString()); // [스키마 + 호스트 + 데이터 전체]
  String scheme = String.valueOf(uri.getScheme()); // [스키마]
  String host = String.valueOf(uri.getHost()); // [호스트]

  if (scheme.trim().equals("app") && host.trim().equals("login") && uri.getQueryParameterNames() != null){ // [스키마 명칭이 널이 아니고 파라미터 값이 널이 아닌 경우]

  }


  -------------------------------------------------
  [Ios] : 스키마 처리 SceneDelegate : willConnectTo
  -------------------------------------------------
  if let _url = connectionOptions.urlContexts.first?.url { 

    let urlStr = _url.absoluteString // [스키마 주소값 가지고 온다]
    let components = URLComponents(string: urlStr) // 전체 주소
    //let pathData = components?.path ?? "" // http url path 경로
    let schemeData = components?.scheme ?? "" // 스키마
    let parameter = components?.query ?? "" // 파라미터

    if parameter.count > 0 && parameter != "" { // 파라미터 값이 널이 아닌 경우

    }

  }


3. 스키마 파라미터를 앱 내부 프리퍼런스 저장 후 웹뷰 화면으로 전환 수행

  >> 안드로이드의 경우 스키마로 접속한 경우 중복 실행 방지 위해 intent 이동 시 FLAG_ACTIVITY_NEW_TASK 설정


4. 모바일 ( Android , Ios ) 에서는 웹뷰 로드 후 저장 된 스키마 데이터가 있는 경우 브릿지로 데이터 전송 수행 실시

  >> 브릿지로 데이터 전송 후 앱 저장 데이터 다시 초기화 필요


5. 웹에서는 브릿지로 스키마 정보가 넘어 온 경우 이벤트 페이지 이동 및 자동 로그인 처리 등 로직 처리 수행

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






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

[Android - 웹뷰 클래스 정리]

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


[Ios - 웹뷰 클래스 정리]

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


[Android - C_MoveApp - 외부 앱 실행 , 스키마 실행 , 앱 설치 여부 , 마켓 이동 , 크롬 기반 외부 링크 이동]

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


[Ios - C_MoveApp - 외부 앱 실행 , 스키마 실행 , 앱 설치 여부 , 마켓 이동 , 크롬 기반 외부 링크 이동]

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


[Android - URL SCHEMA (스키마) 사용해 외부 앱 실행 및 QueryParameter 데이터 전송 실시]

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


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

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

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


[Android - 웹뷰 intent scheme 스키마 딥링크 확인 및 외부앱 수행 실시 - shouldOverrideUrlLoading]

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


[플러터 - App To App Scheme 스키마 이동 수행 - 앱 이동]

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


[Android - 앱 스키마 (scheme) 접속 시 중복 실행 방지 - 앱 아이콘 클릭 시 앱 초기화 현상 해결]

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


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

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

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

 

반응형
Comments