Могу ли я сделать что-нибудь, когда время ожидания уведомления превысит NotifiationCompat.Builder setTimeoutAfter - PullRequest
0 голосов
/ 22 апреля 2020

Есть ли способ выполнить указанный c код после истечения времени ожидания уведомления? Я хотел бы выполнить API или использовать DisplayAlert после истечения срока моего уведомления. Мне не очень удалось найти, есть ли переопределение или что-то уже существующее.

Вот мой SendLocalNotification метод, в котором я устанавливаю таймаут:

void SendLocalNotification(string body)
    {
        //Unique request code to avoid PendingIntent collision.
        var requestCode = new Random().Next();

        // accept intent
        var acceptIntent = new Intent(this, typeof(MainActivity));
        acceptIntent.SetAction("ACCEPT_ACTION");
        var pendingIntentAccept = PendingIntent.GetActivity(this, requestCode, acceptIntent, PendingIntentFlags.OneShot);

        // decline intent
        var declineIntent = new Intent(this, typeof(MainActivity));
        declineIntent.SetAction("DECLINE_ACTION");
        var pendingIntentDecline = PendingIntent.GetActivity(this, requestCode, declineIntent, PendingIntentFlags.OneShot);

        var intent = new Intent(this, typeof(MainActivity));
        intent.AddFlags(ActivityFlags.SingleTop);

        var notificationBuilder = new NotificationCompat.Builder(this)
            .AddAction(0, "Accept", pendingIntentAccept)
            .AddAction(0, "Decline", pendingIntentDecline)

            .SetContentTitle("Content Title")
            .SetSmallIcon(Resource.Drawable.laundry_basket_icon_15875)
            .SetContentText("content text")
            .SetContentInfo("content info") // i think content info and sub-text overwrite each other
            .SetSubText("sub text")
            .SetTimeoutAfter(60000)
            .SetAutoCancel(true)
            .SetShowWhen(true)
            .SetContentIntent(pendingIntentAccept)
            .SetContentIntent(pendingIntentDecline);

        if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
        {
            notificationBuilder.SetChannelId(AppConstants.NotificationChannelName);
        }

        var notificationManager = NotificationManager.FromContext(this);
        notificationManager.Notify(0, notificationBuilder.Build());
    }
...