2013-02-25 4 views
0

푸시 알림 및 Android 애플리케이션 개발을 위해 Adobe phonegap 플러그인을 사용하고 있습니다. 푸시 알림을 보낼 수PhoneGap Adobe 플러그인을 사용하는 Android 푸시 알림

http://www.adobe.com/devnet/phonegap/articles/android-push-notifications-with-phonegap.html

서버는 컴파일 안드로이드 코드 내가 REGID에 등록 성공을 얻고 후

<?php 
// Replace with real BROWSER API key from Google APIs 
$apiKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
// Replace with real client registration IDs 
$registrationIDs = array("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); 
// Message to be sent 
$message = "there is an update, waiting for you to install..."; 
// Set POST variables 
$url = 'https://android.googleapis.com/gcm/send'; 

$fields = array(
      'registration_ids' => $registrationIDs, 
      'data'    => array("message" => $message), 
      ); 

$headers = array( 
       'Authorization: key=' . $apiKey, 
       'Content-Type: application/json' 
      ); 

// Open connection 
$ch = curl_init(); 

// Set the url, number of POST vars, POST data 
curl_setopt($ch, CURLOPT_URL, $url); 

curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

// Execute post 
$result = curl_exec($ch); 

// Close connection 
curl_close($ch); 

echo $result; 

로 PHP입니다.

알림을 전송 한 후 응답이

{ 
multicast_id: 5022434288122138000, 
success: 1, 
failure: 0, 
canonical_ids: 0, 
results: [ 
    { 
    message_id: "0:1361774232591520%8eab850df9fd7ecd" 
    } 
] 
} 

로 성공하지만 여전히 내 휴대 전화에 알림을 얻을 수 없습니다입니다.

잘 모르겠습니다.

편집 :

내가 푸시 알림 메시지가 표시되었지만 표시되지 않은

죄송합니다.

+0

죄송합니다. 푸시 알림 메시지가 표시되었지만 표시되지 않았습니다. – Pawan

+0

bcoz에게 알림을 보낼 수 없습니다. 작성한 것과 동일한 코드를 작성한 후 내 서버에이 페이지를 업로드 한 후 실행하면 "Unauthorized Error 401"과 같은 오류가 발생했습니다. 이 내 URL http://stackoverflow.com/questions/23677313/android-phonegap-send-push-notification-using-google-cloud-messaging-using-php –

답변

0

나는 여기에 답을 발견
http://www.adobe.com/devnet/phonegap/articles/android-push-notifications-with-phonegap.html#articlecontentAdobe_numberedheader_4

작품을 나를 위해 지금 예상대로!

상태 표시 줄 알림

플러그인은 단순히 당신이 그것으로 무엇을위한 메시지인지 앱이 실행 여부를-하지만 거기에서 그것으로 아무것도하지 않고있다, 당신이 선택을 수신하기 때문에. 일반적인 요구 사항 중 하나는 기본 상태 표시 줄에 메시지를 표시하는 것입니다. iOS에서는 프로세스가 달라 알림이 자동으로 표시됩니다. 하지만 Android에서는 명시 적으로 코드를 작성해야합니다.

하나의 옵션은 Cordova StatusBarNotification 플러그인을이 플러그인과 함께 사용하는 것입니다. 당신이 빠른 솔루션을 원한다면, 단순히 다음 코드와 같이 당신의 GCMIntentService.java의 onMessage() 함수에 네이티브 자바 코드를 추가

또한
String message = extras.getString("message"); 
String title = extras.getString("title"); 
Notification notif = new Notification(android.R.drawable.btn_star_big_on, message, System.currentTimeMillis()); 
notif.flags = Notification.FLAG_AUTO_CANCEL; 
notif.defaults |= Notification.DEFAULT_SOUND; 
notif.defaults |= Notification.DEFAULT_VIBRATE; 

Intent notificationIntent = new Intent(context, TestSampleApp.class); 
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 

notif.setLatestEventInfo(context, title, message, contentIntent); 
String ns = Context.NOTIFICATION_SERVICE; 
NotificationManager mNotificationManager = (NotificationManager) 
context.getSystemService(ns); 
mNotificationManager.notify(1, notif); 

지원하기 위해 파일의 맨 위에 다음 가져 오기를 추가 위의 코드는 :

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 

DroidGap을 확장하는 스텁 클래스의 이름으로 YourActivityClassName.class을 교체해야합니다. 예를 들어, 샘플 프로젝트에서 MainActivity라고합니다.

+0

안녕하세요, 위의 방법을 사용해 보았습니다. 나는 이유를 모른다. 하지만 "401"오류가 발생합니다. 이것을 실행하는 데 필요한 종류의 허가를 제공해야합니까? – user3201500