我正在使用具有推送通知功能的Swift开发iOS应用程序。该应用程序通过推送通知(此处使用APNS)向用户发送生日提醒通知。
当前,推送通知将保留在设备的通知中心中,直到用户点击该通知或选择从设备中清除该通知为止。
现在,我正在寻找一种在每天结束时自动删除该推送通知的方法,因为无需在设备中显示过去一天的生日通知。
有人可以建议我以哪种方式可以实现此目的的解决方案?是否可以在没有任何用户交互的情况下从iOS删除通知?
提前致谢。
@dm_mobile您的问题是100%有效。
为了自动从通知中心删除特定的通知, -您不能从iOS端执行此操作,除非并且除非用户与该通知进行交互-但是,您可以从服务器端执行此操作,让我告诉您如何
如何以编程方式从通知中心删除通知?
当服务器使用APNS终结点通过APNS服务器向您发送任何通知时,APNS将向您返回一些数据作为有效负载,您将apns-id
在响应标头中获得通知标识符作为键
将该apns-id
值存储在服务器端的数据库表中。
在一天结束或具有特定条件的情况下,您可以通过传递apns-id
请求标头中的值,向APNS发送另一个请求,从而从设备的通知中心删除该通知。
Skype正在做同样的事情。
请阅读以下内容以获取更多详细信息:https : //developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html#//apple_ref/doc/uid/TP40008194-CH11-SW1
@dm_mobile您可以按照我的媒体资料来深入了解Swift和iOS,这是我的一篇有关Swift编程的文章的链接media.com/swift-india/…
您能否告诉我,我应该以哪种方式与APNS服务器通信以删除通知?我曾经打电话给“ / 3 / device / <device-token>”来发送推送通知。我应该使用相同的方法吗?
@dm_mobile请遵循以下链接:developer.apple.com/library/archive/documentation/… :路径-/ 3 / device / <device-token>将“ apns-id”作为标题参数传递
@dm_mobile另外,在发送删除消息时,还需要将通知标记为静默通知,对于静默通知,请在aps {}中使用'content-available'=1。还需要启用后台模式,请检查以下内容:files.readme.io /…
我可以按照您的建议发送静默通知,从而从设备通知中心删除通知。不幸的是,如果该应用被用户强行终止,则无提示通知将无法执行任何操作(例如删除传递的通知)。您对克服这个问题有什么建议吗?另外,我注意到,即使用户强行终止了应用程序,如Whatsapp和Outlook,它们也会自动删除其推送通知。