Вызов метода Xamarin Forms PCL в закрытом приложении - PullRequest
0 голосов
/ 30 октября 2018

Я разработал приложение Xamarin Forms, в котором я хотел бы вызвать метод в части PCL из моего собственного кода Android. В частности, речь идет о методе onTokenRefresh в FCM, который работает в качестве службы в фоновом режиме. Я хочу загрузить новый токен, когда событие будет запущено. Но я хотел бы иметь код в общем проекте вместо собственных проектов.

Так что это работает, пока приложение работает, но когда оно закрыто, код pcl падает, так как он не инициализирован.

Можно ли запустить код pcl, когда приложение закрыто? Или можно интегрировать какую-то его часть в фоновый сервис?

Любая помощь или идея приветствуется.

Заранее спасибо, Chris

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Спасибо за ответы и комментарии.

Я проверил свой код загрузки на использование форм Xamarin и возможно удалить. Потом позвонил с родного андроида и вдруг работает.

0 голосов
/ 31 октября 2018

Вы создали все статические методы и должны вызывать их с разных платформ. Для E.g

  //In your native service android
     public async override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
    {
        try
        {

          var newToken= await Common.LogHelper.ServerLogHelper.LogMessage("Different paramter you pass");

            return StartCommandResult.Sticky;
        }
        catch (Exception ex)
        {
            Common.LogHelper.ServerLogHelper.LogException(ex);
            return StartCommandResult.Sticky;
        }
    }

    //And in common class of PCL

    public static async string LogMessage()
    {
    var httpClientObject = new HttpClient();
                httpClientObject.BaseAddress = new Uri(Constants.TradesTekServiceURL);
                httpClientObject.BaseAddress = new Uri(Constants.TradesTekServiceURL);
                httpClientObject.Timeout = new TimeSpan(0, 0, 20);

                string request = @"Your request string";

                HttpContent httpContent = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(appErrorLogMessage), Encoding.UTF8, "application/json");
                HttpResponseMessage response = await HttpClientObject.PostAsync(request, httpContent);

                //Get data from reponse

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