【问题标题】:Check a condition in the background every x minites, and if true, send notification每x分钟在后台检查一次条件,如果为真,发送通知
【发布时间】:2013-10-12 14:50:12
【问题描述】:

我已经寻找解决方案几个小时了。我知道如何使用本地通知。我发现本地通知可以重复显示,但通知正文和图标徽章编号应该始终相同。我要做的是:即使应用程序没有运行,也要反复检查一个条件,如果条件为真,则向通知中心发出通知,在应用程序的图标徽章上显示一个数字。要显示的数字是从数据库中获取的。

有人知道如何处理吗?任何帮助将不胜感激。

【问题讨论】:

  • 如果条件必须从 HTTP 服务器加载,你可以使用后台获取,但你指定的时间间隔只是一个建议,iOS 不会让你每隔几个小时运行一次以上.否则,你不能。必须有一个服务器通过 Apple 通知服务发送通知。
  • 我不想使用服务器,因为要显示的内容存储在本地数据库中。间隔只是一个建议,每天运行一次也可以。
  • 您可以使用 Background Fetch,但它的设计目的是从 Internet 上获取一些东西。描述是“该应用程序定期从网络下载和处理少量内容。”。如果您作弊并将其用于其他目的,您的申请可能不会获得批准。您可以从服务器下载一些东西来模拟有意义的网络活动。
  • 相关的苹果文档是Implementing Long-Running Background Tasks
  • 我还没试过,hussain Shabbir的回答能解决这个问题吗?

标签: iphone ios objective-c notifications uilocalnotification


【解决方案1】:

您可以这样做,使用 nstimer,然后在计时器选择器内部每隔几分钟运行一次,然后根据该发布通知写入您的条件以检查。

   [NSTimer scheduledTimerWithTimeInterval:1
  target:self select:@selector(sendnotification:)    userInfo:nil repeats:YES];

   -(void)sendnotification:(Nstimer*)timer
   {
   //post notification here
    }

【讨论】:

  • 感谢您的回答。请你给我更多的细节。喜欢把这个 NSTimer 放在哪里?即使应用程序未打开,它也可以工作吗?谢谢!
  • 这你必须在你想要的应用程序上查看。我想在启动应用程序时在方法内部提出建议。
猜你喜欢
  • 1970-01-01
  • 2019-04-23
  • 2021-04-05
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 2018-03-15
  • 2013-10-19
  • 2018-07-07
相关资源
最近更新 更多