카카오링크 한글 문제

Hybrid app을 사용중이고 웹에서

meditong://kakaoLink?title=가나다라

이런 방식으로 앱에 전달해서 사용하는데요
전달 받은 title을 대입 시키면 이미지 처럼 한글이 깨져서 보이는데
안깨지는 방법 좀 알려주세요.

참고로 Hybrid app내의 웹은 utf-8 이고
app내에서는 받은 title 변수값을 아래와 같이 처리를 해도 안되네요.

EX1) NSString* aString = [[[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];

EX2) strAddr = [strAddr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

어디에서 어떻게 보내는지 궁금합니다. 따로 인코딩 안하셔도 됩니다.

카카오링크 모듈에서 보내기전에 인코딩하고 있습니다.

인코딩이 두번이 된것 같습니다.

1번. 하이브리드앱 내의 웹페이지에서 자바스크립트로 meditong://kakaoLink?pmTitle=가나다라&pmImg=[이미지url]&pmLink=[링크url] 을 보내면

2번. 앱내에서 해당 url을 ?를 경개로 파싱함
if ([request.URL.absoluteString hasPrefix:@“meditong://kakaoLink”]) { //특정 스킴 중 kakaoLink 를 처리하기 위한
NSString *calledUrl = request.URL.absoluteString;
//NSString *escapeStr = [calledUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *paramsString = [calledUrl componentsSeparatedByString:@"?"][1];

    [self sendLink:paramsString];
}
  • (void)sendLink:(NSString *)param {
    if ([KOAppCall canOpenKakaoTalkAppLink]) {
    [KOAppCall openKakaoTalkAppLink:[self dummyLinkObjects:param]];
    } else {
    NSLog(@“Cannot open kakaotalk.”);
    }
    }

3번. 함수를 실행 하고 kakao link를 보냄

  • (NSArray *)dummyLinkObjects:(NSString *) param {
    NSArray *params = [param componentsSeparatedByString:@"&"];

    NSString *strImg;
    NSString *strTitle;
    NSString *strLink;

    for (NSString *keyValueString in params) {
    NSArray *keyValue = [keyValueString componentsSeparatedByString:@"="];

      NSString *key = [keyValue objectAtIndex:0];
      NSString *value = [keyValue objectAtIndex:1];
      
      if ([key isEqualToString:@"pmImg"]) {
          strImg = value;
      }
      
      if ([key isEqualToString:@"pmTitle"]) {
          strTitle = value;
      }
      
      if ([key isEqualToString:@"pmLink"]) {
          strLink = value;
      }
    

    }

    KakaoTalkLinkObject *label = [KakaoTalkLinkObject createLabel:strTitle];
    KakaoTalkLinkObject *image = [KakaoTalkLinkObject createImage:strImg width:138 height:80];
    KakaoTalkLinkObject *webLink = [KakaoTalkLinkObject createWebLink:@“메디통 앱으로 가기” url:strLink];

    return @[label, image, webLink];
    }

이렇게 했는데 이미지 처럼 title 의 한글은 깨져서 발송됩니다.

@support11 앱이 URL 받은 스트링을 디코딩 해서 써야 할것 같습니다.

NSString *decoded = [escaped stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

감사합니다. 잘되네요 ^^

1개의 좋아요