안드로이드 카카오톡 공유하기 쿼리스트링 파라미터에서 이스케이프 문자가 있을까여?

APP ID 532751

안드로이드 환경의 문제입니다. iOS 에서는 url 인코딩하면 문제없는 것 확인했습니다.

카카오톡 공유하기 링크 버튼
링크 설정 파라미터에서 아래와 같은 포맷을 사용하고 있습니다.

app_scheme=link&linkURL=${linkURL}

User Argument 에 “&” 문자가 들어가면 & 뒤의 문자열이 짤립니다.

ex)
https://www.coupang.com/np/search?component=&q=sfsf&channel=user
https://www.coupang.com/np/search?component=

user argument 내에서 & 를 사용할 수 있는 이스케이프 문자나 다른 대안이 있을까요 ?

안드로이드 SDK 사용하시며, 카카오톡 공유 한 것으로 이해했습니다.

안드로이드에서 URL 인코딩 했는데도 파라메터가 전달 안되었다는 말씀이신가요?
그러면 첫번째 파라메터는 잘 전달되었는지 확인해주시겠어요?

정확한 개발환경은 웹뷰에서 javascript sdk 를 이용하여 templateArgs 방식으로 파라메터를 전달하였습니다.

이 때 encodeURIComponent 로 인코딩 하였고, 해당 방식으로 파라메터가 잘 전달되는 것을 확인했습니다.

첫 번째 파라메터도 잘 전달되는 것을 확인하였구요.

다만 linkURL 파라메터 안에 & 문자가 들어갔을 때, 용어집 설명에 의거하면 복수의 파라미터로 인식되어 문제가 발생하는 것으로 이해했습니다.

  • (API 호출 시, 서버에 추가적인 정보를 전달할 때 사용합니다. 요청 URL 뒤에 물음표(?)를 시작으로 parameter=value 형태로 전달하며, 복수의 파라미터 전달 시 앰퍼샌드(&)로 구분합니다)

그렇기 때문에, linkURL 파라메터 안에 & 문자를 사용할 수 있는 이스케이프 문자 등의 방법이 있는지 문의드립니다.

파라메터 안에 파라메터 들어간 주소를 사용한다는 말씀이실까요?

해당 주소 인코딩 후, 파라메터 설정하고 전체적으로 인코딩 한번 더하면 될듯합니다.

스크린샷 2023-12-22 오전 11.45.11

네 맞습니다

사진의 PARAMETER 부분에 user argument로 설정가능한 파라미터를 전달하였습니다.

말씀하시는 해결 방식이 PARAMETER 부분 전체 문자열(app_scheme=link&linkURL=${linkURL})을 한번 더 encodeURIComponent 인코딩해서 전달하면 된다는 뜻일까요?

혹시 사진 내에서 인코딩해서 전달하는 방법이 있을까요 …?

아 말씀하신 방법 이해했습니다. 작업해 보겠습니다. 감사합니다.

말씀하신 방법대로 해결하였습니다. 감사합니다.
추가 질문이 아닌 트러블 슈팅 공유글입니다.

Android Scheme
Parameter
${parameter}

안드로이드에서는 파라미터 전체를 encodeURIComponent 로 인코딩해서 전달합니다.
인코딩 전에 파라미터 내부에 linkURL 같이 URI 값이 있는 경우 URI 값을 encodeURIComponent 로 인코딩합니다.

다만 iOS 에서 저희가 사용 중인 sdk 버전에서는 파라미터 전체를 encodeURIComponent 로 인코딩하는 경우, parameter 값을 정상적으로 받아오지 못합니다.

OS 별 sdk 에서 파라미터 값을 전달하는 방식에서 android 의 경우 파라미터 값을 decode 한 후 전달하고, iOS 의 경우 그렇지 않은 것으로 판단하였습니다.

1개의 좋아요

공유 감사합니다.

OS 별 SDK 영향도 확인 해보도록 하겠습니다.

1개의 좋아요