首页 > 解决方案 > 应用未运行时推送预定通知

问题描述

首先:这个问题与我的上一个问题非常相似,但答案对我没有帮助......

我正在制作一个待办事项应用程序。我被困在推送通知上(即使应用程序没有运行)。我的成就是推送关于待办任务的通知,即使应用程序没有运行。

例如,我在 x/y/2021 的 mm:hh 上做了一个关于家庭作业的新任务。应用程序必须在那个时候推送通知,即使应用程序没有运行

调度(延迟为 10 只是为了调试):

    OneTimeWorkRequest notificationWorker = new OneTimeWorkRequest.Builder(NotificationWorker.class)
            .setInitialDelay(10, TimeUnit.SECONDS)
            .setInputData(new Data.Builder().putString("title", "Note").build()).build();

    WorkManager workManager = WorkManager.getInstance(this);
    workManager.enqueue(notificationWorker);

类扩展工人:

@NonNull
@Override
public Result doWork() {

    NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);

    String date = getInputData().getString("date");
    String time = getInputData().getString("time");
    String title = getInputData().getString("title");
    String description = getInputData().getString("description");
    int delay = getInputData().getInt("delay", 0);

    Notification notification = new NotificationCompat.Builder(getApplicationContext(), "note")
            .setSmallIcon(R.mipmap.logo)
            .setContentTitle(title)
            .setContentInfo(date + " at " + time)
            .setContentText(description)
            .build();

    notificationManager.notify(1, notification);

    return Result.success();
}

标签: javaandroid

解决方案


老实说,我没有阅读您的代码,但请看一下 workManager(因为它是为这些事情设计的):

Android workManager 文档:

WorkManager 是一种 API,它可以轻松安排可延迟的异步任务,即使应用程序退出或设备重新启动,这些任务也会运行。WorkManager API 是所有先前 Android 后台调度 API(包括 FirebaseJobDispatcher、GcmNetworkManager 和 Job Scheduler)的合适且推荐的替代品。WorkManager 将其前身的功能整合到一个现代、一致的 API 中,该 API 可以追溯到 API 级别 14,同时还考虑到电池寿命。

工作经理:https ://developer.android.com/topic/libraries/architecture/workmanager

示例(我认为这是您想要的):https ://medium.com/@ifr0z/workmanager-notification-date-and-time-pickers-aad1d938b0a3


推荐阅读