Windows 10 移动应用程序扩展执行不断被拒绝
Posted
技术标签:
【中文标题】Windows 10 移动应用程序扩展执行不断被拒绝【英文标题】:Windows 10 Mobile App Extended Execution keeps getting denied 【发布时间】:2017-11-09 07:34:14 【问题描述】:我正在尝试在我的 Windows 10 UWP 应用上使用扩展执行来进行位置跟踪。网上有很多这样的例子。我基本上是在使用这个通用的代码块。
using (var session = new ExtendedExecutionSession())
session.Reason = ExtendedExecutionReason.LocationTracking;
session.Description = "Tracking your location";
session.Revoked += NewSession_Revoked;
var result = await session.RequestExtensionAsync();
switch (result)
case ExtendedExecutionResult.Allowed:
await StartLocationTrackingAsync();
break;
default:
case ExtendedExecutionResult.Denied:
//Notify user or log this.
break;
此代码块在我的应用的 Suspending 事件处理程序中执行,如下所示:
public Scenario1()
this.InitializeComponent();
Application.Current.Suspending += Current_Suspending;
private async void Current_Suspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e)
//Do my extended execution request here.
我遇到的第一个问题是我什至无法触发该事件,但我在 SO 上读到 VS 在调试时不会暂停您的应用程序。因此,我使用 VS 中的生命周期事件下拉菜单强制它暂停。现在,我每次都会触发 Suspending 事件,这很好。
但是,当我请求扩展执行会话时,每次都被拒绝。我在模拟器和我的物理 W10 移动设备上尝试过多次,每次都被拒绝。
这是为什么?我怎样才能让它被允许?
谢谢!
【问题讨论】:
【参考方案1】:假设您已经在应用清单中声明了 Location,您将必须在前台运行代码,这意味着它将在您的 MainPage_Loaded
回调中工作但不处于暂停状态。
位置跟踪扩展执行会话可以运行只要 需要。但是,每个会话只能运行一个这样的会话 设备。位置跟踪扩展执行会话只能是 在前台请求,并且应用程序必须处于运行状态。 这可确保用户知道应用程序已启动 扩展位置跟踪会话。
要在后台运行它,请参见 -
仍然可以使用 GeoLocator,而应用程序在后台使用背景 任务或应用服务,无需请求位置跟踪 扩展执行会话。
当你使用 LocationTracking
扩展执行时 -
创建时指定 ExtendedExecutionReason.LocationTracking ExtendedExecutionSession 如果您的应用需要定期记录 来自 GeoLocator 的位置。健身追踪和导航应用 需要定期监控用户位置并应使用此 原因。
这是full article。
【讨论】:
感谢您的回复。我已经阅读了您提供链接的文章,但是我阅读的所有其他内容并没有解释您所做的事情,即从哪里请求扩展会话。我按照你的建议移动了它,它工作了!现在是允许的。但是,新问题是允许的,因此调用了我的 StartLocationTrackingAsync 方法,并且在前台运行时一切正常。但是,当我暂停应用程序时,一切都停止工作。我停止从 GeoLocator 获取 OnPositionChanged 事件。当我恢复时,它又开始工作了。我错过了设置的另一个步骤吗? 扩展执行位置跟踪不是为在后台运行而设计的,而是在前台定期与地理定位器交互。如果要执行 bg,则需要使用 bg 任务或应用服务。 好的,明白了。但是你能再回答一个问题吗?我的 GeoLocation Position Changed 事件处理程序不是在时间间隔上引发,而是在距离上引发,它设置为 100 米。我需要这个事件经常提出这个问题,因为我正在使用地理围栏。我以为我读到后台任务只会触发 x 分钟,这对我来说太长了。真的吗?理想情况下,我有一个事件处理程序,它会像在前台那样引发。有了 bg,我知道我将不得不轮询该位置。我可以用其中一种方法在几秒钟内完成吗? 我刚读到后台任务每 15 分钟运行一次,所以这不好。 地理围栏是基于位置的,而不是基于时间的。当位置没有改变时,你不想做太多事情。您能否就此提出一个新问题?以上是关于Windows 10 移动应用程序扩展执行不断被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
ORA-123456:TNS:权限被拒 ,安装oracle出现这个错误,怎么解决啊,在线等。。。。。