锤子Smartisan系统杀后台,推送通知,闲鱼收不到消息或者延迟问题解决

本文介绍了一系列优化措施来提高APP消息推送的及时性和准确性,包括调整应用管理设置、关闭后台智能运行控制、调整权限管理等步骤,以减少消息延迟。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了确保APP最大限度收到消息:

1.设置-》应用管理-》应用程序管理-》你的APP-》电量与优化-》关闭“后台智能运行控制”。开启“允许被系统启动”和“允许被第三方应用启动”。

2.桌面上的"手机管理"(小蓝伞)-》应用耗电优化-》你的APP-》开关设置为关闭状态。

3.小蓝伞-》联网控制(详细设置)-》你的APP-》选永不断网。

4.小蓝伞-》权限管理-》覆盖锁屏显示-》你的APP-》始终允许。

5.小蓝伞-》权限管理-》开启移动数据、开启无线网络、访问移动数据、访问无线网络-》你的APP-》始终允许

6.屏幕下方按钮打开多任务界面,按住APP不动直到APP下面的红色叉变为一把锁,锁住APP不要被杀。


【技术分析】

消息延迟问题将大大缓解,当然,会费电一些,毕竟原先被休眠的程序无法被休眠了。

从安卓6.0开始加入了锁屏降频功能,同样在使用安卓7.1的Smartisan系统的时候发现几个有趣的经验总结下和大家分享:

1.通知机制。

针对每个APP,系统是默认是开启了通知限制的,默认策略就回导致推送有稍许的延迟,我黑盒分析了下前台Timer的处理手法,系统有2个档位的公共消息通知池,凡是APP抛出的消息都默认扔第一个池子里,间隔20秒统一冒泡一次。如果关掉“小蓝伞”里面的针对某APP的“省电优化”,则消息通知被抛到第二个消息池里, 这个池子里的消息推送是10秒一次的样子。也就是说, 在小蓝伞里面关闭省电优化,则可以保证APP推送消息会更及时一些,但是依然会有稍许延迟。目前没找到实时推送的开关。但是实时性已经有很大的好转了。

2.杀后台。

内存不满基本会不杀,满了如果也不想被杀,比如一些游戏,实在是懒得再loading一次,那么系统-》应用管理-》XX程序-》关闭“后台智能运行智能控制“。此机制也影响锁屏之后的推送。


省电模式明显开启之后对推送有统一的池管理机制。

每次亮屏幕都将唤醒后台所有APP一次,所以少亮屏则省电,频繁亮屏则非常费电。

每次息屏则立即对所有APP进行消息通知池管理。

以上所有省电机制对推送都有影响。



平台上实现应用内消息推送并集成钉钉通知功能,主要涉及以下几个方面的实现方法: ### 1. 获取平台的消息数据 平台本身并未公开完整的消息推送接口,因此需要通过模拟请或第三方监控工具来获取消息数据。例如,可以编写一个定时任务来轮询的页面或接口,检测是否有新的消息产生。在引用中提到的`get_xianyu_data`函数即为一个模拟数据获取的示例,实际开发中需要根据的网络请规则和接口来实现具体的抓取逻辑[^2]。 ### 2. 消息格式化与处理 获取到消息数据后,需要对消息进行格式化处理,以便后续推送至钉钉。可以使用文本(text)或Markdown格式来组织消息内容,确保信息清晰可读。例如,可以将的订单变动、用户留言等信息转换为结构化的文本内容。 ### 3. 集成钉钉机器人实现消息推送 钉钉提供了自定义机器人的功能,通过 Webhook URL 可以实现外部系统向钉钉群发送消息。具体步骤如下: - 在钉钉群中添加自定义机器人,并获取 Webhook URL 和密钥(secret)。 - 使用 Spring Boot 或 Java 项目集成钉钉的推送功能,可以通过 HTTP 请向 Webhook URL 发送 POST 请,携带消息体(如文本、Markdown 等格式)。 - 在代码中配置钉钉机器人的安全策略,例如使用密钥签名验证(HMAC-SHA256)来增强安全性。 以下是一个简单的 Java 示例代码,用于向钉钉发送文本消息: ```java import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; public class DingTalkPusher { private static final String WEBHOOK_URL = "https://oapi.dingtalk.com/robot/send?access_token=your_token_here"; public static void sendTextMessage(String message) throws Exception { URL url = new URL(WEBHOOK_URL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json; charset=utf-8"); String jsonBody = String.format("{\"msgtype\": \"text\", \"text\": {\"content\": \"%s\"}}", message); byte[] input = jsonBody.getBytes(StandardCharsets.UTF_8); try (OutputStream out = conn.getOutputStream()) { out.write(input, 0, input.length); } int responseCode = conn.getResponseCode(); System.out.println("Response Code: " + responseCode); } public static void main(String[] args) { try { sendTextMessage("这是一条来自消息推送"); } catch (Exception e) { e.printStackTrace(); } } } ``` ### 4. 消息目标人群控制 钉钉机器人支持在消息中指定@某人或@所有人,适用于需要特定人员关注的消息。在消息推送的场景中,可以结合钉钉的 `at` 功能,指定接收消息的用户手机号码列表,实现定向通知。例如: ```json { "msgtype": "text", "text": { "content": "上有新消息:用户123留言了", "at": { "atMobiles": ["184xxxx1234"], "isAtAll": false } } } ``` ### 5. 系统稳定性与维护 在实际部署中,需要考虑系统的稳定性与可维护性。可以采用日志记录、异常重试机制、定时任务监控等方式,确保消息推送的可靠性。同时,定期更新的抓取逻辑,以应对平台接口或页面结构的变化。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AKULAKK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值