ios – XMPP应用终止而不是回复消息

我在XMPP应用程序中工作.
当我终止并杀死我的应用程序时,

1)XMPP服务器中未连接用户.用户离线.但我希望用户连接和在线.喜欢Whats App(应用).

2)我当时无法从XMPP服务器端获取任何消息,

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message

这种方法不是调用.那么,我如何获得消息?

而且我也实现了Pushnotification但是这样同样的问题就像,当app是Kill和Terminate时,这个方法不是调用,

- (void)application:(UIApplication )application didReceiveRemoteNotification:(NSDictionary )userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler

所以,请指导我以正确的方式,并建议我如何工作像相同的什么应用程序(应用程序).

另外,我们无法设置VOIP Flag In .plist文件因为这种方式不适合并且被苹果拒绝.

我的目标只是通知工作就像Whats App一样.

解决方法

1)User is Not Connected In XMPP Server. User is Offline. But I want
User is Connected and Online. Like Whats App(Appliction).

一旦您关闭或最小化WhatsApp,用户就会脱机(在iPhone4s上测试),并且在此状态下收到的消息都是推送通知.

2)I can’t get Any Messages From XMPP Server Side at that time,

>(void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)消息

仅在应用程序处于活动状态时才会调用此方法因此,在您杀死应用程序后,您无法在此处收到消息.

- (void)application:(UIApplication )application didReceiveRemoteNotification:(NSDictionary )userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler

将在以下方案中调用此方法

>如果您的应用处于活动状态并且您有任何新的推送通知.
>如果您的应用程序处于后台或已杀死或未启动,则系统将仅在顶部栏上显示通知,一旦用户点击通知,它将打开您的应用程序,然后该方法将被调用.

当然,你不能使用VOIP.

当用户在WhatsApp中处于活动状态时,WhatsApp会显示自定义通知.
您需要为对话的每条消息发送推送通知.在这种情况下

>如果用户处于活动状态,则在应用中显示自定义通知.
>如果用户处于非活动状态(即已杀死或最小化的应用程序),则系统将在通知中心显示通知.

当用户点击通知时,系统将启动应用程序,您必须检查应用程序启动条件(启动源应用程序)并根据条件加入服务器/聊天(如果您正在使用群聊,则为组).

一旦您使用您的姓名/昵称加入服务器,您将获得最近的聊天记录.您还可以获取历史记录,加入聊天服务器/组时需要指定.

当您的应用程序被最小化或被杀死时,请确保您与服务器以及组之间断开连接.使用以下方法断开连接和/或相关更改

1. - (void)applicationDidEnterBackground:(UIApplication *)application
 2. - (void)applicationWillTerminate:(UIApplication *)application

希望这对你有帮助,我已经实现了同样的目标,以达到WhatsApp的预期效果.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...