小编The*_*org的帖子

推送消息无法立即启动服务

上下文

我们正在开发一个应用程序,应该执行以下操作:

  1. 用户安装应用程序,注册并关闭应用程序
  2. 每年一次或两次,管理员向包含地理围栏的用户发送优先级较高的Firebase数据消息
  3. FCM消息启动一个JobService,用于定位电话的位置
  4. 如果手机在给定区域内,则启动"活动"并开始用户交互
  5. 如果手机在该区域之外,则服务停止并且用户永远不会受到干扰

我根据此处的Firebase推送示例开发了应用程序

问题

该应用程序在我的旧手机上工作正常,但在我的新测试手机(Android 8.1.0,LineageOS 15.1)上,当手机处于睡眠模式时,我们遇到了问题.在这种情况下,FCM消息立即到达,但是一旦电话解锁,服务就会首先启动.所以消息卡在2.和3之间.

我们需要应用程序立即响应 - 而不是在用户决定在2小时后使用他的手机时.

我认为问题是由于Android 6引入的打盹模式.我试图通过在设置 - >电池 - >电池优化中将应用程序添加到白名单来解决它,但这并没有解决问题.

问题

  1. 打盹模式是否会将我的应用程序延迟到2.和3之间?如果是这样,当应用程序在白名单中时为什么没有解决?

  2. 有没有其他方法可以立即启动位置服务?这篇文章表明前台服务可以做到这一点,但这要求显示一个以5为中断的通知.

  3. 除了白名单和前台服务之外,还有另一种方法可以立即启动我的服务吗?

android geolocation push-notification firebase-cloud-messaging

9
推荐指数
1
解决办法
1103
查看次数

Nginx server_name 中的 Unicode 域名

我正在尝试使用名为“privatinstruktør.dk”的域名设置服务器,但一直被重定向到默认的“欢迎使用 nginx”页面。

我试图像这样输入 server_name :

server {
  listen 80;
  server_name privatinstruktør.dk;

  location / {
    root /var/www/privat;
  }
}
Run Code Online (Sandbox Code Playgroud)

但这没有用。所以我尝试使用正则表达式,如:

server_name "~^privatinstrukt(.+)r\.dk$";
Run Code Online (Sandbox Code Playgroud)

server_name "~^privatinstrukt(.*)r\.dk$";
Run Code Online (Sandbox Code Playgroud)

乃至

server_name "~^privat(.*)$";
Run Code Online (Sandbox Code Playgroud)

但一切都失败了,我被重定向到默认页面。有没有人有关于如何解决这个问题的提示?

nginx punycode

5
推荐指数
1
解决办法
2492
查看次数

测试是否启用了后台数据和数据包数据

我希望检测用户是否同时启用了后台数据(设置 - >帐户和同步 - >后台数据)和数据包数据(设置 - >无线和网络 - >移动网络 - >使用数据包数据),以便我可以通知用户如何启用它们.

链接说明了如何测试后台数据,但已弃用.建议说使用getActiveNetworkInfo()但这可能会返回WIFI连接,因此如果启用了后台数据则不会显示.

我没有找到任何关于如何检测数据包数据是否启用的链接.

networking android

2
推荐指数
1
解决办法
3514
查看次数