1、申请推送服务
服务地址:http://xg.qq.com/
2、下载SDK
下载地址:http://xg.qq.com/xg/help/ctr_help/download
3、拷贝SDK下libs目录到Eclipse工程目录下
Eclipse工程的包名:com.abc.demo
Eclipse应用程序名为:AbcPush
4、刷新Eclipse工程,选择三个jar文件点右键Build Path 添加到路径中
5、在工程中引用推送包
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Notification;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.media.RingtoneManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.TranslateAnimation;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import com.tencent.android.tpush.XGCustomPushNotificationBuilder;
import com.tencent.android.tpush.XGIOperateCallback;
import com.tencent.android.tpush.XGPushClickedResult;
import com.tencent.android.tpush.XGPushConfig;
import com.tencent.android.tpush.XGPushManager;
import com.tencent.android.tpush.common.Constants;
6、在工程文件MainActivity添加注册推送代码
Message m = null;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
XGPushConfig.enableDebug(this, true);
setContentView(R.layout.activity_main);
// 1.»ñÈ¡É豸Token
Handler handler = new HandlerExtension(MainActivity.this);
m = handler.obtainMessage();
// ×¢²á½Ó¿Ú
XGPushManager.registerPush(getApplicationContext(),
new XGIOperateCallback() {
@Override
public void onSuccess(Object data, int flag) {
Log.w(Constants.LogTag,
"+++ register push sucess. token:" + data);
m.obj = "+++ register push sucess. token:" + data;
m.sendToTarget();
}
@Override
public void onFail(Object data, int errCode, String msg) {
Log.w(Constants.LogTag,
"+++ register push fail. token:" + data
+ ", errCode:" + errCode + ",msg:"
+ msg);
m.obj = "+++ register push fail. token:" + data
+ ", errCode:" + errCode + ",msg:" + msg;
m.sendToTarget();
}
});
}
private static class HandlerExtension extends Handler {
WeakReference<MainActivity> mActivity;
HandlerExtension(MainActivity activity) {
mActivity = new WeakReference<MainActivity>(activity);
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
MainActivity theActivity = mActivity.get();
if (theActivity == null) {
theActivity = new MainActivity();
}
if (msg != null) {
Log.w(Constants.LogTag, msg.obj.toString());
//TextView textView = (TextView) theActivity
// .findViewById(R.id.deviceToken);
//textView.setText(XGPushConfig.getToken(theActivity));
}
// XGPushManager.registerCustomNotification(theActivity,
// "BACKSTREET", "BOYS", System.currentTimeMillis() + 5000, 0);
}
}
7、在AndroidManifest.xml的 中添加配置
<!-- 【必须】 信鸽receiver广播接收 -->
<receiver
android:name="com.tencent.android.tpush.XGPushReceiver"
android:process=":xg_service_v2" >
<intent-filter android:priority="0x7fffffff" >
<!-- 【必须】 信鸽SDK的内部广播 -->
<action android:name="com.tencent.android.tpush.action.SDK" />
<action android:name="com.tencent.android.tpush.action.INTERNAL_PUSH_MESSAGE" />
<!-- 【必须】 系统广播:网络切换 -->
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<!-- 【可选】 系统广播:开屏 -->
<action android:name="android.intent.action.USER_PRESENT" />
<!-- 【可选】 一些常用的系统广播,增强信鸽service的复活机会,请根据需要选择。当然,你也可以添加APP自定义的一些广播让启动service -->
<action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
<!-- 【可选】 usb相关的系统广播,增强信鸽service的复活机会,请根据需要添加 -->
<intent-filter android:priority="0x7fffffff" >
<action android:name="android.intent.action.MEDIA_UNMOUNTED" />
<action android:name="android.intent.action.MEDIA_REMOVED" />
<action android:name="android.intent.action.MEDIA_CHECKING" />
<action android:name="android.intent.action.MEDIA_EJECT" />
<data android:scheme="file" />
</intent-filter>
</receiver>
<!-- 【必须】 信鸽service -->
<service
android:name="com.tencent.android.tpush.service.XGPushService"
android:exported="true"
android:persistent="true"
android:process=":xg_service_v2" />
<!-- 【必须】 通知service,其中android:name部分要改为当前包名 -->
<service
android:name="com.tencent.android.tpush.rpc.XGRemoteService"
android:exported="true" >
<intent-filter>
<!-- 【必须】 请修改为当前APP名包.PUSH_ACTION,如demo的包名为:com.qq.xgdemo -->
<action android:name="com.abc.demo.PUSH_ACTION" />
</intent-filter>
</service>
<!-- 已废弃,可删除之;若不删除也不会有任何副作用 -->
<!--<service
android:name="com.tencent.android.tpush.service.XGDaemonService"
android:process=":qq_push_daemon" />
-->
<!-- 【可选】信鸽拉起其他APP应用,若应用在本地找不到可以自动下载 -->
<!--
<service
android:name="com.tencent.android.tpush.XGDownloadService"
android:enabled="true"
android:exported="false" />
-->
<!-- 【可选】APP实现的Receiver,用于接收消息透传和操作结果的回调,请根据需要添加 -->
<!-- YOUR_PACKAGE_PATH.CustomPushReceiver需要改为自己的Receiver: -->
<!-- 【必须】 请修改为APP的AccessId,“21”开头的10位数字,中间没空格 -->
<meta-data
android:name="XG_V2_ACCESS_ID"
android:value="**您的值**" />
<!-- 【必须】 请修改为APP的AccessKey,“A”开头的12位字符串,中间没空格 -->
<meta-data
android:name="XG_V2_ACCESS_KEY"
android:value="=**您的值**" />
</application>
<!-- 【必须】 信鸽SDK所需权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- 【常用】 信鸽SDK所需权限 -->
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 【可选】 信鸽SDK所需权限 -->
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
8、运行后可以获得设备的token,在打印的日志中找。(为了能连接到腾讯的推送服务器如果本机有防火墙应该先要关闭防火墙,如果是在WiFi条件下测试android程序的话)
9、在 腾讯后台(http://xg.qq.com/xg/apps/ctr_app) 新建“接入应用”,应用名称为android工程的程序名,包名为包名,成功后,点应用配置,在测试设备里面输入获取的token。
10、创建推送通知
11、或者下载服务端程序php版本,修改simple_demo.php中的函数调用
<?php
require_once ('XingeApp.php');
//Android 版
//给单个设备下发通知
var_dump(XingeApp::PushTokenAndroid(腾讯后台创建的ACCESS ID, "腾讯后台创建SECRET KEY", "title", "content", "android获取到的token"));
12、记得到手机上查看你的app同名服务有没有启动;App应该有ico,不然可能收不到(腾讯后台说的)
13、感觉用程序推送比后台输入推送快
作者:moeryang 发表于2016/12/6 0:15:05 原文链接
阅读:37 评论:0 查看评论