2016-07-02 4 views
0

나는 phonegap-plugin-push를 사용하여 Android 기기에 푸시 알림을 보내고 있습니다.iOs가 포함 된 Phonegap 푸시 알림 플러그인

iOs에 알림을 보내는 방법을 알아 내려고하고 있습니다.

내가 https://developers.google.com/mobile/add?platform=ios&cntapi=gcm&cnturl=https:%2F%2Fdevelopers.google.com%2Fcloud-messaging%2Fios%2Fclient&cntlbl=Continue%20Adding%20GCM%20Support&%3Fconfigured%3Dtrue

안드로이드와 같은 클라이언트 응용 프로그램 같은 방식에서

I'get 토큰에 등록했습니다 나는 클라이언트의 토큰을 얻을 후

var push = PushNotification.init({ 
     android: { 
      senderID: "5993...475" 
     }, 
     ios: { 
      alert: "true", 
      badge: true, 
      sound: 'false' 
     }, 
     windows: {} 
    }); 

push.on('registration', function(data) { 

    $.ajax({ 
     url: '/save-token/', 
     data: {token: data.registrationId}, 
     success: function (json) { 

     } 
    }); 


}); 

, 나는 푸시 알림을 send'em하려고 :

$to = ModelGcmTokens::getInstance()->getToken($userId); 

$API_KEY = 'AIzaS...HcEYC346zQ'; 


     $message = array(
      'data' => array(
       'title' => ($title) ? $title : 'Test!', 
       'message' => $message 
      ), 
      'to' => $to 
     ); 

     $message = json_encode($message); 

     $ch = curl_init(); 

     curl_setopt($ch, CURLOPT_URL,"https://gcm-http.googleapis.com/gcm/send"); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $message); 


     curl_setopt($ch, CURLOPT_HTTPHEADER, array(
      "Authorization:key={$API_KEY}", 
      "Content-Type:application/json", 
     )); 

     // receive server response ... 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

     $server_output = curl_exec ($ch); 

     curl_close ($ch); 

     // further processing .... 
     if ($server_output == "OK") { 

      return true; 
     } else { 

      return false; 
     } 

구글 클라우드 메시징 InvalidRegistration와 오류 응답 :

{"multicast_id":4701637331500989392,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]} 

내가이 오류를봤을 때 - 클라이언트의 토큰이 잘못되었다고 말했습니다. 하지만 안드로이드에서와 같은 스크립트로 얻을 수 있습니다. 그리고 그것은 안드로이드에서 작동합니다.

유일한 차이점, 내가 볼 것을 - 토큰의 형식은 다음과 같습니다

enter image description here

사람이 내가 iOS에서 작동 푸시 플러그인을 얻는 방법을 말해 줄래? iOs 토큰의 문제점은 무엇이며 iOs가 수신 할 수 있도록 GCM에 메시지를 보내려면 어떻게해야합니까?

미리 조언 해 주셔서 감사합니다. 나는 정말로 붙어있다.

+0

Apple 푸시는 푸시 보내기 환경, 개발 환경 및 푸시 생성 환경이 서로 다릅니다. dev 토큰을 구해서 prod 환경으로 보내거나 그 반대로 보내면 작동하지 않습니다. iOS에 푸시를 보내려는 환경을 알고 있습니까? – Gruntcakes

+0

음, 프로덕션 키를 가지고 프로덕션 서버에 보냅니다. –

+0

그리고 '프로덕션'또는 '프로덕션'토큰을 얻는 방법을 실제로 이해하지 못합니다. 나는 GCM 서버에 신호를 보내고 거기에서 토큰을 얻을 때 플러그인의 마술을 통해 그들을 얻는다. 어떤 종류의 토큰 이냐 - 나는 모른다. 하지만 프로덕션 p12 키를 GCM 서버에 업로드 한 이후 프로덕션으로 간주됩니다. –

답변

3

init 메소드를 호출하는 방법은 APNS가 아닌 GCM에서 등록 ID를 요청합니다. 당신은 폰갭 - 플러그인 푸시 저장소에 GCM on iOS에 대한 설명서를 읽어 보면 당신은 초기화는 다음과 같이 호출 할 필요가 있음을 볼 수 있습니다 :

var push = PushNotification.init({ 
    android: { 
     senderID: "5993...475" 
    }, 
    ios: { 
     senderID: "5993...475", 
     gcmSandbox: true, 
     alert: "true", 
     badge: true, 
     sound: 'false' 
    }, 
    windows: {} 
}); 

아이폰 OS 옵션이 GCM에 등록하는 senderID이있는 경우.

또한 APNS의 productiondevelopment 환경의 차이점을 알 수 없습니다. 글쎄, 당신은 이것에 관해 정말로 읽을 필요가있다. iOS 기기의 경우 productiondevelopment 환경에 따라 APNS 환경이 다릅니다. 앱을 development으로 설정하고 production을 통해 푸시를 보내면 절대로 장치에 도달하지 않습니다.

왜 내가 APNS에 대해 이야기하고 있는지 물을 수 있습니다. 이는 iOS에서 GCM을 사용하면 푸시 메시지를 GCM으로 전송 한 다음 GCM에서 메시지를 APNS 서버로 전달하고 결국 기기로 전송하기 때문입니다.

+0

고마워요. 많은 사람.이 문구는 'iOS 옵션에 senderID가 있으면 GCM에 등록됩니다.'- 너무 간단하고 sooooo가 중요합니다. 다시 한 번 감사드립니다! –

+0

Simon, 다음 문제를 살펴 본다면 정말 고맙겠습니다. 나는 지금 어떤 registrationId도 얻지 못한다. http://stackoverflow.com/questions/38268507/gcm-registrationid-is-not-received-on-phonegap-push-plugin –

관련 문제