我正在使用FCM(Firebase云消息传递)在iOS中发送推送通知。
当App处于前台状态时,我能够收到通知。但是当应用程序处于后台状态时,不会收到通知。每当应用程序进入前台状态时,只有那时才会收到通知。
我的代码是:
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
当App处于后台状态时:
<t:dataTable id="data" var="phen"
value="#{workflowLookup.dataModel}"
binding="#{workflowLookup.table}"
varDetailToggler="detailToggler">
<f:facet name="header">
<h:commandButton
id="expand-all-button"
action="#{detailToggler.expandAllDetails}"
value="Expand All" />
<h:commandButton
id="collapse-all-button"
action="#{workflowLookup.collapseAllDetails}"
value="Collapse All" />
</f:facet>
... (rest of table)
</t:dataTable>
- 根本没有被召唤。
我在应用功能的后台模式中启用了推送通知和远程通知。但是App仍然没有收到通知。
我提到了一些StackOverflow问题,但无法解决问题。在iOS版本10中是否有任何要添加的内容或我的代码中有任何错误?
答案 0 :(得分:8)
对于iOS 10,我们需要调用以下两种方法。
对于FOREGROUND状态
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler
{
NSLog( @"Handle push from foreground" );
// custom code to handle push while app is in the foreground
NSLog(@"%@", notification.request.content.userInfo);
completionHandler(UNNotificationPresentationOptionAlert);
}
适用于背景状态
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler
{
NSLog( @"Handle push from background or closed" );
// if you set a member variable in didReceiveRemoteNotification, you will know if this is from closed or background
NSLog(@"%@", response.notification.request.content.userInfo);
completionHandler();
}
在此之前,我们必须添加UserNotifications
框架并导入AppDelegate.h
文件
#import <UserNotifications/UserNotifications.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate,UNUserNotificationCenterDelegate>
答案 1 :(得分:0)
我们已经与客户进行了许多测试,并且对该主题进行了大量研究。 iOS 10.x(尤其是10.3.x)在处理和显示推送时存在问题。解决该问题的唯一方法是升级到更新的iOS版本。