我正在尝试为后台提取实现静默推送通知。 现在,我在AppDelegate中实现必要的代码时遇到了一个问题。
在我有以下功能之前,为了处理推送通知:
-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSLog(@"Just Received a push!");
...
}
我添加了以下函数来处理后台提取静默通知:
//backgroundDownloadTask
- (void) application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSLog(@"Just Received a push!");
....
}
奇怪的是,当我收到正常通知时,它也进入了第二个功能,第一个(旧)似乎现在最无用,所以我添加了以下内容来区分正常和静默:< / p>
//backgroundDownloadTask
- (void) application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSLog(@"Just Received a push!");
NSDictionary *dict = [userInfo objectForKey:@"aps"];
if([dict objectForKey:@"content-available"])
{
//silent
}
else
{
//normal push
}
}
但问题是当我在前台并且我收到推送时,没有功能正在执行,因为没有接收到推送(可能因为第二个功能仅用于后台)。
那我怎么能处理两次推送?任何的想法 ? 谢谢,