Your SlideShare is downloading. ×
서버 푸쉬   (c#)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

서버 푸쉬 (c#)

4,735
views

Published on

c# 서버푸쉬 개요 및 구현방법

c# 서버푸쉬 개요 및 구현방법

Published in: Software

0 Comments
25 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,735
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
78
Comments
0
Likes
25
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 서버 푸쉬 (Server Push) (+로컬 푸쉬) for unity3d by 박시현 ㈜ 노엔소프트
  • 2. 서버푸쉬 개요 (구글신) 그림에 대한 저작권은 저에게 없음.
  • 3. 단어 정리 - 서버 푸쉬 : 서버가 이벤트 형식으로 유저 고객님들 에게 메시지를 발송 - 로컬 푸쉬 : 클라이언트 자체로, 이벤트를 발생할때 커널에 등록/해제 (예. 연구시작) - GCM (Google Cloud Messaging) : 서버 푸쉬는 gcm을 이용함. - registration_id(REGID) : GCM을 통해 받을수 있는, bundle id 로써, 앱과 1:1 매칭되는, ID (string 32byte 이상)
  • 4. 클라에서 등록시점(우리게임의 경우..) - 최초 앱을 실행할때, (또는, 저장해 놓은 REGID가 없을경우) GCM 을 통해 registration_id를 받아서, 저장해 놓는다. - UserName 을 입력할때, REGID 를 같이 전송한다. (이때 푸쉬 정식 서버등록) - 앱 설치후, (REGID 저장해논상태에서) 최초 복원 시 - 게임내에서, 계정 이동 할시(만일 REGID가 없으면, 다시 REGID 받아서 실행) - 공통 : 명령수행시 REGID가 로컬에 저장안되어 있 으면, 다시 받아온다.
  • 5. 어떻게 구현? (Keyword) - GCM : gcm 키워드로, 대략 지식 축적 - Google Developer Console : 이곳에 앱을 올려야 테스트 가능. - API key : 개발자 콘솔에서, 앱을 등록후, (출시할 필요까지는 없음) API 키를 생성해야함. - Sender ID : 클라에서, Registration ID 값 구할때 필요함.
  • 6. 요게 API Key – 서버 에서 사용 푸쉬 하는 서버의 IP가 등 록되있어야함 (자신이 192.x.x.x 형태의 ip라면, 구글신에게 실제 IP를 물어보자 – 나가는 ip 만 알면됨) 개발자 콘솔 에서의 지루한 작업은 기본… 인내를 가지자.
  • 7. 요게 Sender ID : 클 라에서 씀. 개발자 콘솔 에서의 지루한 작업은 기본… 인내를 가지자.
  • 8. private static string SendGCMNotification(string apiKey, string postData) { byte[] byteArray = Encoding.UTF8.GetBytes(postData); // CREATE REQUEST HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("https://android.googleapis.com/gcm/send"); Request.Method = "POST"; Request.KeepAlive = false; Request.ContentType = "application/json"; Request.Headers.Add(string.Format("Authorization: key={0}", apiKey)); Request.ContentLength = byteArray.Length; Stream dataStream = Request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); // SEND MESSAGE try { WebResponse Response = Request.GetResponse(); HttpStatusCode ResponseCode = ((HttpWebResponse)Response).StatusCode; if (ResponseCode.Equals(HttpStatusCode.Unauthorized) || ResponseCode.Equals(HttpStatusCode.Forbidden)) { //var text = "Unauthorized - need new token"; } else if (!ResponseCode.Equals(HttpStatusCode.OK)) { //var text = "Response from web service isn't OK"; } StreamReader Reader = new StreamReader(Response.GetResponseStream()); string responseLine = Reader.ReadToEnd(); Reader.Close(); return responseLine; } catch (Exception) { return "error"; } } Sample Code (동작함) 서버 사이드
  • 9. static string apikey = "AIzaSyBRj6CV4Mg3b1_i8W??????????????????????????"; static public string SendGCM (string regid, string ticker, string title, string message) { string postData = "{ "registration_ids": [ "" + regid + "" ], " + ""data": {"ticker":"" + ticker + "", " + ""title":"" + title + "", " + ""message": "" + message + ""}}"; return SendGCMNotification(apikey, postData); } - registration_ids 요기다가, 배열처럼 죽~ 넣어주면, 멀티로 감. (약간의 json 지식 필요) - 1000 개까지 할수 있다고함. - HTTP 의 동기방식이 맘에 안든다면, CCM 검색(하드코어 개발자 마인드가 아니면,그냥 쓰 시는게.. [시간상]) - 아름 다운 코드 원하시는 분들은, Git 에서, PushSharp 찾아서 해보시면 됨. (애플, 구글, 기타 별거 다됨) (물론 R&D 비용은 본인이 감수) 호 출 부 - 서버
  • 10. 유니티 3D 관련 - 어셋 스토어 보면, 여러가지가 있지만, 현재 잘나가 는 Android Native (본인은 이걸 선호), Prime31 (예전엔 이게 1등) - Android Native : 예제 괜찮음. But 몇가지 기능 빠 짐 - 대표적으로 Ticker Text 미지원 (Ticker 지원하면, Sound 가 안되는 결과 초래-일장일단, Local Push 의 Cancel 기능 미지원 – 직접 소스 열 어서, 추가하고 jar 컴파일하고, 유니티에서 jar 파 일 대체 해줘야함. (소스 달라시면 X.. 유료 어셋..) - 클라소스는 샘플 넘치니 생략 . (위 플러그 인에도 있음)
  • 11. 감사합니다. 시간이 나는대로 추가 업데이트 하겠습니다. (출시 준비중이라, 바뻐서 OTL) ㈜ 노엔소프트

×