Created
January 21, 2017 02:53
-
-
Save Orange168/f40de8f1796cfcd1b81cc7908226b7b7 to your computer and use it in GitHub Desktop.
极光推送官方案例
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.content.BroadcastReceiver; | |
import android.content.Context; | |
import android.content.Intent; | |
import android.os.Bundle; | |
import android.text.TextUtils; | |
import android.util.Log; | |
import cn.jpush.android.api.JPushInterface; | |
import com.moement.view.main.activity.GroomingActivity; | |
import java.util.Iterator; | |
import org.json.JSONException; | |
import org.json.JSONObject; | |
/** | |
* Created by Edward.D.Lin on 17-1-20. | |
*/ | |
public class JPushReceive extends BroadcastReceiver { | |
private static final String TAG = "JPush"; | |
@Override | |
public void onReceive(Context context, Intent intent) { | |
Bundle bundle = intent.getExtras(); | |
Log.d(TAG, "[JPushReceive] onReceive - " + intent.getAction() + ", extras: " + printBundle(bundle)); | |
if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) { | |
String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID); | |
Log.d(TAG, "[JPushReceive] 接收Registration Id : " + regId); | |
//send the Registration Id to your server... | |
} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) { | |
Log.d(TAG, "[JPushReceive] 接收到推送下来的自定义消息: " + bundle.getString(JPushInterface.EXTRA_MESSAGE)); | |
processCustomMessage(context, bundle); | |
} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) { | |
Log.d(TAG, "[JPushReceive] 接收到推送下来的通知"); | |
int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID); | |
Log.d(TAG, "[JPushReceive] 接收到推送下来的通知的ID: " + notifactionId); | |
} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) { | |
Log.d(TAG, "[JPushReceive] 用户点击打开了通知"); | |
//打开自定义的Activity | |
Intent i = new Intent(context, GroomingActivity.class); | |
i.putExtras(bundle); | |
//i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | |
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP ); | |
context.startActivity(i); | |
} else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) { | |
Log.d(TAG, "[JPushReceive] 用户收到到RICH PUSH CALLBACK: " + bundle.getString(JPushInterface.EXTRA_EXTRA)); | |
//在这里根据 JPushInterface.EXTRA_EXTRA 的内容处理代码,比如打开新的Activity, 打开一个网页等.. | |
} else if(JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) { | |
boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, false); | |
Log.w(TAG, "[JPushReceive]" + intent.getAction() +" connected state change to "+connected); | |
} else { | |
Log.d(TAG, "[JPushReceive] Unhandled intent - " + intent.getAction()); | |
} | |
} | |
// 打印所有的 intent extra 数据 | |
private static String printBundle(Bundle bundle) { | |
StringBuilder sb = new StringBuilder(); | |
for (String key : bundle.keySet()) { | |
if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) { | |
sb.append("\nkey:" + key + ", value:" + bundle.getInt(key)); | |
}else if(key.equals(JPushInterface.EXTRA_CONNECTION_CHANGE)){ | |
sb.append("\nkey:" + key + ", value:" + bundle.getBoolean(key)); | |
} else if (key.equals(JPushInterface.EXTRA_EXTRA)) { | |
if (TextUtils.isEmpty(bundle.getString(JPushInterface.EXTRA_EXTRA))) { | |
Log.i(TAG, "This message has no Extra data"); | |
continue; | |
} | |
try { | |
JSONObject json = new JSONObject(bundle.getString(JPushInterface.EXTRA_EXTRA)); | |
Iterator<String> it = json.keys(); | |
while (it.hasNext()) { | |
String myKey = it.next().toString(); | |
sb.append("\nkey:" + key + ", value: [" + | |
myKey + " - " +json.optString(myKey) + "]"); | |
} | |
} catch (JSONException e) { | |
Log.e(TAG, "Get message extra JSON error!"); | |
} | |
} else { | |
sb.append("\nkey:" + key + ", value:" + bundle.getString(key)); | |
} | |
} | |
return sb.toString(); | |
} | |
//send msg to MainActivity | |
private void processCustomMessage(Context context, Bundle bundle) { | |
//if (MainActivity.isForeground) { | |
// String message = bundle.getString(JPushInterface.EXTRA_MESSAGE); | |
// String extras = bundle.getString(JPushInterface.EXTRA_EXTRA); | |
// Intent msgIntent = new Intent(MainActivity.MESSAGE_RECEIVED_ACTION); | |
// msgIntent.putExtra(MainActivity.KEY_MESSAGE, message); | |
// if (!ExampleUtil.isEmpty(extras)) { | |
// try { | |
// JSONObject extraJson = new JSONObject(extras); | |
// if (extraJson.length() > 0) { | |
// msgIntent.putExtra(MainActivity.KEY_EXTRAS, extras); | |
// } | |
// } catch (JSONException e) { | |
// | |
// } | |
// | |
// } | |
// context.sendBroadcast(msgIntent); | |
//} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment