每天同一小时定期调用的Android Application类导致网络请求过载 为什么会发生?解决方案

问题描述

在我的应用程序中,Application类中有一个函数可以触发一些网络请求,这些请求会获取所需的数据以使应用程序正常工作。最近,我注意到这些请求每天在格林尼治标准时间11:00触发。从日志中我得到的信息似乎并不是每一个使用该应用程序的设备都在发生,因为我每天记录的设备ID是不同的。好像有一个库(引起该问题的库)(我的代码中没有地方会在每天的特定时间触发的定期代码)。在我的应用程序中,我使用诸如Appsflyer,Google Play服务,Firebase,Crashlytics之类的库,它们每天可能触发同步作业,从而导致该问题,尽管无法在生产应用程序中禁用其中的任何一个。不幸的是,我无法在任何设备上再现上述问题,因此到目前为止,我还没有办法对其进行调试。有没有人遇到过类似的事情,或者可以给我任何有关如何继续前进的建议,因为这些高峰请求正在导致问题和服务器超载。预先感谢

解决方法

它可以是静默的推送通知,用于卸载测量(AppsFlyer)。

Android卸载“静音”推送通知并不总是对客户端静音。这是一个普遍的问题,可能会给客户带来很大的痛苦。

为什么会发生?

客户端可以重写Firebase的onMessageReceived(RemoteMessage remoteMessage)方法。然后,该方法中可能会有一些自己的逻辑,这会导致推送通知不保持静默。

解决方案

服务器端发送带有有效负载{"af-uinstall-tracking":true}的“静默”推送。客户端将需要添加额外的几行代码来处理此特定的有效负载。

例如:

@Override    
public void onMessageReceived(RemoteMessage remoteMessage) {
   if(remoteMessage.getData().containsKey("af-uinstall-tracking")){
              return;  
    } else { 
        // handleNotification(remoteMessage);     
 } 
}

确保不是您的情况

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...