package com.ntp.ui.notice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.igexin.sdk.PushConsts;
import com.igexin.sdk.PushManager;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import com.ntp.ui.MainActivity;
import com.ntp.util.ConstantValue;
import com.ntp.util.AppConfig;
import org.apache.http.Header;
import org.json.JSONObject;
/**
* 接受透传消息
*/
public class PushBroadcastReceiver extends BroadcastReceiver {
private AsyncHttpClient asyncHttpClient=new AsyncHttpClient();
private static final String TAG = "PushBroadcastReceiver";
private static final String HOMEWORK="homework";//推送消息类型为作业消息
private static final String COMMENT="comment";//推送消息类型为回帖消息
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Log.d("GeTuiSdk", "onReceive() action=" + bundle.getInt("action"));
switch (bundle.getInt(PushConsts.CMD_ACTION)) {
case PushConsts.GET_MSG_DATA:
// 获取透传数据
// String appid = bundle.getString("appid");
byte[] payload = bundle.getByteArray("payload");
String taskId = bundle.getString("taskid");
String messageId = bundle.getString("messageid");
// smartPush第三方回执调用接口,actionid范围为90000-90999,可根据业务场景执行
boolean result = PushManager.getInstance().sendFeedbackMessage(context, taskId, messageId, 90001);
System.out.println("第三方回执接口调用" + (result ? "成功" : "失败"));
if (payload != null) {
String data = new String(payload);
Log.d("GeTuiSdk", "Got Payload:" + data);
AppConfig.setNoticeRed(context, true);
context.sendBroadcast(new Intent(MainActivity.SHOW_NOTICE_ACTION));
if (data.equals(HOMEWORK)){//作业消息
AppConfig.setHomeworkRed(context, true);
if (NoticeFragment.homeworkRed!=null){
NoticeFragment.homeworkRed.setVisibility(View.VISIBLE);
}
}else if (data.equals(COMMENT)){//回帖消息
AppConfig.setCommentRed(context, true);
if (NoticeFragment.commentRed!=null){
NoticeFragment.commentRed.setVisibility(View.VISIBLE);
}
}
}
break;
case PushConsts.GET_CLIENTID:
// 获取ClientID(CID)
// 第三方应用需要将CID上传到第三方服务器,并且将当前用户帐号和CID进行关联,以便日后通过用户帐号查找CID进行消息推送
// 有些情况下ClientID可能会发生变化,为保证获取最新的ClientID,请应用程序在每次获取ClientID广播后,都能进行一次关联绑定
String cid = bundle.getString("clientid");
Log.d(TAG, "clientId=" + cid);
String name= AppConfig.getLoadName(context);
Log.d(TAG,"name="+name);
//用户没有登录,取消上传
if (name.trim().equals("")){
break;
}
RequestParams params=new RequestParams();
params.put("CID",cid);
params.put("username",name);
//上传用户名和clientID
asyncHttpClient.post(ConstantValue.PATH_UID_CID,params,new JsonHttpResponseHandler(){
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
super.onSuccess(statusCode, headers, response);
Log.i(TAG,response.toString());
}
});
break;
default:
break;
}
}
}