如何在接收来自服务器的请求时直接打开我的应用活动?

Posted

技术标签:

【中文标题】如何在接收来自服务器的请求时直接打开我的应用活动?【英文标题】:How to directly open my app activity on receiving request from server? 【发布时间】:2017-07-17 08:33:29 【问题描述】:

我正在 android 中创建出租车司机应用程序。当乘客请求乘车时,该请求将发布到服务器。现在,服务器将请求发送给附近的出租车司机。驱动程序应用程序有一个带有警报器的活动,必须在收到请求时触发。因此,每当请求到达时,我都必须用警笛声来显示警笛活动。如何实现此功能?即使驱动程序应用在后台,我也必须显示活动。

谢谢。

【问题讨论】:

使用 FCM 和 GCM 来实现此功能,当消息到达而不是移动到您的警报活动时。 使用推送通知接收请求,对于推送通知我建议您使用[FCM] (firebase.google.com/docs/cloud-messaging/android/client)。 我正在尝试使用 FCM 来实现它。如果我的应用在后台,FCM 会调用我的活动吗? @LucaKiebel 是的,这将打开您在清单操作启动器中定义的第一个活动。 【参考方案1】: 用户 GCM/FCM 将请求从服务器发送到客户端应用程序。

当您在 onReceive 方法中收到回调时

使用以下代码触发意图;

    Intent i = new Intent(this, destinationActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(i);

【讨论】:

【参考方案2】:

您需要使用socketIo 实时连接到服务器。这是最好和最便宜的方式。

当然你可以使用FCM,但是一定数量的请求是免费的,然后是付费的

【讨论】:

【参考方案3】:

服务器无法直接向应用程序发送请求。它只是响应传入的请求,所以你必须在你的应用程序中创建类似Socket 的东西来监听来自服务器的响应。

【讨论】:

【参考方案4】:

当收到特定消息时,从 fcm 中的 onMessageReceived() 方法开始您的活动。

startActivity(new Intent(this, TargetActivity.class));

【讨论】:

以上是关于如何在接收来自服务器的请求时直接打开我的应用活动?的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的应用程序打开来自其他应用程序的特定活动?

从广播接收器关闭活动

如何使用来自小部件的不同附加功能打开相同的活动

计算机网络之应用层_part -1

在活动处于前台时接收明确的意图

Android - GCM 在打开应用程序时收到来自 gcm 的通知