Raj*_*Raj 8 iphone cocoa-touch xmpp objective-c ios
我使用XMPP框架创建了一个聊天应用程序..当我退出应用程序(进入后台模式)时,我想收到聊天消息..还需要显示图标徽章......我该怎么做?
Jef*_*Hay 11
您确实可以通过将其称为VoIP应用程序在iOS4的后台运行基于XMPP Framework的应用程序.(但是,除非它真的使用VoIP,否则Apple会拒绝它从App Store).
您需要在应用程序的(appname)-info.plist文件中设置VoIP标志,然后在
(void)xmppStream:(XMPPStream *)sender socketWillConnect:(AsyncSocket *)socket
Run Code Online (Sandbox Code Playgroud)
您需要设置套接字流标志以包含kCFStreamNetworkServiceTypeVoIP:
CFReadStreamSetProperty([socket getCFReadStream], kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
CFWriteStreamSetProperty([socket getCFWriteStream], kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
Run Code Online (Sandbox Code Playgroud)
然后,当新的XMPP消息到达时,您的应用程序将被短暂唤醒.在你的正常
(void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
Run Code Online (Sandbox Code Playgroud)
处理程序,如果你是背景的话,你可能想要为消息创建一个本地通知(你可以通过UIApplicationDidEnterBackgroundNotification和跟踪背景状态UIApplicationWillEnterForegroundNotification).本地通知处理程序可以设置应用程序徽章编号等(就像您推送通知一样).
编辑
较新版本的XMPP Framework(特别是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];
}];
}
Run Code Online (Sandbox Code Playgroud)
可以在后台无限制地运行的程序数量有限,这些程序是VOIP程序,播放音乐的程序以及跟踪用户位置的程序.如果你没有合法地做任何这些,那么你只能进行十分钟的背景操作.请注意,Apple会拒绝尝试使用愚蠢技巧的应用,例如播放"空"声以保持应用直播.
您可以在此处找到有关正在运行的任务的信息:http: //developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html
我猜你的另一个选择是让聊天程序通过联系服务器来运行,并在用户离线时让服务器队列响应,然后在他们下次登录时提供它们.我自己并不是一个网络程序员,我不知道这是多么可行,但我认为如果你只提供文字聊天,这是无限期地做到这一点的唯一方法.更好的选择是使用上面的指南启用应用程序VOIP.
编辑自iOS 5.0发布以来,还可以将注册为报亭应用程序的应用程序下载信息,同时使用后台,还有一些其他时髦功能,仅限报亭.
-灰
在最新的XMPP Framework中,您无需修改框架文件.
只需这样做:1.将其添加到您的connect方法
#if !TARGET_IPHONE_SIMULATOR
{
self.xmppStream.enableBackgroundingOnSocket = YES;
}
#endif
Run Code Online (Sandbox Code Playgroud)
2.将voip密钥添加到info plist文件中:

| 归档时间: |
|
| 查看次数: |
10826 次 |
| 最近记录: |