来自推送通知的“智能”android激活

时间:2014-08-07 06:24:03

标签: android android-intent android-activity push-notification back-stack

我有一个简单的任务 - 通过推送特定活动激活应用程序(而不是启动活动)

成像我在应用程序中有3个活动:

  1. A(泼水)
  2. B(项目清单)
  3. C(所选项目详情)
  4. 一些预先要求:

    • 通过推送我获取要选择的项目的ID。
    • 在剧中我强行进行身份验证。
    • 其中一个条件 - 我无法移动身份验证,例如,对其他活动或应用服务说。

    现在我可以创建几个语句。当我点击按下以激活应用程序时:

    1. 当推送到达时,PushIntentService会生成一个通知,指定intent intent中的项目ID如果应用程序被终止,我应该从活动A启动应用程序(强制进行身份验证)
    2. 如果应用程序是后台运行的(在后台运行)我应该在同一个地方重新激活它(跳过重新验证)
    3. 一旦应用程序被激活,我将导航到活动C,项目ID从附加内容中获取。
    4. 现在我使用以下代码生成通知(第1项,Xamarin.Android语法):

      var resultIntent = new Intent(Application.Context, typeof(SplashScreen));
      resultIntent.AddFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop); 
      if (extras.ContainsKey("ItemId"))
      {
          var itemId = extras["ItemId"];
          resultIntent.PutExtra("ItemId", itemId);
      }
      var resultPendingIntent = PendingIntent.GetActivity(Application.Context, 0, resultIntent, 0);
      builder.SetContentIntent(resultPendingIntent);
      var notification = builder.Build();
      

      此通知在所有情况下都可以正常使用,但我在这里看到一个问题。 我每次点击通知时都会从一开始就重新启动应用。 我想要的是当应用程序背景化时我只需要激活它(就像iOS一样)并导航到所需的页面(更快的激活并避免重新认证)。

      如何实现这一目标并修改上述代码?

1 个答案:

答案 0 :(得分:0)

我找到了关于如何模拟启动器图标点击意图的答案。我正在使用它为我的推送创建待定意图:

var launchIntent = PackageManager.GetLaunchIntentForPackage(PackageName);

这正是我想要的,在我的情况下它完全正常。