IOS,处理程序推送通知
IOS, handler push notification
有什么方法可以处理当他不在应用程序(后台)时进入设备的推送通知?
假设我的 apns 发送消息:"hello world"
当应用程序在后台时,我想在设备显示推送通知之前更改消息(不是通过服务器,通过我的应用程序)。
你应该可以做到这一点。您可以获得静默推送通知。当您收到通知时,根据需要对其进行更改,然后安排一个包含您想要显示的警报的本地通知。完全披露,我实际上并没有尝试过这个。
您需要使用 Silent Push Notifications 执行此操作,因为在使用 正常 推送通知时您无法更改消息(OS 将收到消息时显示消息)。
当您发送静默推送时,您可以在您的应用委托中处理它,然后安排本地通知:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler {
NSDictionary *apsPayload = [userInfo objectForKey:@"aps"];
if ([userInfo[@"content-available"] boolValue] /* silent push */) {
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.alertBody = @"Hello Local World!";
localNotification.fireDate = [NSDate date];
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.soundName = UILocalNotificationDefaultSoundName;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
}
有什么方法可以处理当他不在应用程序(后台)时进入设备的推送通知?
假设我的 apns 发送消息:"hello world" 当应用程序在后台时,我想在设备显示推送通知之前更改消息(不是通过服务器,通过我的应用程序)。
你应该可以做到这一点。您可以获得静默推送通知。当您收到通知时,根据需要对其进行更改,然后安排一个包含您想要显示的警报的本地通知。完全披露,我实际上并没有尝试过这个。
您需要使用 Silent Push Notifications 执行此操作,因为在使用 正常 推送通知时您无法更改消息(OS 将收到消息时显示消息)。
当您发送静默推送时,您可以在您的应用委托中处理它,然后安排本地通知:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler {
NSDictionary *apsPayload = [userInfo objectForKey:@"aps"];
if ([userInfo[@"content-available"] boolValue] /* silent push */) {
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.alertBody = @"Hello Local World!";
localNotification.fireDate = [NSDate date];
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.soundName = UILocalNotificationDefaultSoundName;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
}