我正在使用 XMPP 框架在 IOS 中做一个聊天应用程序。 以前它不能在后台工作,但现在我需要在用户收到消息时发送本地通知。 我的应用程序不为此功能使用推送通知,因为在同一应用程序中,Android 设备在用户收到消息时发送本地通知。
我在互联网上尝试了一些文档,发现应用程序不支持后台运行,我需要在后台模式下检查 VOIP,但文档还说苹果有机会拒绝该应用程序。
这是我的代码:
- (void)applicationDidEnterBackground:(UIApplication *)application{
XMPPPresence * presence =[XMPPPresence presence];
[[self xmppStream] sendElement:presence];
NSLog(@"*********%@",presence.type);}
但是 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message{}
不在后台调用 我还启用了 enableBackgroundingOnSocket。 但我需要知道为什么它不能在后台工作。 如果 Apple 因 VOIP 拒绝此应用程序,是否有替代解决方案,无需推送通知。
任何指导或建议都会有所帮助。
最佳答案
当您的应用进入后台时,您(客户端)关闭与 xmpp 服务器的连接。当您的应用程序返回前台时,您会重新打开连接。如果您的服务器需要向您的客户端发送消息,它必须使用推送通知。当客户端收到通知 CAN(这取决于用户操作)可以回到前台。 仅适用于 VoIP 应用 您需要在 Info.plist 中指定 voip UIBackgroundMode。 信息.plist 文件: 1 - 将“应用程序不在后台运行”设置为否。 2 - 将“App provides Voice over IP services”添加到“Required” 背景模式” 3 - xmppStream.enableBackgroundingOnSocket = 是
关于ios - 在 XMPP 框架中在后台发送本地通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32154984/