我现在正在使用didReceiveRemoteNotification
来获取从Parse推送的通知的有效负载,但是,只有在点击并打开通知时才会触发它。
我正在尝试做的是启动警报以提醒用户通知已到达,所以我猜didReceiveRemoteNotification
不是我正在寻找的。我应该为此目的考虑哪种方法?
谢谢!
答案 0 :(得分:3)
来自 2014年WWDC的文字 iOS通知中的新内容
本地和推送通知允许后台或非活动应用通知用户发生了感兴趣的事件,或者应用为其提供了新信息。
WWDC 2013 多任务的新功能告诉我们如何开展这项工作。
•在 info.plist
中添加UIBackgroundModes : remote-notification
•在从服务器发送时,在您的有效负载中添加`content-available:1
•让iOS处理它以打开您的应用程序以进行后台模式
对于iOS 10及更高版本,您必须从目标开启Background Modes
- >在功能下,选中标记必填字段。
现在您可以根据需要设置闹钟。您可以设置预定的本地通知,直到用户与应用程序进行交互
答案 1 :(得分:0)
除非用户点击通知横幅或该应用位于前台,否则您无法对推送通知执行任何操作。在后台,你没有控制权。参考Apple Push Notification setting up Remote Notifications method overrides other methods
答案 2 :(得分:0)
您必须在app delegate中查找此方法: -
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
现在检查您的应用是否已收到任何推送通知
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification) {
NSLog(@"app received a notification %@",notification);
[self application:application didReceiveRemoteNotification:(NSDictionary*)notification];
}else{
NSLog(@"app did not receive a notification");
}
答案 3 :(得分:0)
在iOS中收到远程通知时,将调用以下方法。
func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable : Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
// do something
}
除了用于远程通知的基本设置之外,您还应该在通知有效载荷中的标记下方设置
。"content-available": 1