如何从使用 PushSharp 发送的通知中检测 android 应用程序是不是已打开?

Posted

技术标签:

【中文标题】如何从使用 PushSharp 发送的通知中检测 android 应用程序是不是已打开?【英文标题】:How to detect if android app is open from a notification sent with PushSharp?如何从使用 PushSharp 发送的通知中检测 android 应用程序是否已打开? 【发布时间】:2015-04-28 09:12:18 【问题描述】:

所以我使用 PushSharp 将 c# 中的通知发送到我的 android 应用程序:

      var push = new PushBroker();
      push.RegisterGcmService(new GcmPushChannelSettings(androidKey)  );
      push.QueueNotification(
                new GcmNotification().ForDeviceRegistrationId(registrationId)
                    .WithJson("\"alert\":\"" + PushMessageFormater.FormatMessage(ncRuleResult) + "\",\"badge\":7,\"sound\":\"sound.caf\""));

一切正常,通知已正确发送。

现在,我要做的就是从我的 MainActivity 检测当最终用户点击收到的通知时应用是否打开。

protected void onCreate(Bundle savedInstanceState) 
    registrationGetter = new RegistrationGetter(this);
    super.onCreate(savedInstanceState);
    Intent intent = getIntent() ;

   // How to check from here if the app is actually open further to a push tap.

我在 SO 中发现的只是我需要在 Intent 上放置一些额外的变量,但不幸的是,我找不到从 PushSharp 指定 Intent 的方法。

提前谢谢你。

【问题讨论】:

您的设备是否收到推送通知?? 是的,我的设备正在接收推送通知。 您必须从后台服务/广播接收器检查应用程序是否在后台或正在运行。如果您在接收器中接收通知时调用活动会使您的应用程序进入前台.. ty @user1992200,但我的问题不是很清楚。我已经添加了那部分:“现在,我要做的就是从我的 MainActivity 中检测当最终用户点击收到的通知时应用程序是否打开。” 从主要活动中检查应用程序是否在前台是没有意义的..在点击通知时,您必须调用服务来检查应用程序是否是后台.. 【参考方案1】:

在点击通知时更改待定意图以调用服务

PendingIntent pendingIntent = PendingIntent.getService(context, 579, intent,PendingIntent.FLAG_UPDATE_CURRENT);

refer here 检查应用程序是否在前台。您必须在点击收到的通知后从调用的服务中检查这一点。

【讨论】:

以上是关于如何从使用 PushSharp 发送的通知中检测 android 应用程序是不是已打开?的主要内容,如果未能解决你的问题,请参考以下文章

PushSharp 库并向 APN 发送通知

在哪个事件中,我可以使用 PushSharp 获取 GCM 响应以向 Android 设备发送通知?

使用 PushSharp 2.2.1.0 iOS 发送通知时出错

如何使用 Redth PushSharp 库向多个平台发送推送通知?

System.Collections.Generic.KeyNotFoundException:从 PUSHSHARP 发送推送通知时,字典中不存在给定的键

使用 Redth PushSharp 发送 iOS 推送通知失败