我是iOS新手,我正在处理推送通知。我已经通过parse.com完成了这项工作,并且工作正常。
我的问题是:
我有两个UIViewController
。在第一个ViewController
中,在viewDidLoad
方法中调用Web服务,并从服务器获取学生数据并在tableview上显示。
然后我选择了tableview中的任何学生,这样它将在第二个detailviewcontroller
导航,在那里将显示学生的详细信息。
现在我按下了主页按钮,我的应用程序进入后台模式,推送通知到了。
现在,我点按应用程序图标而不是通知视图来显示更新。
任何人都可以帮助我如何处理这种情况,因为当用户点击应用程序图标时,它将直接导航学生详细信息视图。如何处理此推送通知并更新学生表视图?
答案 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调用,则可以使用推送通知解决问题。
AppDelegate
会被- application:didReceiveRemoteNotification:
- application:didReceiveRemoteNotification:fetchCompletionHandler:
在这两种情况下,如果尚未运行,您需要调整JSON有效负载以在后台启动应用。
在这两种情况下,你都希望坚持"未经处理的"通知。如果您只想保留标识符或任何其他小块信息,我可能会查看NSUserDefaults
。
如果数据很大,或者您想从网络中获取对象,则数据库或CoreData(甚至是Parse.com本地存储解决方案)应该是更合适的方法。
一旦您的应用实际启动,请务必记住清除您创建的未处理通知的本地队列。
希望有所帮助
更新 @ Sega-Zero提到您应该包含在有效负载中的JSON字段的名称