我正在使用推送通知进行应用,目前我正在使用pushbots推送通知。我想知道是否有任何方法来拦截应用程序收到的通知,并在设备上显示通知之前检查通知。如果通知中的数据不正确,请不要显示通知?这是可能与pushbot或我需要自己做这一切吗?iOS拦截推送通知
回答
您不能阻止通知在到达设备后显示(假设它包含aps
字典中的alert
字段 - 如果没有,则不会显示任何通知)。
您应该确定您的服务器应该将哪些通知发送到哪些设备令牌。如果您的功能需要,您可以将设备令牌与数据库中的用户相关联。
即使您的请求是可能的,向所有安装了您的应用的设备发送通知,然后仅在其中的一小部分中显示通知将是非常低效的。
我设法通过使用别名来实现此目的,类似于设备令牌,但是您可以在每个设备上设置特定该用户的别名。 – Uffe
是的,你可以通过本地通知来实现这种行为。
您可以在不使用alert
和"content-available": "1"
的情况下配置您的有效负载,以便您的应用程序可以接收通知而不会向用户显示通知。
// Payload
{
aps: {
"content-available": 1
},
text: 'my alert message' // your custom info
}
而在你的应用程序代码,注册通知,如在
// Register notifications
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
UIRemoteNotificationTypeNewsstandContentAvailability];
然后,关键是基于某些条件
- (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSLog(@"push data package: %@", userInfo);
// Retrieve your data
NSString *text = [userInfo objectForKey:@"text"];
BOOL mustShow = YES;
// Only show notification if app is background and your custom condition
if ((state == UIApplicationStateInactive || state == UIApplicationStateBackground)
&& mustShow) {
// Raise the local notification a second after received
UILocalNotification* localNotification = [[UILocalNotification alloc] init];
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];
localNotification.alertBody = text;
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
}
这样你在application:didReceiveRemoteNotification:fetchCompletionHandler:
方法来触发本地通知可以在将它们“显示”给用户之前“拦截”通知。
它应该被接受为正确答案 –
- 1. 推送通知IOS
- 2. 推送通知IOS
- 3. iOS推送通知 -
- 4. iOs推送通知
- 5. AppleScript拦截通知
- 6. 拦截其他应用程序推送通知iOS上与雨燕
- 7. 拦截推送通知在应用程序中显示
- 8. IOS本地推送通知
- 9. iOS推送通知显示
- 10. iOS推送通知政策
- 11. iOS推送通知didFailToRegisterForRemoteNotificationsWithError
- 12. 通知iOs推送交付?
- 13. Slient推送通知iOS中
- 14. 的iOS推送通知
- 15. 推送通知iOS重置
- 16. IOS推送通知 - GCDAsyncSocket
- 17. Carriot推送通知到iOS
- 18. 静音推送通知。 iOS
- 19. iOS VoIP推送通知(PushKit)
- 20. 在ios中推送通知
- 21. Django推送通知到IOS
- 22. iOS推送通知与SNS
- 23. Unity3d:Android和iOS推送通知
- 24. 解析推送通知iOS
- 25. iOS 10/9推送通知
- 26. Flex和iOS推送通知
- 27. IOS推送通知错误
- 28. iOS创建推送通知
- 29. 分配iOS推送通知
- 30. SignalR IOS推送通知
为什么通知“不正确”?您控制发送到设备的通知,不要发送错误的通知... – Doc
正确可能是错误的词,但我想检查它是否是正确的“用户”或设备。我不希望所有带有应用程序的设备都获得所有通知。 – Uffe
当您发送推送通知时,您指定设备令牌以确定将通知发送到哪个设备... – Doc