xamarin формирует фоновые серверы

#c# #xamarin #xamarin.forms #background-service

#c# #xamarin #xamarin.forms #фоновая служба

Вопрос:

у меня есть базовое приложение xamarin, которое считывает из буфера обмена и изменяет текст, а затем снова устанавливает его в буфер обмена. он отлично работает, когда пользователь находится в приложении. но когда пользователь нажимает кнопку «Домой», это останавливается. итак, я добавил свой метод в OnSleep() и включил фоновую выборку на IOS и Android, но он не работает на обоих.

MainPage.cs:

 private void clipboardCheckBox_CheckedChanged(object sender, CheckedChangedEventArgs e)
{
    if (clipboardCheckBox.IsChecked)
    {
        MessagingCenter.Send<string>("1", "clipboardService");
    }
    else
    {
        MessagingCenter.Send<string>("0", "clipboardService");
    }
}
  

App.cs:

 protected override void OnSleep()
{
    MessagingCenter.Subscribe<string>(this, "clipboardService", (value) =>
    {
        if (value.Equals("1"))
        {
            Clipboard.ClipboardContentChanged  = async (o, e) =>
            {
                var text = await Clipboard.GetTextAsync();
                if (text.Contains("@"))
                {
                    await Clipboard.SetTextAsync(text.Trim('@'));
                }
            };
        }
    });
}
  

Комментарии:

1. что вы ожидаете от этого? Если ваше приложение работает в фоновом режиме, ожидаете ли вы, что оно получит доступ к буферу обмена активного приложения?

2. да, он должен выполняться до тех пор, пока флажок установлен даже в фоновом режиме.

3. Вы могли бы сделать это в Android, но я не думаю, что это возможно в iOS.

4. воспроизведение музыки в фоновом режиме — это особый вариант использования, для которого они создают специальные API. Разрешить приложению вмешиваться в обычную работу буфера обмена другого приложения — это совершенно другое.

5. потому что, если бы я мог сделать то, что вы предлагаете, я мог бы написать приложение, которое превращает каждый элемент буфера обмена в ссылку на вредоносное ПО, или загружать каждый элемент буфера обмена на сервер и собирать данные без ведома пользователя