Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Other]: Inquiry Regarding iOS Background State Check and Its Absence on Android #2623

Open
zhaolibo1989 opened this issue Sep 14, 2024 · 1 comment
Labels
other Indicates an issue or PR lacks a `triage/foo` label and requires one.

Comments

@zhaolibo1989
Copy link

What would you like to share?

Description:

Dear Development Team,

While reviewing the code of the openim project, I came across a detail in the message push logic that piqued my interest. In the pushToUser function, there is a specific check for the "background state" of iOS platform clients. If an iOS client is in the background, it is treated as offline, even if it has an active network connection, and offline push is performed. However, it seems that no such check is implemented for Android clients.

Here are my queries:

  1. Why is there a need for a separate "background state" check for iOS devices, while Android devices do not have this logic?
  2. What is the rationale behind this design decision? Is it related to the system characteristics or push notification mechanisms of iOS and Android?
  3. Are there any considerations that might have been overlooked or areas that could be optimized? For instance, should Android clients also be checked for their background state?

I understand that this might be a deliberate design choice based on the behavior or privacy policies of specific platforms, but I would like to gain a deeper understanding of the background and reasoning.

Your response and clarification on this matter would be greatly appreciated.

Thank you for your attention to this issue.

Best regards,
Libo

Additional information

(中文版)

标题:关于 iOS 后台状态检查与 Android 平台差异的问题

描述:

尊敬的开发者团队,

我在审查 openim 项目的代码时,注意到了一个关于消息推送逻辑的细节,这引起了我的关注。在 pushToUser 函数中,对于 iOS 平台的客户端,代码特别检查了“是否在后台”的状态,如果客户端在后台,即使有网络连接,也会被视为不在线,并执行离线推送。然而,对于 Android 平台,似乎并没有进行类似的检查。

我的疑问是:

  1. 为什么 iOS 平台需要单独设置“是否在后台”的状态检查,而 Android 平台没有这样的逻辑?
  2. 这种设计决策背后的原因是什么?是否与 iOS 和 Android 的系统特性或推送通知机制有关?
  3. 是否存在考虑不周或可以优化的地方?例如,是否有必要对 Android 客户端也进行类似的后台状态检查?

我理解这可能是基于特定平台的行为或用户隐私政策,但我希望了解更详细的背景信息和设计考量。如果这是一个有意为之的设计选择,了解其原因将有助于我更好地理解整个系统的工作原理。

期待您的回复和澄清,谢谢!

@zhaolibo1989 zhaolibo1989 added the other Indicates an issue or PR lacks a `triage/foo` label and requires one. label Sep 14, 2024
@zhaolibo1989
Copy link
Author

During our debugging, we found that when the Android app is in the background or closed, the push logic still considers the device to be online, and the push function executes successfully, but the message is not actually delivered to the app. Does this mean we need to adjust our push logic to ensure effective message delivery on Android devices?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
other Indicates an issue or PR lacks a `triage/foo` label and requires one.
Projects
None yet
Development

No branches or pull requests

1 participant