IOS 9远程通知中的滑动按钮 - 当应用程序在后台而不是在应用程序内存不足时工作

Posted

技术标签:

【中文标题】IOS 9远程通知中的滑动按钮 - 当应用程序在后台而不是在应用程序内存不足时工作【英文标题】:Swipe Buttons in IOS 9 Remote Notification - Work when app in background not when app out of memory 【发布时间】:2015-12-08 09:26:07 【问题描述】:

我已经成功实现了我提出的查询的回复通知 [Swipe Buttons not coming for Remote notifications

我的问题是我确实收到了回调,我可以对操作进行必要的处理,例如从文本字段中获取文本并执行必要的发送聊天消息而无需使用此方法从后台“运行时”打开应用程序:

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

我的问题是当应用程序不在内存中并且在按下主页按钮时不在后台运行时,例如通过通知的相同回复不发送聊天。

我怀疑它无法连接 XMPP --> 连接我的数据库 --> 当应用程序完全不在后台时通过 XMPP 发送数据。

如何处理。我想要类似于whatsapp,就像应用程序甚至没有打开但在通知回复时我们可以向其他用户发送whatsapp消息并且他得到它,类似于Skype。

我的理解是否缺失或必须做其他任何事情。

【问题讨论】:

我现在正在研究它,就像你一样。你应该设置 action.activationMode =UIUserNotificationActivationModeBackground;在您回复通知时收到通知的所有情况下,该应用程序将上线,您可以在您的委托中处理它 正如您所说,whatsapp 和 skype 未打开,但通知的回复正在运行,这是完全错误的。当whatsapp或skype打开一次时,即使您通过双击主页按钮关闭应用程序,该应用程序也会在后台运行。如果你想实现你的应用功能,你的应用应该在后台运行 嗨 Balaji,我们再次确认,如果您双击主页按钮,您将看不到 whatsapp 应用程序打开并且仍在后台 XMPP 以某种方式连接并将消息发送给另一边的人。这个我说的是ios手机 @Mohammad :我试过了,但它不起作用 【参考方案1】:

对于 iPhone,应用程序需要执行以下两项操作之一:

    使用 Apple 推送通知 请求 VOIP 权限

VOIP 将允许应用继续在后台接收消息,即使它处于“睡眠状态”。但是,Apple 需要批准您的应用才能获得此权限。

编辑:

XMPP 需要打开的 TCP 连接。如果连接关闭,则服务器不知道如何路由消息。这意味着即使应用程序在后台,也要保持 TCP 连接打开。

这种类型的安排是 Apple 将其归类为需要特殊许可的“VOIP 功能”。使用 VOIP,来电只能在具有活动 TCP 连接的电话上激活。因此,XMPP 本质上与 VOIP 相同。

【讨论】:

但我没有使用任何我要求 Apple 批准的 Voip 功能。 让我试试这个 JIM 并返回帖子,感谢您的解释。

以上是关于IOS 9远程通知中的滑动按钮 - 当应用程序在后台而不是在应用程序内存不足时工作的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 当应用程序被用户强制退出时处理静默推送通知

在 iOS 上为远程推送通知的通知操作调用 Web 服务

更新远程推送通知上的 UIMutableUserNotificationAction 按钮标题

在 iOS 7 中取消 UITableViewCell 滑动删除时收到通知

iOS 8 推送通知操作按钮 - 当应用程序在后台时,handleActionWithIdentifier 中的代码并不总是运行

从后台唤醒应用程序 iOS