Xamarin在关闭的应用程序中调用PCL方法

时间:2018-10-30 20:29:35

标签: android xamarin service xamarin.forms

我开发了一个Xamarin Forms App,其中我想从我的本地android代码中调用PCL部分中的方法。具体来说,它与FCM的onTokenRefresh方法有关,该方法在后台作为服务运行。 我想在事件触发时上传新令牌。但是我想将代码包含在共享项目中,而不是本机项目中。

因此,只要应用程序正在运行,它就可以工作,但是在关闭时,由于未初始化,pcl代码崩溃了。

在应用关闭时是否可以运行pcl代码?还是有可能将其一部分集成到后台服务中?

任何帮助或想法都会受到赞赏。

预先感谢, 克里斯

2 个答案:

答案 0 :(得分:0)

您已经创建了所有静态方法,并且必须从不同的平台调用它们 对于例如

  //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;
    }

答案 1 :(得分:0)

感谢答案和评论。

我检查了我的上传代码是否可以使用Xamarin表单,并且可以删除。然后我从本地android调用了它,然后突然起作用了。