자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey 자체적인 원격푸시 전송시의 한글문제
2015.05.28 23:03
험프리님의 블로그 http://blog.hjf.pe.kr/ 에 있는 아래의 내용
[XE7] 자체적으로 원격푸쉬알림(GCM , APN) 전송 구현방법
에서 한글로 푸시 메시지를 보내면 한글이 깨져서 보이는데한글을 정상적으로 보이도록 하는 방법이 있는지요?
저는 안드로이드에서만 테스트하였습니다.
댓글 3
-
마눠니
2015.05.28 23:21
-
유탐호호
2015.06.13 01:04
샘플 소스를 받을수 있을까요?~~
-
마눠니
2015.06.19 23:13
안녕하세요. 이제야 내용 확인하였네요.
제가 작성한 모듈의 샘플입니다. 도움이 되었으면 합니다.
저도 Kinvey를 통하여 작성을 하다가 문제점들이 많아서 아래와 같이 작성하였고,
아주 잘 동작하고 있습니다.
// App에서 로그인할 때마다
procedure Tform_FWMan.Get_DeviceID_DeviceToken(UserID : String);
var
ADeviceID, ADeviceToken : String;
begin
APushService := TPushServiceManager.Instance.GetServiceByName( TPushService.TServiceNames.GCM );
APushService.AppProps[ TPushService.TAppPropNames.GCMAppID ] := '123456789012'; // 구글 푸시 App ID
AServiceConnection := TPushServiceConnection.Create( APushService );
AServiceConnection.Active := True;
AServiceConnection.OnChange := OnServiceConnectionChange;
AServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;
ADeviceID := APushService.DeviceIDValue[ TPushService.TDeviceIDNames.DeviceID ];
ADeviceToken := APushService.DeviceTokenValue[ TPushService.TDeviceTokenNames.DeviceToken ];
// DB로 저장
end;
procedure Tform_FWMan.OnServiceConnectionChange(Sender : TObject; AChange : TPushService.TChanges);
begin
end;
procedure Tform_FWMan.OnReceiveNotificationEvent(Sender : TObject; const ANotification: TPushServiceNotification);
begin
end;
// VCL 또는 FMX 로 Windows용 프로그램 상에서 푸시 메시지를 발송하는 모듈입니다.
// IdSSLIOHandlerSocketOpenSSL1 와 IdHTTP1 가 있어야 합니다.
procedure TformMProManMain.Send_PushMessage(userID, DeviceToken, sMessages : String);
var
AJSon, AJSonData : TJSONObject;
ARegisterIDs : TJSONArray;
AData, AResponseContent : TStringStream;
begin
if DeviceToken <> '' then
begin
ARegisterIDs := TJSONArray.Create();
AJSon := TJSONObject.Create();
try
// Set the device token
ARegisterIDs.Add( DeviceToken );
// Create JSon to send
AJSonData := TJSonObject.Create();
AJSonData.AddPair('id', userID);
AJSonData.AddPair('message', sMessages);
// Add the information to send GCM server
AJSon.AddPair('registration_ids', ARegisterIDs);
AJSon.AddPair('data', AJSonData);
// set the header
IdHTTP1.Request.ContentType := 'application/json; charset=euc-kr'; //charset=utf-8'; //'application/json';
// set the key for server application
IdHTTP1.Request.CustomHeaders.AddValue('Authorization', 'key=구글PushMessage마스터키');
AData := TStringStream.Create(AJSon.ToString);
AData.Position := 0;
AResponseContent := TStringStream.Create();
// send the notification
IdHTTP1.Post('https://android.googleapis.com/gcm/send', AData, AResponseContent);
AResponseContent.Position := 0;
finally
end;
end;
end;
Firemonkey 자체적인 원격푸시 전송시의 한글문제
2015.05.28 23:03
험프리님의 블로그 http://blog.hjf.pe.kr/ 에 있는 아래의 내용
[XE7] 자체적으로 원격푸쉬알림(GCM , APN) 전송 구현방법
댓글 3
-
마눠니
2015.05.28 23:21
-
유탐호호
2015.06.13 01:04
샘플 소스를 받을수 있을까요?~~
-
마눠니
2015.06.19 23:13
안녕하세요. 이제야 내용 확인하였네요.
제가 작성한 모듈의 샘플입니다. 도움이 되었으면 합니다.
저도 Kinvey를 통하여 작성을 하다가 문제점들이 많아서 아래와 같이 작성하였고,
아주 잘 동작하고 있습니다.
// App에서 로그인할 때마다
procedure Tform_FWMan.Get_DeviceID_DeviceToken(UserID : String);
var
ADeviceID, ADeviceToken : String;
begin
APushService := TPushServiceManager.Instance.GetServiceByName( TPushService.TServiceNames.GCM );
APushService.AppProps[ TPushService.TAppPropNames.GCMAppID ] := '123456789012'; // 구글 푸시 App ID
AServiceConnection := TPushServiceConnection.Create( APushService );
AServiceConnection.Active := True;
AServiceConnection.OnChange := OnServiceConnectionChange;
AServiceConnection.OnReceiveNotification := OnReceiveNotificationEvent;
ADeviceID := APushService.DeviceIDValue[ TPushService.TDeviceIDNames.DeviceID ];
ADeviceToken := APushService.DeviceTokenValue[ TPushService.TDeviceTokenNames.DeviceToken ];
// DB로 저장
end;
procedure Tform_FWMan.OnServiceConnectionChange(Sender : TObject; AChange : TPushService.TChanges);
begin
end;
procedure Tform_FWMan.OnReceiveNotificationEvent(Sender : TObject; const ANotification: TPushServiceNotification);
begin
end;
// VCL 또는 FMX 로 Windows용 프로그램 상에서 푸시 메시지를 발송하는 모듈입니다.
// IdSSLIOHandlerSocketOpenSSL1 와 IdHTTP1 가 있어야 합니다.
procedure TformMProManMain.Send_PushMessage(userID, DeviceToken, sMessages : String);
var
AJSon, AJSonData : TJSONObject;
ARegisterIDs : TJSONArray;
AData, AResponseContent : TStringStream;
begin
if DeviceToken <> '' then
begin
ARegisterIDs := TJSONArray.Create();
AJSon := TJSONObject.Create();
try
// Set the device token
ARegisterIDs.Add( DeviceToken );
// Create JSon to send
AJSonData := TJSonObject.Create();
AJSonData.AddPair('id', userID);
AJSonData.AddPair('message', sMessages);
// Add the information to send GCM server
AJSon.AddPair('registration_ids', ARegisterIDs);
AJSon.AddPair('data', AJSonData);
// set the header
IdHTTP1.Request.ContentType := 'application/json; charset=euc-kr'; //charset=utf-8'; //'application/json';
// set the key for server application
IdHTTP1.Request.CustomHeaders.AddValue('Authorization', 'key=구글PushMessage마스터키');
AData := TStringStream.Create(AJSon.ToString);
AData.Position := 0;
AResponseContent := TStringStream.Create();
// send the notification
IdHTTP1.Post('https://android.googleapis.com/gcm/send', AData, AResponseContent);
AResponseContent.Position := 0;
finally
end;
end;
end;
자답 : IdHTTP1.Request.ContentType := 'application/json; charset=euc-kr'; 와 같이 charset을 설정하니 잘 되네요...