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];