Как создать бесконечный фоновый сервис в Xamarin.Forms? - PullRequest
0 голосов
/ 26 сентября 2019

Я отслеживаю местоположение пользователя каждые 15 минут и просто хочу, чтобы приложение продолжало отправлять местоположение, даже если пользователь закрывает приложение на панели задач.

Я попробовал этот пример, но он находится в Xamarin.Androidhttps://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/services/foreground-services Мне нужно создать службу зависимостей, но я не знаю, как.

Ответы [ 2 ]

2 голосов
/ 26 сентября 2019

Возможно, вы захотите взглянуть на Блестящий Аллана Ричи.В настоящее время он находится в бета-версии, но я все равно рекомендую его использовать, поскольку это избавит вас от многих проблем при написании этого кода самостоятельно.Вот пост в блоге Аллана , объясняющий, что вы можете сделать с Shiny с точки зрения фоновых задач - я думаю, Запланированные задания - это то, что вы ищете.

0 голосов
/ 26 сентября 2019

мне нужно создать службу зависимостей, но я не знаю как.

Сначала создайте Interface в проекте Xamarin.forms:

public interface IStartService
{

    void StartForegroundServiceCompat();
}

А затем создайте новый файл, назовем его itstartServiceAndroid в проекте xxx.Android для реализации желаемого сервиса:

[assembly: Dependency(typeof(startServiceAndroid))]
namespace DependencyServiceDemos.Droid
{
    public class startServiceAndroid : IStartService
    {
        public void StartForegroundServiceCompat()
        {
            var intent = new Intent(MainActivity.Instance, typeof(myLocationService));


            if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.O)
            {
                MainActivity.Instance.StartForegroundService(intent);
            }
            else
            {
                MainActivity.Instance.StartService(intent);
            }

        }
    }

    [Service]
    public class myLocationService : Service
    {
        public override IBinder OnBind(Intent intent)
        {
        }

        public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
        {
            // Code not directly related to publishing the notification has been omitted for clarity.
            // Normally, this method would hold the code to be run when the service is started.

            //Write want you want to do here

        }
    }
}

Как только вы захотите вызвать метод StartForegroundServiceCompat в проекте Xamarin.forms, вы можете использовать:

public MainPage()
{
    InitializeComponent();

    //call method to start service, you can put this line everywhere you want to get start
    DependencyService.Get<IStartService>().StartForegroundServiceCompat();

}

Вот документ о зависимость-сервис

Для iOS, если пользователь закрывает приложение на панели задач, вы не будетедольше сможете запускать любой сервис.Если приложение работает, вы можете прочитать этот документ о ios-backgrounding-walkthroughs / location-walkthrough

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...