如果您已经在桌面上阅读,Facebook Messenger如何从locking屏幕清除推送通知?

当我在Facebook上收到消息时,我会在锁屏(iOS)上收到推送通知。 然后我在桌面上阅读这个消息。 在此之后,这个推送通知消失,没有任何与电话的交互。 我怎么能自己实现相同的东西去除过时的通知?

第二个用法可能是拼接通知。 例如,当有人喜欢你的照片时,Instagram会向你推送。 20后喜欢你的通知屏幕被破坏,无法读取。 但是,使用与Facebook相同的委托人似乎可以删除先前的相同类别的通知,并使用增加的计数器创build新的通知。 没有“用户A喜欢的照片X,用户B喜欢的照片Y等”,但“20个用户喜欢照片Z”。

在这里我已经看到类似的话题,但迄今为止还没有答案。 谢谢!

请参阅多任务增强function和特定的静默推送通知。 使用静默推送,您可以通知您的应用程序新的内容可用,也可以下载该内容和/或设置徽章号码,例如在“通知中心”中不显示通知。 您将不得不使用远程通知值来设置UIBackgroundModes以使其工作。

如果用户看到了另一个平台上的内容并清除iOS应用上的徽章号码,则可以发送无提示推送。

达到此效果的一个简单方法是使用仅包含徽章计数为0的有效内容向设备发送正常推送通知。

在Facebook的例子中,他们显然拥有足够的服务器能力来检测您何时在桌面上阅读邮件,并发送推送给您的设备,以确保通知不再存在。

我不是说这是FB如何做,但它是一个更简单的path,可能会或可能不符合您的需求。 请记住,后台任务会显着消耗用户的电池电量,应尽可能避免。

这是iOS 7的一项新function,称为无声推送通知,它是一项多任务function。

你将需要什么:

1 – 在didFinishLaunchingWithOptions中注册远程通知:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeNewsstandContentAvailability| UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; } 

2 – 在ApplicationDelegate中实现以下方法:

  - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { handler(UIBackgroundFetchResultNewData); // Possibl Results: // typedef enum { // UIBackgroundFetchResultNewData, //Download success with new data // UIBackgroundFetchResultNoData, //No data to download // UIBackgroundFetchResultFailed //Downlod Failed // } UIBackgroundFetchResult; } 

3 – 在应用程序info.plist中设置UIBackgroundModes:

 > <key>UIBackgroundModes</key> <array> > <string>remote-notification</string> </array> 

警告:我没有尝试过,这只是一个想法!

在iOS 7中,您可以尝试向用户发送无声的“内容可用”通知。 这将在后台唤醒应用程序,并允许您运行一些代码。 在后台,你可以这样做

 [[UIApplication sharedApplication] setApplicationBadgeNumber:0]; [[UIApplication sharedApplication] setApplicationBadgeNumber:newBadgeNumber]; 

这应该清除通知中心的任何通知。 然后,您可以使用userInfo字典中的数据发布本地通知,看起来好像旧的replace为新的!

再次,只是一个想法…