搭建GCM(服务端)

来源:互联网 发布:数据库工程师发展怎样 编辑:程序博客网 时间:2024/04/29 15:11

继上次GCM(客户端),这边再说一下服务端,服务端的网上资料五花八门,有php的有j2ee的,也有android的,还有chromeposter的,但是感觉android的比较亲切大笑,这边借鉴一下android的,说到底就是绑定一下regID,然后发送给服务器然后就盯着手机屏幕等消息ok了(前提是客户端可服务端regID一致),好了直接上马:

package com.example.gcmserverdemo;import java.io.IOException;import android.app.Activity;import android.os.Bundle;import android.os.Looper;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.Toast;import com.google.android.gcm.server.Message;import com.google.android.gcm.server.Result;import com.google.android.gcm.server.Sender;public class MainActivity extends Activity {private Button getToken;private Button sendMessage;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getToken = (Button) findViewById(R.id.getToken);getToken.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new Thread(new Runnable() {@Overridepublic void run() {/** * 这里请保持和客户端 的regId一致 */String devices = "APA91bF-EEpmKWyiqTIrdXKEDJSVu1pacx5ezmg5Pz6YoOTV9xE6TTWxEIox_Ju41zXN83ubDNBJ9fTGwBe0ttZbMvFeimcgq9TXRynVsa4xAyzujm3G8XedJbme-8R5yAMwpQ6Gf870lgSlHSSD-onNFxMeoTxuRA";// Client//devices = "APA91bHZSzdwaTLBdCPcJA9OcQrqyk3F97Rr4Z0TyWc0YFkAAZusHCHLXSLf1KtySzxStMm6Lw7CRR8wA0pd4YZCZ1Uf6WLHrdsQFHrPlfa_4OcIep2BXULP3XcecQFCcgMldqJEu9PwbWeCpor0kVn6DPJHrIJEnw";    /**     * 这个也是在google consle的项目中的注册的server端的apikey,请区分android key和ios key等;     */Sender sender = new Sender("AIzaSyBmp3sEsGXdeIukGnjl7mObLZJ9dvSB0NM");// Android// API// KEYMessage message = new Message.Builder().addData("message", "123456").build();// 傳送的訊息Result result = null;try {result = sender.send(message, devices, 5);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}if (result != null) {if (result.getMessageId() != null) {Looper.prepare();Toast.makeText(MainActivity.this, "result.getMessageId() = "+result.getMessageId(), 200).show();Log.i("result","getMessageId = " + result.getMessageId());String canonicalRegId = result.getCanonicalRegistrationId();Log.i("canonicalRegId", "canonicalRegId = "+ canonicalRegId);}}else {Log.i("result =","null");Toast.makeText(MainActivity.this, "result = null", 200).show();}}}).start();}});}}

代码很简单,主要是在注释的地方要小心一下,还有就是将sdkmanager中的extra下下载的Google Cloud Messaging for Android Library中的sdk\extras\google\gcm\gcm-server\dist中的 gcm-server.jar放到自己的libs下面,基本就OK了,当然记得要加权限,下面是我的mainfest:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.gcmserverdemo"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="21" />    <uses-permission android:name="android.permission.INTERNET" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

OK,到此GCM基本就好了,有兴趣的童鞋也可以到 GCM测试实例去下载我上传的sample。

0 0
原创粉丝点击