Xamarin.ios 当应用程序处于后台时,UILocalnotification不会出现

Xamarin.ios 当应用程序处于后台时,UILocalnotification不会出现,xamarin.ios,Xamarin.ios,我有一个monotouch应用程序,它有一个计时器,可以从服务器获取数据。 收到数据后,我想在状态栏上显示通知。 当应用程序位于前台时,它工作正常。当应用程序处于后台时,计时器和通知都不起作用 请帮助我纠正这个问题。当iOS应用程序转换到挂起(即后台)状态时,它会停止计时器并禁用locl通知(并执行更多与内存优化相关的操作)。当你的应用程序在后台时显示用户警报的一个可能的解决方案(仅适用于JB)是运行服务器(真正的unix服务器,它不受应用程序后台化的困扰!),并使用未记录的CFUserNoti

我有一个monotouch应用程序,它有一个计时器,可以从服务器获取数据。 收到数据后,我想在状态栏上显示通知。 当应用程序位于前台时,它工作正常。当应用程序处于后台时,计时器和通知都不起作用


请帮助我纠正这个问题。

当iOS应用程序转换到挂起(即后台)状态时,它会停止计时器并禁用locl通知(并执行更多与内存优化相关的操作)。当你的应用程序在后台时显示用户警报的一个可能的解决方案(仅适用于JB)是运行服务器(真正的unix服务器,它不受应用程序后台化的困扰!),并使用未记录的CFUserNotificationDisplayAlert()函数(只需谷歌一下)。

当iOS应用程序转换到挂起(即后台化)状态时,它停止计时器并禁用locl通知(并执行更多与内存优化相关的操作)。在应用程序处于后台时显示用户警报的一种可能的解决方案(仅适用于JB)是运行一台服务器(真正的unix服务器,不受应用程序后台化的困扰!),并使用未记录的CFUserNotificationDisplayAlert()函数(只需谷歌一下)。

您最好的机会是将应用程序的生命周期延长一点,在后台请求宽限期。只要您在此时间段内收到此消息,您就可以发布通知


您可以通过调用UIApplication.BeginBackgroundTask来实现这一点。这将允许您运行一段时间,您传递的方法将在宽限期结束前不久被调用。

您最好的机会是通过在后台请求宽限期,将应用程序的生存期延长一段时间。只要您在此时间段内收到此消息,您就可以发布通知


您可以通过调用UIApplication.BeginBackgroundTask来实现这一点。这将允许您运行一段时间,并且您传递的方法将在宽限期结束前不久被调用。

当您有一个带有位置更新寄存器的应用程序时,它似乎总是在一定程度上在后台运行,因为您获得了显著的位置更改和进入/退出区域,所以你的应用程序正在运行代码或者被唤醒运行代码。。。问题是UILocalnotification无法持续触发声音和警报(但所有呼叫都显示在通知中心…)这里的大问题是有效位置发生变化,如果无法可靠地通知用户,则进入/退出区域将无效。。。。CFUserNotificationDisplayAlert()是否是触发用户警报的唯一解决方案?它有用吗?如果您使用您的应用程序,它会被拒绝吗?

当您有一个带有位置更新注册的应用程序时,它似乎总是在一定程度上在后台运行,因为您得到了显著的位置更改和进入/退出区域,所以您的应用程序正在运行代码或被唤醒以运行代码。。。问题是UILocalnotification无法持续触发声音和警报(但所有呼叫都显示在通知中心…)这里的大问题是有效位置发生变化,如果无法可靠地通知用户,则进入/退出区域将无效。。。。CFUserNotificationDisplayAlert()是否是触发用户警报的唯一解决方案?它有用吗?如果您使用您的应用程序,它会被拒绝吗?

让您的应用程序在后台运行很容易,在info.plist中添加应用程序注册以进行位置更新,为重大位置更改创建CLlocation单例注册,您就完成了,每次发生重大位置更改时,您的应用程序都将重新启动

让您的应用程序在后台运行很简单,请在info.plist中为位置更新添加应用程序注册,为重大位置更改创建CLlocation singleton注册,然后完成,每次位置发生重大变化时,您的应用程序都会重新启动。

我的工作原理如下:(不是一个好设计,但很有效) 在info.plist中添加位置支持,创建一个clocation manager并继续重新验证位置服务。在同一个循环上调度UIlocalnotification

它工作得很好。:)


注意:一个问题是,它会给用户一个建议,因为“这个应用程序使用你的位置,你想允许吗”

我的工作原理如下:(不是一个好的设计,但是一个可行的设计) 在info.plist中添加位置支持,创建一个clocation manager并继续重新验证位置服务。在同一个循环上调度UIlocalnotification

它工作得很好。:)


注意:一个问题是,它会给用户一个建议,因为“此应用程序使用您的位置,您想允许吗”

+1,非常烦人,没有设计良好的解决方案。+1,非常烦人,没有设计良好的解决方案。谢谢您的回答,但这是唯一的方法吗??如果我想在应用程序处于后台时提醒用户,该怎么办?对不起,苹果是有限制的。你可以使用这种未记录的方法,这种方法已经存在/使用了很多年,但是当你的应用程序放在后台时,它会被激活。谢谢你的回答,但这是唯一的方法吗??如果我想在应用程序处于后台时提醒用户,该怎么办?对不起,苹果是有限制的。你可以使用这种未记录的方法,这种方法已经存在/使用了很多年,但是当你的应用程序放在后台时,它会被激活。谢谢你的回复Brett。。。但是如果我把手机放在同一个位置(比如说,没有位置变化),情况会怎样呢。。。我的应用程序会在后台运行吗?据我所知和理解,它会在后台运行一段有限且未定义的时间,然后进入暂停阶段