인프런 커뮤니티 질문&답변

Mobum Shin님의 프로필 이미지

작성한 질문수

배달앱 클론코딩 [with React Native]

[맥 전용]섹션 5에 필요한 작업들 총정리

티맵을 Linking.openURL()로 여는 것은 어떤가요?

22.04.15 22:29 작성

·

2.2K

1

간단하게 실험해보니 손쉽게 열렸습니다. 

  const goByTMap = useCallback(async () => {
    const destinationURL = 'tmap://route?goalname=분당서울대병원&goalx=127.122930&goaly=37.351987' 
    if (await Linking.canOpenURL(destinationURL)) await Linking.openURL(destinationURL)
  }, [])

 

네이티브 소스를 수정해서 브릿징하는 연습을 해본 것은 너무 좋았습니다. 이런 교육적 의도 말고도 url scheme을 Linking으로 여는 것에 어떤 맹점이 있나요? 가령 url scheme이 변경될 소지가 있더던지? 보안이나 다른 문제가 있을까요? 

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2022. 04. 15. 23:15

저게 지원이 되면 저렇게 여는게 제일 간단합니다. 다만 저게 지원이 안 되고 네이티브코드로만 열리는 라이브러리들이 상당히 많습니다.

Mobum Shin님의 프로필 이미지
Mobum Shin
질문자

2022. 04. 16. 14:24

그럼 url scheme 과 deep link가 알려진 경우엔 Linking.openURL(scheme://deep/link)를 써도 다른 문제는 없는 거겠군요.

제가 티맵의 scheme을 알게된 것도 이전 질문글의 오류메시지 때문이었지 티맵 공식문서에 안내는 없더군요.

또 선생님 교안에 쓰인 파라미터로 deep link를 추정해서 열어보면 ios에선 열리고 android에선 목적지 좌표와 이름이 먹히지 않았습니다. 구글검색을 통해 파라미터명만 변경해주니 둘 다 열리더군요.

// iOS:열림, android: 목적지명, 목적지좌표 없이 안전운행모드로 열림 
const destinationURL = 'tmap://route?rGoName=분당서울대병원&rGoX=127.122930&rGoY=37.351987'

// iOS, android 모두 열림
const destinationURL = 'tmap://route?goalname=분당서울대병원&goalx=127.122930&goaly=37.351987'

 

네이버지도의 경우는 공식문서에 scheme 및 deep link를 안내하고 있습니다.

결론은 해보고 열리면 간단히 Linking으로 열고 안 되면 SDK를 브릿징해서 써야된다가 되겠군요.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2022. 04. 16. 14:29

네 TMap 공식문서가 워낙 제대로 안 되어있어서 그냥 sdk로 했던걸로 기억합니다.