본문 바로가기

Programming/iOS

APNs를 GCM으로 구현

반응형

푸쉬 기능을 모두 GCM으로 사용하고 싶을 경우가 있다.
(아마 운영상의 이유로 푸쉬 기능을 모두 GCM으로 보내는 경우인데)
구글에서 해당 서비스를 제공하고 있다.
https://developers.google.com/cloud-messaging
해당 페이지에 접속해 가이드대로 따라하면 오케이

 

가이드 문서

[팁5] GCM으로 Android, iOS 둘다 push notification 을 할 수 있다.

주의

아래 설정에서 sandbox용도인지 product용도 인지 구분해줘야 배포시 문제가 생기지 않는다

// Start the GGLInstanceID shared instance with that config and request a registration
// token to enable reception of notifications
GGLInstanceID.sharedInstance().startWithConfig(instanceIDConfig)
#if DEBUG
registrationOptions = [kGGLInstanceIDRegisterAPNSOption:deviceToken,
                       kGGLInstanceIDAPNSServerTypeSandboxOption:true]
#else
registrationOptions = [kGGLInstanceIDRegisterAPNSOption:deviceToken,
                       kGGLInstanceIDAPNSServerTypeSandboxOption:false]
#endif

 

테스트

실제 전송 테스트는
chrome에서 제공하는 postman을 통해 할 수 있다
Postman - REST Client shortcut

아래와 같은 양식으로 테스트 진행

server
https://android.googleapis.com/gcm/send
type
POST
header
Content-Type      application/json
Authorization      key=<SERVER_API_KEY>

 

 

body

{
  "to": "neZCjHSz01I:APA91bEZ7V-H0gxbkvtrQ2q4Rg...",
  "priority": "high",
  "notification": {
    "title": "테스트 앱",
    "body": "데이터 테스트",
    "sound": "default",
    "custom_data": {
      "key1": "value1",
      "key2": "value2"
    }
  },
  "data": {
    "key1": "value1",
    "key2": "value2"
  }
}

응답이 아래와 같은식으로 오면 성공
(success가 1로 찍힘)

{
  "multicast_id": 4641604398078841000,
  "success": 1,
  "failure": 0,
  "canonical_ids": 0,
  "results": [
    {
      "message_id": "0:1461147253377743%5c9c215e5c9c215e"
    }
  ]
}

 

로그는 아래와 같이 AppDelegate.swift didReceiveRemoteNotification()에서 확인 가능

[
  gcm.message_id: 0:1461149417155575%5c9c215e5c9c215e,
  key1: value1,
  gcm.notification.custom_data: {
    "key1": "value1",
    "key2": "value2"
  },
  key2: value2,
  aps: {
    alert = {
    body = "\Ub370\Uc774\Ud130 \Ud14c\Uc2a4\Ud2b8";
    title = "\Ud14c\Uc2a4\Ud2b8 \Uc571";
  };
  sound = default;
  }
]​

 

반응형

'Programming > iOS' 카테고리의 다른 글

Tomcat+Jenkins+SonarQube for OSX  (0) 2016.06.02
how to check if an app is installed  (0) 2016.05.11
Expandable UITableView  (0) 2016.04.08
percent width in stroryborad  (0) 2016.03.28
local authentication(Touch ID)  (0) 2016.03.21