我开发了一个Xamarin Forms App,其中我想从我的本地android代码中调用PCL部分中的方法。具体来说,它与FCM的onTokenRefresh方法有关,该方法在后台作为服务运行。 我想在事件触发时上传新令牌。但是我想将代码包含在共享项目中,而不是本机项目中。
因此,只要应用程序正在运行,它就可以工作,但是在关闭时,由于未初始化,pcl代码崩溃了。
在应用关闭时是否可以运行pcl代码?还是有可能将其一部分集成到后台服务中?
任何帮助或想法都会受到赞赏。
预先感谢, 克里斯
答案 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调用了它,然后突然起作用了。