using System;
using Android.App;
using Android.Content;
using Android.OS;
using CN.Jpush.Android.Api;
using CN.Jpush.Android.Service;
using HDL_ON;
using Shared;
namespace HDL_ON_Android
{
[BroadcastReceiver(Name = "com.hdl.onpro.JpushNotificationReceiver", Exported = false, Enabled = true)]
[IntentFilter(new string[] { "cn.jpush.android.intent.REGISTRATION",
"cn.jpush.android.intent.MESSAGE_RECEIVED",
"cn.jpush.android.intent.NOTIFICATION_RECEIVED",
"cn.jpush.android.intent.NOTIFICATION_OPENED",
"cn.jpush.android.intent.CONNECTION" }, Categories = new string[] { "com.hdl.onpro" })]
public class JpushNotificationReceiver : BroadcastReceiver
{
private static string TAG = "JpushNotificationReceiver";
private NotificationManager nm;
static string ACTION = "android.intent.action.BOOT_COMPLETED";
public override void OnReceive(Context context, Intent intent)
{
if (nm == null)
{
nm = (NotificationManager)context.GetSystemService(Context.NotificationService);
}
//base.OnReceive (context, intent);
try
{
Bundle bundle = intent.Extras;
if (intent.Action == ACTION)
{
//开机自动服务自动启动,PushService是要启动的服务
Intent service = new Intent(context, typeof(PushService));
context.StartService(service);
}
//接收Registration Id
if (JPushInterface.ActionRegistrationId == intent.Action)
{
string regId = bundle.GetString(JPushInterface.ExtraRegistrationId);
if (!string.IsNullOrEmpty(regId))
{
OnAppConfig.Instance.PushDeviceToken = regId;
//OnAppConfig.Instance.PhoneName = userPhoneName;
OnAppConfig.Instance.SaveUserConfig();
}
}
//用户点击打开了通知
else if (JPushInterface.ActionNotificationOpened == intent.Action)
{
OpenNotification(context, bundle);
}
//接受到推送下来的通知
else if (JPushInterface.ActionNotificationReceived == intent.Action)
{
//int notifactionId = bundle.GetInt(JPushInterface.ExtraNotificationId);
ReceivingNotification(context, bundle);
//Shared.Common.CommonPage.Instance.SingOut();
}
//接收到推送下来的自定义消息
else if (JPushInterface.ActionMessageReceived == intent.Action)
{
bundle.GetString(JPushInterface.ExtraMessage);
}
else
{
}
}
catch (System.Exception e)
{
System.Console.WriteLine("极光推送出错:" + e.Message);
}
}
///
/// 接收消息通知
///
/// Context.
/// Bundle.
private void ReceivingNotification(Context context, Bundle bundle)
{
String title = bundle.GetString(JPushInterface.ExtraNotificationTitle);
System.Console.WriteLine(TAG, " title : " + title);
String message = bundle.GetString(JPushInterface.ExtraAlert);
System.Console.WriteLine(TAG, "message : " + message);
String extras = bundle.GetString(JPushInterface.ExtraExtra);
System.Console.WriteLine(TAG, "extras : " + extras);
//处理极光消息推送的逻辑函数
AdjustJiguangMsgPush(title, message, extras);
}
///
/// 处理极光信息推送
///
/// 标题
/// 信息
/// 负载数据
public void AdjustJiguangMsgPush(string title, string message, string extras)
{
if (extras.Contains("Offline") == true)
{
Shared.Application.RunOnMainThread(() =>
{
//此帐号已在别处登录,您被迫下线
//ShowAlert("此帐号已在别处登录,您被迫下线");
//账号在别处登陆,被踢下线 跳转到登录页面
HDLCommon.Current.ShowAlert(Language.StringByID(StringId.LoggedOnOtherDevices));
});
return;
}
}
///
/// 打开消息显示界面
///
/// Context.
/// Bundle.
private void OpenNotification(Context context, Bundle bundle)
{
Intent i = new Intent(context, typeof(BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class);
i.PutExtras(bundle);
i.SetFlags(ActivityFlags.NewTask);
context.StartActivity(i);
String extras = bundle.GetString(JPushInterface.ExtraExtra);
//String myValue = "";
try
{
VideoMethod(extras);
//JSONObject extrasJson = new JSONObject(extras);
//myValue = extrasJson.OptString("myKey");
}
catch (Exception e)
{
System.Console.WriteLine(TAG, "Unexpected: extras is not a valid json", e);
return;
}
//if (TYPE_THIS.equals(myValue))
//{
//Intent mIntent = new Intent(context, ThisActivity.class);
//mIntent.putExtras(bundle);
//mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//context.startActivity(mIntent);
//}
//else if (TYPE_ANOTHER.equals(myValue))
//{
//Intent mIntent = new Intent(context, AnotherActivity.class);
//mIntent.putExtras(bundle);
//mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//context.startActivity(mIntent);
//}
}
///
/// android通知栏点击处理方法
///
/// 云端推过来的数据
private void VideoMethod(string hiddenJson)
{
Utlis.WriteLine("JPUSH:" + hiddenJson);
var hiddanJson = Newtonsoft.Json.Linq.JObject.Parse(hiddenJson);
if (hiddanJson == null)
{
return;
}
var json = Newtonsoft.Json.Linq.JObject.Parse(hiddanJson["HiddanJson"].ToString());
if (json == null)
{
return;
}
}
}
}