0

我的主要问题是如何检测最终用户在后台(暂停)时的应用程序终止,以便能够向服务器发送注销请求?

我们在服务器中已经有一个超时间隔来终止会话,但假设间隔是 5 分钟,所以这意味着会话将在用户终止应用程序后 5 分钟内保持活动状态,并且任何人都可以嗅探数据并重用它.

笔记:

  • 我们使用 HTTPS 连接和 SSL 证书锁定。

  • 我们还实现了一个心跳网络服务,客户端应用程序每隔固定时间间隔调用一次,以告诉服务器在此时间间隔内保持会话处于活动状态,如果此网络服务未调用特定会话,则服务器将终止此会话。

4

2 回答 2

1

穆罕默德·阿米尔,

这是 Quickblox Server 使用的一种方法,我觉得它非常可靠,尽管它涉及一些开销。

一旦客户端应用程序(iOS android)与 quickblox 服务器建立会话,quickblox 服务器期望客户端应用程序在定期间隔后连续向服务器发送存在信息。

发送存在信息非常简单。他们编写了一个 api,我们在间隔 5 分钟后使用我们拥有的会话 ID 继续访问该 API。他们验证会话 ID,一旦发现有效,他们会将与该 ID 关联的用户的到期时间延长 5 分钟以上。

我相信他们会做的是,

方法 1:他们维护最后一次命中时间,并且对于所有后续请求,他们检查请求时间是否在 5 分钟的时间范围内,如果是,则简单地处理它。如果请求在 5 分钟后出现,他们将删除用户的会话 ID 并回复说您的会话超时。

方法 2:因为他们也提供在线和离线信息,所以他们不能简单地依赖传入的请求从服务器中删除会话 ID,因此他们可能会创建一个后台线程,该线程在数据库上滑动以查找上次命中时间大于 5 的条目min 并将其从数据库中删除。并声明用户会话已过期。

尽管这涉及客户端应用程序不断地访问服务器并增加了服务器的负担,例如聊天应用程序,其中存在信息非常重要,但我相信这种开销仍然很好。

希望我至少为您提供了一些想法:)

于 2016-05-31T11:14:54.183 回答
1

一旦您的应用程序被暂停,您在被终止之前不会收到任何进一步的通知。没有办法做你想做的事。

此外,用户可以暂停您的应用以执行其他操作(例如玩游戏),然后在 DAYS 天内不返回您的应用。

如果您想在用户离开您的应用程序时注销,请在 willBeSuspended 消息上执行此操作。要求更多后台时间并立即发送注销。

于 2016-05-31T11:12:41.220 回答