当我终止并杀死我的应用程序时,
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的预期效果.