2016-12-27 88 views
0

我正在向多个iOS设备发送通知。有没有什么方法可以知道用户实际收到了通知,并且用户点击了通知?我们如何知道通知到达iOS设备?

+0

这可能会帮助你http://stackoverflow.com/questions/25830597/如何知道推送通知传递状态 – PiyushRathi

+0

@PiyushRathi感谢您的回答,这只有当用户点击通知时才有效。 –

+0

只有当用户点击通知时,您的应用才会被注意。 – KudoCC

回答

1

发送请求到服务器没有办法做到执行一些动作,由于APNS将只送出推送通知目标令牌。在那里有一些验证过程来报告令牌失效。

我想你应该实现自己的逻辑来做到这一点,所以当通知被窃听,你会得到你的名为回调: https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623013-application 并调用后端(通知发送者)是用户实际挖掘的通知。

希望澄清。

+0

有没有什么办法知道用户何时没有点击通知。 –

+0

我不确定是否有办法检测到这种情况,因为通知将保留在通知面板中,直到您点击它或清除所有这些 - 无法检测到。 – christian

+0

当应用程序处于后台或活动状态时,我们可以检测何时向用户显示通知。但是,当应用程序完全关闭时,无法检测到它。 – christian

0

尝试设置一些处理用户单击该通知的事件 - 在那里你可以像有关此事件的

+0

感谢您的回答,这只有在用户点击通知时才有效。 –

+0

有什么方法可以知道用户何时未点击通知。 –

+0

是的,你可以处理用户点击事件 - 但没有通知接收事件 –

0

正如基督教解释,您可以通过以下两个步骤来开发自己的逻辑:

1)当用户得到通知,推送通知的委托方法,对Objective-C的

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo 


和斯威夫特

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) 

变得活跃。在这种方法中,可以使用一些参数调用Web服务调用来识别通知中的消息。

** 2)**第一步完成后,用户单击通知读取消息,然后您可以再次调用具有某些参数的另一个Web服务来识别用户已阅读消息。为此,您可以在编写Web服务的逻辑,对目标c:

-(void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler 

而对于SWIFT:

func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forRemoteNotification userInfo: [NSObject : AnyObject], completionHandler:() -> Void) 
相关问题