如何在我的应用激活时处理推送通知?

时间:2015-06-26 19:15:45

标签: ios apple-push-notifications appdelegate

我是iOS新手,我正在处理推送通知。我已经通过parse.com完成了这项工作,并且工作正常。

我的问题是:

我有两个UIViewController。在第一个ViewController中,在viewDidLoad方法中调用Web服务,并从服务器获取学生数据并在tableview上显示。

然后我选择了tableview中的任何学生,这样它将在第二个detailviewcontroller导航,在那里将显示学生的详细信息。

现在我按下了主页按钮,我的应用程序进入后台模式,推送通知到了。

现在,我点按应用程序图标而不是通知视图来显示更新。

任何人都可以帮助我如何处理这种情况,因为当用户点击应用程序图标时,它将直接导航学生详细信息视图。如何处理此推送通知并更新学生表视图?

3 个答案:

答案 0 :(得分:0)

好的,可以在应用打开时试试这个:

-(void)applicationDidBecomeActive:(UIApplication *)application
{
    int i=[UIApplication sharedApplication].applicationIconBadgeNumber;
    //if i!=0 you got some notifications - fetch data from server and refresh array with data
}

答案 1 :(得分:0)

content-available标志是您所需要的。将其附加到您的有效负载,处理application:didReceiveRemoteNotification:fetchCompletionHandler:,您将能够捕获所有推送通知。有关详细信息,请查看同一问题的my answer

P.S。如果你的应用程序被强行关闭,则无法办理。如果您的应用正在运行 - 您可以处理所有通知

答案 2 :(得分:0)

虽然我喜欢阅读徽章编号的解决方法,但我尝试明确说明问题,如果您无法实现自上次请求以来会带来增量更改的同步API调用,则可以使用推送通知解决问题。

  1. 当您的应用只在后台时,AppDelegate会被- application:didReceiveRemoteNotification:
  2. 调用
  3. 如果您的应用未运行,您可以发送推送通知来触发您的应用进行处理,您获得的代表是- application:didReceiveRemoteNotification:fetchCompletionHandler:
  4. 在这两种情况下,如果尚未运行,您需要调整JSON有效负载以在后台启动应用。

    在这两种情况下,你都希望坚持"未经处理的"通知。如果您只想保留标识符或任何其他小块信息,我可能会查看NSUserDefaults

    如果数据很大,或者您想从网络中获取对象,则数据库或CoreData(甚至是Parse.com本地存储解决方案)应该是更合适的方法。

    一旦您的应用实际启动,请务必记住清除您创建的未处理通知的本地队列。

    希望有所帮助

    更新 @ Sega-Zero提到您应该包含在有效负载中的JSON字段的名称