0
ジオフェンスの変更を処理するためにgeofence APIとバックグラウンドタスクを使用して簡単なアプリケーションを構築します。ここでは、コードの一部である、ウィッヒバックグラウンドタスク新しいLocationTrigger(LocationTriggerType.Geofence)は、バックグラウンドタスクを登録するときにInvalidCastExceptionで失敗する
private async void RegisterBackgroundTask()
{
const string name = "GeofenceBackgroundTask";
if (BackgroundTaskRegistration.AllTasks.Any(task => task.Value.Name == name))
{
return;
}
var loc = await new Geolocator().GetGeopositionAsync(
TimeSpan.FromMinutes(2),
TimeSpan.FromSeconds(5)); //needed to trig user acceptance
var backgroundAccessStatus =
await BackgroundExecutionManager.RequestAccessAsync();
if (backgroundAccessStatus != BackgroundAccessStatus.Denied)
{
var geofenceTaskBuilder = new BackgroundTaskBuilder()
{
Name = name,
TaskEntryPoint = "RingtoneManager.Background.GeofenceBackgroundTask"
};
geofenceTaskBuilder.SetTrigger(new LocationTrigger(LocationTriggerType.Geofence));
geofenceTaskBuilder.Register();
}
}
を登録しようとすると、この行は、このような、私はトリガーの上に登録してみますInvalidCastExceptionが
System.InvalidCastException was unhandled by user code
HResult=-2147467262
Message=Unable to cast object of type 'System.__ComObject' to type 'Windows.ApplicationModel.Background.ILocationTriggerFactory'.
Source=mscorlib
StackTrace:
at System.StubHelpers.StubHelpers.GetCOMIPFromRCW_WinRT(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget)
at Windows.ApplicationModel.Background.LocationTrigger..ctor(LocationTriggerType triggerType)
at RingtoneManager3.App.<RegisterBackgroundTask>d__2.MoveNext()
InnerException:
で
new LocationTrigger(LocationTriggerType.Geofence)
に失敗常にありますシステム時間トリガーと例外はありませんでした。
私は間違っていますか?
おかげで、ジオフェンスを作成します。私はあなたの提案を試み、それは問題を解決しません。また、最初の投稿にエラーの説明を追加します – mshipov
場所に適切な権限を与えましたか? – Rohit
はい、場所のアクセス許可は必須とマークされています – mshipov