如何在接收来自服务器的请求时直接打开我的应用活动?
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));
【讨论】:
以上是关于如何在接收来自服务器的请求时直接打开我的应用活动?的主要内容,如果未能解决你的问题,请参考以下文章