[フレーム]
Last Updated: February 25, 2016
·
4.202K
· danielerigo

Android GCM and PHP

First of all you need to go to https://code.google.com/apis/console/ and get the "Project Number" and the "API key". Then include "gcm.jar" in your project, you will find it under "your-android-sdk-folder/extras/google/gcm/gcm-client/dist/".

Manifest Permissions:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.yourpackage.gcmtest.permission.C2D_MESSAGE" />

Manifest Receiver:

<receiver
 android:name="com.google.android.gcm.GCMBroadcastReceiver"
 android:permission="com.google.android.c2dm.permission.SEND" >
 <intent-filter>
 <action android:name="com.google.android.c2dm.intent.RECEIVE" />
 <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
 <category android:name="com.yourpackage.gcmtest" />
 </intent-filter>
</receiver>

Manifest Service:

<service android:name=".GCMIntentService" />

GCMIntentService code:

/**
 * {@link IntentService} responsible for handling GCM messages.
 */
public class GCMIntentService extends GCMBaseIntentService {
 public GCMIntentService() {
 super("123ProjectNumber123");
 Log.d("GCM", "GCMIntentService");
 }
 @Override
 protected void onError(Context arg0, String arg1) { 
 Log.d("GCM", "onError: "+arg1);
 }
 @Override
 protected void onMessage(Context arg0, Intent arg1) {
 // Here you get the notification data
 Log.d("GCM", "onMessage: "+arg1.getStringExtra("message"));
 }
 @Override
 protected void onRegistered(Context arg0, String arg1) { 
 Log.d("GCM", "onRegistered: "+arg1); 
 }
 @Override
 protected void onUnregistered(Context arg0, String arg1) { 
 Log.d("GCM", "onUnregistered: "+arg1);
 }
}

This code register the device id:

// GCMRegistrar
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
if (GCMRegistrar.isRegistered(this)) {
 Log.d("GCM", "GCMRegistrar isRegistered");
}
String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
 GCMRegistrar.register(this, "522646XXXXXX");
 regId = GCMRegistrar.getRegistrationId(this);
 Log.d("GCM", "Register: " + regId);
} else {
 Log.d("GCM", "Already registered as: " + regId);
}
txt1.setText(regId);

SERVER SIDE PHP CODE:

<?php
$message= "Hi, I am a GCM message! [".date("Y-m-d H:i:s")."]";
$pushCounter=0;
$registatoin_ids=array();
// The device Registration ID (regId)
$registatoin_ids[]="65d4f6ds4f6ds4f6fa546s5df46asd5f46asdf54a6sdf54a6sdXXXXXXXXXX"; 
$pushCounter++;
if($pushCounter>0){
 $gcm=new GCM();
 $message=array( "message"=> $message ); 
 $result_android=$gcm->send_notification($registatoin_ids,$message);
 echo $result_android;
}
class GCM{
 function __construct(){}
 public function send_notification($registatoin_ids,$message){
 // GOOGLE API KEY
 define("GOOGLE_API_KEY","AISfldleuyvtv438v7tvXXXXXX");
 $url="https://android.googleapis.com/gcm/send";
 $fields=array(
 "registration_ids"=>$registatoin_ids,
 "data"=>$message
 );
 var_dump($fields);
 $headers=array(
 "Authorization: key=".GOOGLE_API_KEY,
 "Content-Type: application/json"
 );
 $ch=curl_init();
 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_SSL_VERIFYPEER,false);
 curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($fields));
 $result=curl_exec($ch);
 if($result===FALSE){
 die("Curl failed: ".curl_error($ch));
 }
 curl_close($ch);
 echo $result;
 }
}
?> 

AltStyle によって変換されたページ (->オリジナル) /