JLChen
2021-11-30 efad979b6fae76fb37a4de7e94e6bac0a85cb72c
HDL-ON_Android/Other/JPush/JPushReceiver.cs
@@ -1,26 +1,30 @@

using System;
using Android.App;
using Android.Content;
using CN.Jpush.Android.Api;
using CN.Jpush.Android.Service;
using HDL_ON;
using HDL_ON.DAL.Server;
using Shared;
using Android.OS;
namespace HDL_ON_Android
{
{
    [BroadcastReceiver(Enabled = true, Exported = false)]
    [Android.App.IntentFilter(new string[]
    {
        "cn.jpush.android.intent.RECEIVE_MESSAGE"
    },
    Categories=new string[]
    Categories = new string[]
    {
        "com.hdl.onpro"
    })]
    public class JPushReceiver : JPushMessageReceiver
    {
    {
        private static string TAG = "JPushReceiver";
        /// <summary>
        /// 用户点击打开了通知
@@ -30,7 +34,8 @@
        /// <param name="notificationMessage"></param>
        public override void OnNotifyMessageOpened(Context context, NotificationMessage notificationMessage)
        {
            base.OnNotifyMessageOpened(context, notificationMessage);
            //2020-12-23 解决点击通知栏打开不了APP问题
            //base.OnNotifyMessageOpened(context, notificationMessage);
            OpenNotification(context, notificationMessage);
        }
@@ -50,12 +55,50 @@
                Content = notificationMessage.NotificationContent,
                Extras = notificationMessage.NotificationExtras
            };
            System.Console.WriteLine("PushMes title : " + pushMes.Title);
            System.Console.WriteLine("PushMes message : " + pushMes.Content);
            System.Console.WriteLine("PushMes extras : " + pushMes.Extras);
            HDLCommon.Current.AdjustPushMessage(pushMes);
            var jpushExpandData = GetJPushExpandData(pushMes);
            if (jpushExpandData != null && jpushExpandData.messageType != null)
            {
                pushMes.messageType = jpushExpandData.messageType;
                pushMes.expantContent = jpushExpandData.expantContent;
                pushMes.HomeId = jpushExpandData.homeId;
                Utlis.WriteLine("PushMes messageType : " + pushMes.messageType);
            }
            Utlis.WriteLine("PushMes title : " + pushMes.Title);
            Utlis.WriteLine("PushMes message : " + pushMes.Content);
            Utlis.WriteLine("PushMes extras : " + pushMes.Extras);
            Utlis.WriteLine("PushMes HomeId : " + pushMes.HomeId);
            Shared.Application.RunOnMainThread(() =>
            {
                HDLCommon.Current.AdjustPushMessage(pushMes);
            });
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pushMes"></param>
        /// <returns></returns>
        static ExpandData GetJPushExpandData(JPushMessageInfo pushMes)
        {
            try
            {
                if (pushMes.Extras != null)
                {
                    var jpushExpandData = Newtonsoft.Json.JsonConvert.DeserializeObject<JPushExpandData>(pushMes.Extras.ToString());
                    return Newtonsoft.Json.JsonConvert.DeserializeObject<ExpandData>(jpushExpandData.expandData);
                }
                return null;
            }
            catch
            {
                return null;
            }
        }
        /// <summary>
        /// 注册成功回调
@@ -65,7 +108,6 @@
        public override void OnRegister(Context context, string p1)
        {
            base.OnRegister(context, p1);
            Utlis.WriteLine("JPushOnRegister: " + p1);
        }
@@ -79,8 +121,6 @@
        //{
        //    try
        //    {
        //        if (JPushMessageInfo.Extras.Contains("Offline") == true)
        //        {
        //            Shared.Application.RunOnMainThread(() =>
@@ -108,12 +148,13 @@
        //}
        /// <summary>
        /// 打开消息显示界面
        /// 打开消息显示界面.010000
        /// </summary>
        /// <param name="context"></param>
        /// <param name="notificationMessage"></param>
        private void OpenNotification(Context context, NotificationMessage notificationMessage)
        {
        public static void OpenNotification(Context context, NotificationMessage notificationMessage)
        {
            try
            {
                var pushMes = new JPushMessageInfo()
@@ -122,30 +163,74 @@
                    Content = notificationMessage.NotificationContent,
                    Extras = notificationMessage.NotificationExtras
                };
                System.Console.WriteLine("PushMes title : " + pushMes.Title);
                System.Console.WriteLine("PushMes message : " + pushMes.Content);
                System.Console.WriteLine("PushMes extras : " + pushMes.Extras);
                if (Shared.Application.Activity == null)
                var jpushExpandData = GetJPushExpandData(pushMes);
                if (jpushExpandData != null && jpushExpandData.messageType != null)
                {
                    var tempIntent = new Intent(context, typeof(Shared.BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class);
                    tempIntent.SetFlags(ActivityFlags.BroughtToFront);
                    context.StartActivity(tempIntent);
                    HDLCommon.Current.AdjustPushMessage(pushMes);
                    pushMes.messageType = jpushExpandData.messageType;
                    pushMes.expantContent = jpushExpandData.expantContent; ;
                    pushMes.HomeId = jpushExpandData.homeId;
                    Utlis.WriteLine("PushMes messageType : " + pushMes.messageType);
                }
                else
                {
                    (Shared.Application.Activity as BaseActivity).MoveToFront();
                    HDLCommon.Current.AdjustPushMessage(pushMes);
                }
                Utlis.WriteLine("PushMes title : " + pushMes.Title);
                Utlis.WriteLine("PushMes message : " + pushMes.Content);
                Utlis.WriteLine("PushMes extras : " + pushMes.Extras);
                Utlis.WriteLine("PushMes HomeId : " + pushMes.HomeId);
                Intent i = new Intent(context, typeof(BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class);
                i.SetFlags(ActivityFlags.NewTask);
                context.StartActivity(i);
                //解析msg
                AdjustPushMessage(pushMes);
                //Shared.Application.RunOnMainThread(() =>
                //{
                //    if (Shared.Application.Activity == null)
                //    {
                //        var tempIntent = new Intent(context, typeof(Shared.BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class);
                //        tempIntent.SetFlags(ActivityFlags.BroughtToFront);
                //        context.StartActivity(tempIntent);
                //        HDLCommon.Current.AdjustPushMessage(pushMes);
                //    }
                //    else
                //    {
                //        (Shared.Application.Activity as BaseActivity).MoveToFront();
                //        HDLCommon.Current.AdjustPushMessage(pushMes);
                //    }
                //});
            }
            catch
            {
            }
            //catch (Exception ex)
            //{
            //    Utlis.WriteLine(ex.ToString());
            //}
        }
    }
        public static void AdjustPushMessage(JPushMessageInfo pushMes)
        {
            new System.Threading.Thread(new System.Threading.ThreadStart(() =>
            {
                while (MainPage.BasePageView == null)
                {
                    System.Threading.Thread.Sleep(300);
                }
                Shared.Application.RunOnMainThread(() =>
                {
                    HDLCommon.Current.AdjustPushMessage(pushMes);
                });
            })).Start();
        }
    }
}