【问题标题】:how we know that notification reached to iOS device?我们如何知道通知已到达 iOS 设备?
【发布时间】:2016-12-27 09:15:12
【问题描述】:

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

【问题讨论】:

  • @PiyushRathi 感谢您的回答,这仅在用户单击通知时有效。
  • 只有当用户点击通知时,您的应用才会被注意到。
  • 无法知道用户是否收到了通知。但是,如果它是后台通知,您现在可以知道 设备 使用适当的委托方法收到了它。

标签: ios objective-c push-notification


【解决方案1】:

没有办法这样做,因为 APNS 只会向目标令牌发送推送通知。那里有一些验证过程来报告令牌无效。

我认为你应该实现自己的逻辑来做到这一点,所以当点击通知时,你会得到你的回调: https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623013-application 并调用用户实际点击通知的后端(通知发件人)。

希望澄清。

【讨论】:

  • 有什么方法可以知道用户什么时候没有点击通知。
  • 我不确定是否有办法检测到这一点,因为通知将保留在您的通知面板中,直到您点击它或清除所有通知 - 这是无法检测到的。
  • 当应用程序处于后台或活动状态时,我们可以检测何时向用户显示通知。但是当应用程序完全关闭时,无法检测到它。
【解决方案2】:

尝试为用户单击通知事件设置一些处理程序 - 您可以在那里执行一些操作,例如向您的服务器发送有关此事件的请求

【讨论】:

  • 感谢您的回答,这仅在用户点击通知时有效。
  • 有什么方法可以知道用户什么时候没有点击通知。
  • 是的,您可以处理用户点击事件 - 但没有通知接收事件
【解决方案3】:

正如 christian 所解释的,您可以通过以下 2 个步骤开发自己的逻辑:

1) 当用户收到通知时,推送通知的委托方法,用于objective-c

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


对于 Swift

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

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

**2)**在第一步完成并且用户点击通知阅读消息之后,您可以再次调用另一个带有一些参数的网络服务来识别用户已经阅读了消息。为此,您可以在 Objective-c 中编写 Web 服务逻辑:

-(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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 2011-09-15
    相关资源
    最近更新 更多