Android友盟推送

当前版本号:v3.0.5

1.下载SDK解压并导入(import module,compile project(':PushSDK')),里面有demo,用demo的包名去官网添加一个应用,然后替换demo中的manifest文件里面的appkey和message_secret,就可以直接运行。

2.初始化SDK

  1.  
    public class App extends Application {
  2.  
     
  3.  
    public PushAgent mPushAgent;
  4.  
     
  5.  
    @Override
  6.  
    public void onCreate() {
  7.  
    super.onCreate();
  8.  
    mPushAgent = PushAgent.getInstance(this);
  9.  
    //注册推送服务,每次调用register方法都会回调该接口
  10.  
    mPushAgent.register(new IUmengRegisterCallback() {
  11.  
     
  12.  
    @Override
  13.  
    public void onSuccess(String deviceToken) {
  14.  
    //注册成功会返回device token
  15.  
    Log.e("deviceToken-------",deviceToken);
  16.  
    }
  17.  
     
  18.  
    @Override
  19.  
    public void onFailure(String s, String s1) {
  20.  
     
  21.  
    }
  22.  
    });
  23.  
     
  24.  
    mPushAgent.setPushIntentServiceClass(UmengPushIntentService.class);
  25.  
     
  26.  
    }
  27.  
    }

这样就已经可以测试了。

3.打开指定页面

包名加activity名,com.umeng.demo.SecondActivity

4.自定义参数

自定义一个service去继承UmengMessageService

public class UmengPushIntentService extends UmengMessageService {
  1.  
    @Override
  2.  
    public void onMessage(Context context, Intent intent) {
  3.  
    Intent data = new Intent(intent);
  4.  
    data.setClass(context, TestActivity.class);
  5.  
    //需为Intent添加Flag:Intent.FLAG_ACTIVITY_NEW_TASK,否则无法启动Activity。
  6.  
    data.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  7.  
    context.startActivity(data);
  8.  
     
  9.  
    }
  10.  
     
  11.  
    }

在跳转的activity中去接收数据并解析

  1.  
    public class TestActivity extends AppCompatActivity {
  2.  
     
  3.  
    public static final String TAG = "TestActivity";
  4.  
     
  5.  
    @Override
  6.  
    protected void onCreate(Bundle savedInstanceState) {
  7.  
    super.onCreate(savedInstanceState);
  8.  
    setContentView(R.layout.activity_test);
  9.  
     
  10.  
     
  11.  
    final String message = getIntent().getStringExtra(MESSAGE_BODY);
  12.  
    if (TextUtils.isEmpty(message))
  13.  
    return;
  14.  
    final UMessage msg;
  15.  
    try {
  16.  
    msg = new UMessage(new JSONObject(message));
  17.  
    UTrack.getInstance(this).trackMsgClick(msg);
  18.  
    Map<String, String> extra = msg.extra;
  19.  
    Log.d(TAG, "message=" + message); //消息体
  20.  
    Log.d(TAG, "custom=" + msg.custom); //自定义消息的内容
  21.  
    Log.d(TAG, "title=" + msg.title); //通知标题
  22.  
    Log.d(TAG, "text=" + msg.text); //通知内容
  23.  
    AlertDialog dialog;
  24.  
    if (null != extra && extra.containsKey("msgType"))
  25.  
    dialog = new AlertDialog.Builder(this)
  26.  
    .setTitle("if消息提示")
  27.  
    .setMessage(msg.text+"11111")
  28.  
    .setCancelable(false)
  29.  
    .setPositiveButton("确认", new DialogInterface.OnClickListener() {
  30.  
    @Override
  31.  
    public void onClick(DialogInterface dialog, int which) {
  32.  
    }
  33.  
    })
  34.  
    .create();
  35.  
    else
  36.  
    dialog = new AlertDialog.Builder(this)
  37.  
    .setTitle("else消息提示")
  38.  
    .setMessage(msg.text)
  39.  
    .setCancelable(false)
  40.  
    .setPositiveButton("确认", null)
  41.  
    .create();
  42.  
     
  43.  
    dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
  44.  
    @Override
  45.  
    public void onDismiss(DialogInterface dialog) {
  46.  
    onBackPressed();
  47.  
    }
  48.  
    });
  49.  
    dialog.show();
  50.  
    } catch (JSONException e) {
  51.  
    e.printStackTrace();
  52.  
    }
  53.  
    }
  54.  
    }

自定义的service需要在application类中调用

mPushAgent.setPushIntentServiceClass(UmengPushIntentService.class);

同时需要在manifest在注册

  1.  
    <service android:name=".UmengPushIntentService"
  2.  
    android:process=":push"/>

官方文档:http://dev.umeng.com/push/android/integration#4