不幸的是,您不能混合使用 WinRT 和 WP8.1 Silverlight。
正如您所提到的,Alarm API 不适用于 WP(对于“通用”而言如此之多),并且 Silverlight 运行时没有 GeofenceMonitor。您可以拥有一个带有 WinRT 后台任务的 Silverlight 项目,但这无济于事。
我不知道您是否希望这些警报与某个位置永久关联,或者是短暂的,但也许这将是一个解决方案:
配置您的应用程序以继续在后台运行。有一个专用的“LocationTracking”执行类型,您可以将其用于在后台跟踪 GPS 位置的任何应用程序(有关详细信息,请参阅此站点)。
然后,您可以使用PositionChanged
your 事件Geolocator
来检查您是否在围栏内并添加(几乎)即时警报。
const string id = "whateverYourIdIs";
var existing = ScheduledActionService.Find(id);
if(existing != null)
ScheduledActionService.Remove(id);
Alarm alarm = new Alarm(id)
{
BeginTime = DateTime.Now.AddSeconds(1),
Content = "You have reached your location!",
};
ScheduledActionService.Add(alarm);
如果您不想让您的应用程序保持运行,您可以(适当地)从地理围栏后台任务 (WinRT) 中启动另一个后台任务 (SL)。