gpt4 book ai didi

iphone XMPP App运行后台

转载 作者:可可西里 更新时间:2023-11-01 03:05:20 25 4
gpt4 key购买 nike

我使用 XMPP 框架创建了一个聊天应用程序..当我退出应用程序(进入后台模式)时,我想接收聊天消息..并且还需要显示图标角标(Badge)...我该怎么做?

最佳答案

您确实可以在 iOS4 的后台运行基于 XMPP 框架的应用程序,方法是将其称为 VoIP 应用程序。 (但是Apple 会拒绝将其从 App Store 中删除,除非它也真正支持 VoIP)。

您需要在应用的 (appname)-info.plist 文件中设置 VoIP 标志,然后在

(void)xmppStream:(XMPPStream *)sender socketWillConnect:(AsyncSocket *)socket

您需要设置套接字流标志以包括kCFStreamNetworkServiceTypeVoIP:

 CFReadStreamSetProperty([socket getCFReadStream], kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
CFWriteStreamSetProperty([socket getCFWriteStream], kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);

然后,当新的 XMPP 消息到达时,您的应用程序将被短暂唤醒。在你的正常

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

处理程序,如果您在后台(您可以通过 UIApplicationDidEnterBackgroundNotificationUIApplicationWillEnterForegroundNotification 跟踪后台状态),您可能希望为该消息创建一个本地通知。本地通知处理程序可以设置应用程序角标(Badge)编号等(就像您对推送通知所做的那样)。

编辑

较新版本的 XMPP 框架(特别是 GCDAsyncSocket)现在支持调用以简化此操作,因此您可以:

- (void)xmppStream:(XMPPStream *)sender socketWillConnect:(GCDAsyncSocket *)socket
{
// Tell the socket to stay around if the app goes to the background (only works on apps with the VoIP background flag set)
[socket performBlock:^{
[socket enableBackgroundingOnSocket];
}];
}

关于iphone XMPP App运行后台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5257580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com