tony-yun
tony-yun3mo ago

@tosspayments/widget-sdk-react-native/src/utils/convertUrl 문의드립니다.

"react-native": "0.73.5", "@tosspayments/widget-sdk-react-native": "^1.2.7", ConvertUrl 함수 관련 문의 드립니다. (react native 의 iOS 플랫폼 코드) 예를 들어 페이북으로 결제 시도 시 웹뷰에서 앱으로 ispmobile 스킴이 넘어오는데,(url: ispmobile://vp?TID=NICETOKN......) 귀사 라이브러리의 launchApp 함수는 아래와 같이 구현이 되어있습니다.
else if (Platform.OS === 'ios') {
try {
const appLink = await this.getAppLink();
if (appLink) {
return Linking.openURL(appLink);
} else {
const marketUrl = await this.getMarketUrl();
return Linking.openURL(marketUrl);
}
else if (Platform.OS === 'ios') {
try {
const appLink = await this.getAppLink();
if (appLink) {
return Linking.openURL(appLink);
} else {
const marketUrl = await this.getMarketUrl();
return Linking.openURL(marketUrl);
}
appLink 가 기존의 스킴 주소 즉: ispmobile://... 로 설정되어 Linking.openURL 을 시도합니다. 만약 해당 페이북앱이 설치가 되어 있지 않을 경우, 열리지 않습니다. 즉 getAppLink 에서 ,
} else if (Platform.OS === 'ios') {
this.appLink =
this.appScheme === 'itmss' ? `https://${splitUrl[1]}` : this.url;
}
}

async getAppLink(): Promise<string | undefined> {
console.log('this.appLink:',this.appLink)
return this.appLink;
}
} else if (Platform.OS === 'ios') {
this.appLink =
this.appScheme === 'itmss' ? `https://${splitUrl[1]}` : this.url;
}
}

async getAppLink(): Promise<string | undefined> {
console.log('this.appLink:',this.appLink)
return this.appLink;
}
this.appLink = this.url 이며, Linking.openURL(ispmobile://...) 를 시도하기 때문에, 앱에서는 마켓으로 이동을 못합니다. 호출하는 부분은 아래와 같이 '웹뷰 연동하기' 페이지의 제시된 코드를 그대로 사용하고 있습니다.
const convertUrl = new ConvertUrl(url)

if (convertUrl.isAppLink()) {
convertUrl.launchApp().then((isLaunch) => {
if (isLaunch === false) {
}
})
} else {
return true
}
const convertUrl = new ConvertUrl(url)

if (convertUrl.isAppLink()) {
convertUrl.launchApp().then((isLaunch) => {
if (isLaunch === false) {
}
})
} else {
return true
}
사용자가 페이북앱을 설치 하지 않았을 때 마켓 페이지로 이동하게 하는 것이 목표입니다. Linking.openURL 로 열리지 않을때 catch 문으로 안넘어가고 그 자리에서 Promise Rejection 을 반환합니다. Possible Unhandled Promise Rejection (id: 16): Error: Unable to open URL: ispmobile://vp?TID=NICETOKN......
12 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
이실장
이실장3mo ago
if (convertUrl.isAppLink()) {
convertUrl.launchApp().then((isLaunch) => {
if (isLaunch === false) {
}
})
} else {
return true
}
if (convertUrl.isAppLink()) {
convertUrl.launchApp().then((isLaunch) => {
if (isLaunch === false) {
}
})
} else {
return true
}
여기서 else로 절대 안떨어진다는 말씀이신가요?
Kimoon Lee
Kimoon Lee3mo ago
이페이지에서 "앱다운로드" 를 누르시면 마켓으로 이동하지 않으시나요?
Kimoon Lee
Kimoon Lee3mo ago
No description
tony-yun
tony-yun3mo ago
네 맞습니다 앱다운로드를 누르면 이동합니다. 다만 유저가 자기 폰에 '페이북'앱이 설치가 안된걸 인지 못했을 경우 '결제하기' 버튼을 누르는데, 그 상황에서 설치안됐을 시 앱스토어로 이동시키고 싶어서 각종 방법을 찾고 있었습니다.
Kimoon Lee
Kimoon Lee3mo ago
네 이부분은 저희 가이드 코드에서 제공하고 있지 않은 내용입니다.
이실장
이실장3mo ago
그럼 이거보고 한번 해보시겠어요. 조건문 받아서, market url에 packagename담아서 보내면됩니다.
이실장
이실장3mo ago
아 지금 ios 문의주시는군요 ios는 절대 불가합니다. ios는 앱스킴이 앱스토어 정보를 가지고 있지 않습니다. 이에 구현을 하더라도 하드코딩으로 일일히 구현해주셔야해요
tony-yun
tony-yun3mo ago
네 react native 에서 ios 부분입니다. widget-sdk-react-native의 ConvertUrl클라스 launchApp함수에서 Linking.canOpenUrl 로 판단 (url 주소가 앱스킴일 경우 당연히 false 반환) 하면 안될까요?
const appLink = await this.getAppLink();
if (Linking.canOpenURL(appLink)) {
return Linking.openURL(appLink);
} else {
const marketUrl = await this.getMarketUrl();
return Linking.openURL(marketUrl);
}
const appLink = await this.getAppLink();
if (Linking.canOpenURL(appLink)) {
return Linking.openURL(appLink);
} else {
const marketUrl = await this.getMarketUrl();
return Linking.openURL(marketUrl);
}
이실장
이실장3mo ago
false로 반환해도 getMarketUrl() 로직에 이슈가 있어서 저희쪽에서 제거될 예정이에요.ㅣ 우선 당장 지원은 어려운 점 양해바라며, 대부분 가맹점도 ios 이용시 별도 appstore링크를 제공하지 않습니다.
tony-yun
tony-yun3mo ago
넵 우선은 상황 알겠습니다. 답변 감사드립니다.
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
More Posts
버블io에서 한 페이지에 두 개의 결제 위젯을 번갈아가며 사용할 때 전환이 제대로 되지 않는 문제수고하십니다! 우선 1번 UI에는 신용카드와 간편결제만 포함시키고, 2번 UI에는 가상계좌만 가능하도록 설정했습니다. 이 두 개의 UI를 활용하여 한 페이지에서 1번 버튼을 클paymentWidget on ready 관련결제모듈이 렌더링이 되지않을 경우, 결제 버튼을 loading 처리 해두고, 렌더링이 완료되면 결제가 활성화 되도록 조건을 걸고있는데요. 해당 방식으로 배포 후 간혹 유저 분에페이팔 결제 승인결제 위젯으로 테스트 결제까지는 성공을한것 같은데 결제 승인 을 하려고 하면 ERR_NON_2XX_3XX_RESPONSE 에러 코드를 반환합니다. 참고한 가이드 문서입니다.http결제위젯이 사라졌습니다.따로 건드린건 없는데 갑자기 결제위젯이 안보이네요. 카드사 심사중인데 의도된 것인지 어떤부분이 잘못된 것인지 궁금합니다. 최근 결제 payment_key = tviva20240현재 솔루션 개발중에 있는데 테스트 결제 위젯 연동 키가 사라졌네요결제 위젯 테스트 연동 키 받아서 사용 잘하다가 오늘 상점관리자 페이지 들어가니까 전자결제신청을 하라고 뜨네요 테스트인데도 전자결제신청을 해야되나요? 신청해볼려고햇는데 완전히 가상계좌 입금 2분지연 통보가상계좌 입금 2분 지연통보 사용하기 위해선 어떤 신청요청을 어디서 해야하나요?링크페이링크페이에서 최소 구매 건수를 지정할수 있을까요? 3개 이상부터 구매 가능하게 해야 합니다.결제위젯 표시 오류어제까지만 해도 결제 위젯이 정상적으로 작동했는데, 오늘 실행해보니 기존에 휴대폰결제, 토스페이, 가상계좌 등의 결제 수단을 선택하는 버튼들이 있었는데 그게 아예 표시되지 않습니다지급대행 지급일자 관련 문의안녕하세요. 지급대행 신청 시 지급일자를 2024.05.01로 지정하면 지급일자가 올바르지 않다고 나오는데 근로자의 날도 공휴일로 상정해서 지정이 불가능한 상황인가요?가상계좌 계좌 정보 문의토스 가상계좌 발급 관련하여 문의 드립니다. 테스트 화면에서 우리은행 가상계좌 발급을 하면 계좌 발급을 받고 개발자 모드 관리자에서 승인요청 버튼을 클릭하면 정상적으로 승인이 되지