【问题标题】:Xamarin Forms iOS how to bring app to foreground - other apps do itXamarin Forms iOS 如何将应用程序带到前台 - 其他应用程序这样做
【发布时间】:2018-11-08 12:45:43
【问题描述】:

我正在开发我的 Xamarin Forms 应用程序。它需要在一段时间后使用定位服务(后台模式)将其置于前台。如何实现?

我注意到应用商店中有其他应用这样做。

任何帮助将不胜感激!谢谢

【问题讨论】:

  • bring itself to the foreground 是什么意思?您的意思是应用在后台使用定位服务后会自动打开?

标签: ios forms xamarin foreground


【解决方案1】:

您可以使用startMonitoringSignificantLocationChanges 来实现此目的。

在苹果文档https://developer.apple.com/documentation/corelocation/cllocationmanager/1423531-startmonitoringsignificantlocati 中写道:

如果您启动此服务后您的应用程序被终止,系统会自动重新启动应用程序到后台,如果 新事件到达。 在这种情况下,选项字典传递给 应用程序(:willFinishLaunchingWithOptions:) 和 应用程序的 application(:didFinishLaunchingWithOptions:) 方法 委托包含指示您的应用程序的关键位置 由于位置事件而启动。重新启动后,您仍然必须 配置位置管理器对象并调用此方法继续 接收位置事件。当您重新启动定位服务时, 当前事件会立即传递给您的代表。此外, 您的位置管理器对象的位置属性已填充 甚至在您开始定位之前使用最新的定位对象 服务。

重启后,可以在 AppDelegate 的FinishedLaunching 中做一些事情:

 public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // Override point for customization after application launch.
            // If not required for your application you can safely delete this method

            if (launchOptions.ContainsKey(UIApplication.LaunchOptionsLocationKey))
            {
                // do something here after the app awaked
            }

            return true;
        }

【讨论】:

  • 我的应用程序将接收位置更新并发布到 ui。由于位置服务后台模式,用户还可以选择关闭应用程序在后台运行的应用程序。到达目的地后,如果我的应用程序是由用户后台运行的,则应用程序应通过处于活动运行模式的代码将自身置于最前面。
  • 好吧,我不认为你可以在 iOS 系统中实现这一点。
  • 推送通知呢?
  • 当然,到达目的地后,您可以触发本地通知。用户点击通知后,您的应用将进入前台。但是存在一个问题,如果您的应用被终止,您的本地届时不会触发通知。
  • 谢谢杰克华。我会考虑应用程序终止。这实际上取决于应用程序终止的标准,但我认为如果您注册位置后台模式,您的应用程序将不会被终止,并且如果在任何情况下,位置更新事件会将应用程序状态设置为从终止的后台运行?
猜你喜欢
  • 2014-05-20
  • 2020-08-14
  • 1970-01-01
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多