You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity C#开发安卓端每日定时通知无法正常触发问题

每日固定时间推送通知失效修复方案

核心问题定位

你使用的示例代码存在逻辑缺陷:

  • 代码中FireTime直接构造了当日的10:30作为首次触发时间,如果当前设备时间已经晚于当日10:30,这个触发时间属于过去时间点,系统调度器会直接丢弃该通知任务,全程不会抛出任何异常,这是通知无法送达的最常见原因。

可直接复用的正确实现代码

需要先对首次触发时间做合法性校验,避免触发时间落在过去,同时支持替换为用户自主选择的任意时间点:

// 替换hour、minute参数为用户选择的目标时、分即可
int userSelectHour = 10;
int userSelectMinute = 30;

// 构造当日的目标触发时间,显式指定为本地时区时间,避免时区偏移
DateTime firstTriggerTime = new DateTime(
    year: DateTime.Now.Year,
    month: DateTime.Now.Month,
    day: DateTime.Now.Day,
    hour: userSelectHour,
    minute: userSelectMinute,
    second: 0,
    kind: DateTimeKind.Local
);

// 若当前时间已过当日目标时间,首次触发顺延至次日
if (DateTime.Now > firstTriggerTime)
{
    firstTriggerTime = firstTriggerTime.AddDays(1);
}

// 通知调度参数配置
FireTime = firstTriggerTime,
RepeatInterval = TimeSpan.FromDays(1), // 间隔24小时重复,实现每日触发

其他必查的失效场景

如果按上述代码修改后仍无法收到通知,逐一排查以下配置问题:

  • Android 13(API 33)及以上版本必须动态申请POST_NOTIFICATIONS运行时权限,未获得该权限时所有通知会被系统静默拦截,无任何报错提示
  • Android 8.0(API 26)及以上版本必须提前创建对应ID的通知渠道,渠道重要等级不能设置为IMPORTANCE_NONE,否则通知无法弹出
  • 设备重启、应用被强制停止后,系统会清空所有已调度的定时通知,需要监听BOOT_COMPLETED系统广播,在开机完成后重新注册所有通知任务
  • 小米、华为、OPPO、vivo等国产定制ROM默认会限制应用后台运行、自启动权限,需要引导用户关闭应用的电池优化、加入后台运行白名单,否则定时任务会被系统强制清理无法触发

内容的提问来源于stack exchange,提问作者Giorgos V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 13:54:25