代码之家  ›  专栏  ›  技术社区  ›  progrAmmar

未为启动器应用程序设置挂起的意图附加项

  •  -1
  • progrAmmar  · 技术社区  · 9 年前

    我已经创建了一个名为 HomeActivity LaunchMode = SingleTask 和 CATEGORY_HOME 和 CATEGORY_LAUNCHER

    该活动与Firebase消息服务连接,以获取推送通知。Firebase服务添加了一些额外功能(从推送通知中收集并在

    public override void OnMessageReceived(RemoteMessage message)
    {
        Notification.Builder builder = new Notification.Builder(this);
        builder.SetSmallIcon(Resource.Drawable.Icon);
        Intent intent = new Intent(this, typeof(HomeActivity));
        intent.AddFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop);    
        intent.PutExtra(General.UPDATE_NOTIFIED, true);
        if(message.Data != null)
        {
            if (message.Data.Any())
            {
                foreach(KeyValuePair<string,string> kv in message.Data)
                {
                    intent.PutExtra(kv.Key, kv.Value);
                }
            }
        }
        PendingIntent pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.UpdateCurrent);
        builder.SetContentIntent(pendingIntent);
        builder.SetLargeIcon(BitmapFactory.DecodeResource(Resources, Resource.Drawable.app_logo));
        builder.SetContentTitle(message.GetNotification().Title);
        builder.SetContentText(message.GetNotification().Body);
        builder.SetDefaults(NotificationDefaults.Sound);
        builder.SetAutoCancel(true);
        NotificationManager notificationManager = (NotificationManager)GetSystemService(NotificationService);
        notificationManager.Notify(1, builder.Build());
    }
    

    在顶部,收到推送通知并单击,我可以访问 家庭活动 OnResume OnNewIntent(Intent intent)

    protected override void OnNewIntent(Intent intent)
    {
        bool updateNotification = intent.GetBooleanExtra(General.UPDATE_NOTIFIED, false); //Check if Extra is set
        this.Intent = intent;
        base.OnNewIntent(intent);    
    }
    

    但是当我在另一个由 家庭活动 但是没有额外的 Intent .

    我试过各种各样的旗子,包括但不限于 NewTask ClearTask 也

    1 回复  |  直到 9 年前
        1
  •  0
  •   progrAmmar    9 年前

    好的,我知道问题出在哪里了。

    Firebase系统 不会 OnMessageReceived 方法,如果发布带有数据的通知(即显示消息)。

    data OnMessageRecieved 负责设置数据的功能。

    {
        to: "topic | Registered device",
        data:{
              data1: "data_value1",
              data2: "data_value2",
              data3: "data_value3",
        }
    }