iphone XMPP 应用程序运行后台

2024-05-07

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


您确实可以通过将基于 XMPP 框架的应用程序称为 VoIP 应用程序来在 iOS4 中的后台运行该应用程序。 (However, 苹果将​​拒绝其从 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

处理程序,如果您处于后台状态,您可能希望为该消息创建本地通知(您可以通过以下方式跟踪后台状态)UIApplicationDidEnterBackgroundNotification and UIApplicationWillEnterForegroundNotification)。本地通知处理程序可以设置应用程序徽章编号等(就像推送通知一样)。

EDIT

较新版本的 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];
    }];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iphone XMPP 应用程序运行后台 的相关文章

  • iPhone UITableView 分页结果

    对从服务器拉取的大量结果进行分页的最佳方法是什么 就服务器而言 我可以抵消和限制结果 因此我一次只能提取 25 个结果 但是允许用户查看更多结果而不需要像应用商店一样不断向下滚动不断增长的列表的最佳方式是什么应用程序 谢谢 豪伊 要在列表底
  • set-key-partition-list codesign 后仍提示密钥访问

    我正在导入一个PEM使用以下命令包含我的代码签名身份的公钥和私钥的文件 security import PEM FILE k Library Keychains login keychain T usr bin codesign T usr
  • 如何在iPhone应用程序中的类结构中实现主键和外键表数据[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何连接sqlite数据库中的两个表数据 if sqlite3 open dbPath UTF8String database SQL
  • UISegmentedControl 中的自定义字体禁用调整FontSizeToFitWidth

    我已经为我的 UISegmentedControl 设置了自定义字体 但它似乎禁用了默认字体自动调整字体大小以适合宽度范围 Before After 这是我用来设置自定义字体的代码 UISegmentedControl segmentedC
  • 当用户到达 UITableView 的最后一行时,如何动态添加行?

    我有一个UITableview当前显示 10 行 固定为静态 现在我想在其中添加一个功能 当用户到达最后一行时 我想向表中添加更多 10 行UITableView 我的意思是目前我在应用程序中显示固定的 10 行 但现在我想在用户到达上一个
  • 将 UITableViewDataSource 与具有子视图的自定义单元格结合使用

    在 UITableView 中使用自定义单元格时 我遇到了奇怪的表格重叠 Problem 向下滚动 最后两行上面画有顶部两行 向上滚动 前两行上面画有下面两行 这是 UITableViewDataSource 的代码 func tableV
  • NSHTTPCookieStorage 是否跨应用程序持续存在?

    所以我只是好奇 NSHTTPCookieStorage 是否跨应用程序持久存在 或者仅在当前应用程序本地 我希望在另一个应用程序中收集的一些 cookie 可以在搜索应用程序中访问 是这样的吗 谢谢 PS 这是在 iPhone 或 iPad
  • 部署目标是什么意思?

    这是我假设的一个非常简单的问题 有人可以告诉我部署目标是什么意思吗 如果我选择 iOS 10 是否意味着只有 iOS 10 的用户才能下载该应用程序 选择较低的部署目标是否不好 另外 继续部署目标 是否不建议在较低的部署目标上运行 假设您已
  • TDD iOS 教程 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您好 我正在寻找非常好的 iOS TDD 教程 请您帮助我 什么是最好的 iOS TDD 书籍 博客
  • 在 Android 上使用 opus 剪辑从 IOS 发送的声音

    我正在 IOS 中从 audioUnit 录制音频 用 opus 编码字节并通过 UDP 将其发送到 android 端 问题是播放的声音有点削波 我还通过将原始数据从 IOS 发送到 Android 来测试声音 效果非常完美 我的 Aud
  • 删除 UICollectionView 中的最后一个单元格会导致崩溃

    您好 我正在使用自定义 UICollectionView https github com SureCase WaterfallCollectionView https github com SureCase WaterfallCollec
  • 允许的 APNS 持续连接数量是多少?

    我正在尝试编写服务器端代码来为我的应用程序发送推送通知 根据 Apple 的建议 我计划保留连接并根据需要发送推送通知 Apple 还允许打开和保留多个并行连接以发送推送通知 您可以与同一网关或多个网关实例建立多个并行连接 为此 我想维护一
  • iOS 中如何清除特定域的 cookie?

    我已经搜索了 StackOverflow 上的几乎所有问题来寻找我的问题的答案 我还没有找到任何有用的链接或教程来说明哪种方式最好清除特定域的 cookie 如果有人可以帮助我 请 我自己找到了解决方案 如果您想删除 UIWebView 中
  • 滑动删除不起作用

    滑动删除功能在我的表格视图中不起作用 我已经在导航栏中实现了 commitEditingStyle 委托和编辑按钮 因此 当用户单击编辑按钮时 删除和添加按钮会相应显示 但是 在滑动时 删除按钮不会出现 并且似乎它无法将滑动识别为对 set
  • Swift 中的“funcobserveValueForKeyPath(keyPath:NSString,object:AnyObject,change:NSDictionary,context:Void)”问题

    我已经为 AVPlayer 添加了一个观察者 如下所示 self audioPlayer addObserver self forKeyPath currentItem status options NSKeyValueObservingO
  • UITextView 动画更改框架不会动画文本重新分配

    我有一个 UITextView 我试图在用户点击按钮时为框架的变化设置动画 基本上 文本视图会变大以适应屏幕 以便可以显示更多文本 然后当用户再次点击按钮时 它会缩小到原始框架 我使用块执行动画 如下所示 if isDisplayingDe
  • 当应用程序退出活动状态时,MPMovies PlayerViewController 被解雇

    当我将 iPhone 设置为睡眠状态 切换到另一个应用程序等 然后再次返回时 之前的可见内容MPMoviePlayerViewController 提出与presentMoviePlayerViewControllerAnimated 已经
  • UITableview 中的水平和垂直滚动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 I want to make a lineup for a festival You can see what I want to a
  • iPhone 中的 NSNotification

    我正在将 NSSNotifcation 发送到 iPhone 应用程序中的另一个视图控制器 但它的观察者方法收到两次通知 这可能如何 任何人都可以指导我 我已经使用此代码来发布通知 NSNotificationCenter defaultC
  • 自定义字体显示在 IB 中,但不显示在模拟器中

    我已经设置了一个UITextView and a UILabel使用自定义字体 它是垂直镜像的蒙古文字体 但我还添加了英文文本 以便您可以看到效果 这些文字显示在 Interface Builder 中 但在模拟器中大部分字符都在UITex

随机推荐

  • 在 Mac OS X 10.6 上编译和执行莎士比亚编程语言转换器 spl2c 会导致警告/错误

    我想尝试一下莎士比亚编程语言 http shakespearelang sourceforge net report shakespeare 所以我从here http shakespearelang sourceforge net 并使用
  • 将用户添加到组但运行“id”时未反映

    R 创建了一个名为 Staff 的组 我希望能够在不以 sudo 身份启动 R 的情况下更新软件包 所以我使用以下方法将自己添加到员工中 sudo usermod G adm dialout cdrom plugdev lpadmin ad
  • 如何使用内部 IP 在同一 VPC 但不同子网(区域)内的 2 个实例进行通信

    我有 2 个实例 1 个 VPC 和 2 个子网 每个实例位于不同的区域 1 个实例有公共 IP 另一个实例只有内部 IP 我希望这两个实例使用其内部 IP 相互通信 我怎样才能实现这个目标 Edit 实例 名称 实例 a 区域 us ce
  • 尝试在脚本标记上触发 onload 事件

    我试图按顺序加载一组脚本 但 onload 事件没有为我触发 var scripts cdnjs cloudflare com ajax libs less js 1 3 3 less min js cdnjs cloudflare com
  • 如何解决 iPhone 应用程序中的无效转换说明符警告

    我有 iphone 应用程序 其中为标签分配值 但是当我构建它时 它显示以下警告无效转换说明符 这是标签赋值的代码 label1 text NSString stringWithFormat d newvalue1 The 被解释为格式字符
  • Mac 操作系统的 windows.h 替代品

    早上好 我正在使用 Codeblock c 程序进行编程 但是 我需要使用窗口 h and conio h MacBook 上没有这个头文件 拜托 你能帮我吗 不起作用的来源 void gotoxy int x int y COORD co
  • 检查自定义键盘扩展的完全访问权限

    我需要检查自定义键盘扩展的完全访问权限 我找到了这个链接 如何检查 iOS 8 中的 允许完全访问 是否已启用 https stackoverflow com questions 25472388 how to check the allo
  • 从 STL 容器并行读取

    从多个并行线程读取 STL 容器是安全的 然而 表现却很糟糕 为什么 我创建了一个小对象 将一些数据存储在多重集中 这使得构造函数相当昂贵 在我的机器上大约为 5 usecs 我将数十万个小对象存储在一个大型多重集中 处理这些对象是一项独立
  • 如何使用 jQuery 和“长轮询”通过 Indy HTTP 服务器动态更新 HTML 页面?

    我读过这篇文章使用 JavaScript 和 jQuery 的简单长轮询示例 http techoctave com c7 posts 60 simple long polling example with javascript and j
  • 如何修改python中的本地命名空间

    如何修改Python中函数的本地命名空间 我知道 locals 在函数内部调用时返回函数的本地命名空间 但我想做这样的事情 我有一个原因为什么我想在 f 无法访问 g 的情况下执行此操作 但给出更快一个简单的 愚蠢的例子来说明问题 def
  • Indy FTP 传输类型

    我正在使用 IdFTP Indy 10 组件从远程位置下载一些文件 zip 和 txt 在获取每个文件之前 我将 TransferType 设置为二进制 IdFTP TransferType ftBinary IdFTP Get ASour
  • JDBC中为什么要关闭连接?如果我们不这样做,会发生什么

    在java中与数据库通信 我们经常遵循以下步骤 加载驱动程序 建立连接 创建声明或PreparedStatement get the ResultSet 关闭连接 我很困惑我们应该关闭连接 都说创建连接很昂贵 所以为什么我们不能这样做 st
  • 如何在Python中打印颜色/颜色?

    我对 Python 和 StackOverflow 都是新手 需要一点帮助 我想用 Python 打印颜色 并在 Google 上搜索过 但运气不佳 每次我都很困惑 但都没有成功 这是我输入的代码 answer input Wanna go
  • 哪个 C++ 草案?

    我对当前的 C 标准感兴趣 并且对以下链接有点困惑http www open std org jtc1 sc22 wg21 docs papers 2014 http www open std org jtc1 sc22 wg21 docs
  • Scala 中两个地图的交集和合并/连接

    假设我有两张类似这样的地图 val m1 Map 1 gt One 2 gt Two 3 gt Three val m2 Map 2 gt 2 0 3 gt 3 0 4 gt 4 0 我想根据键获取交集并返回一个表示合并值的元组 结果看起来
  • cout 可以以某种方式改变变量吗?

    所以我有一个看起来像这样的函数 float function float x SomeValue return x SomeOtherValue 在某些时候 这个函数会溢出并返回一个非常大的负值 为了尝试准确追踪发生这种情况的位置 我添加了
  • C++中exit和kill的区别

    我已经编写了一个信号处理程序来处理SIG 如果我得到的进程太多 我想终止该进程 那么 以下哪个代码更好 或者我应该同时使用它们 exit 1 or some other exit code kill getpid SIGKILL 您可能不想
  • 如何研究.NET 中的非托管内存泄漏?

    我有一个通过 MSMQ 运行的 WCF 服务 内存随着时间的推移逐渐增加 表明存在某种内存泄漏 我在本地运行该服务并使用 PerfMon 监视一些计数器 CLR 内存托管堆字节总数保持相对恒定 而进程的私有字节随着时间的推移而增加 这让我相
  • 如何将现场 prestashop 站点移至本地主机?

    我在将 PS 1 7 从服务器域传输到本地主机时遇到问题 我已按照 Prestashop 文档中的文件传输的所有步骤进行操作 我执行此步骤 1 将所有 prestashop 文件从服务器下载到我的 mac 并将其放入 mamp htdocs
  • iphone XMPP 应用程序运行后台

    我使用 XMPP 框架创建了一个聊天应用程序 当我退出应用程序 进入后台模式 时 我想接收聊天消息 并且还需要显示图标徽章 我该怎么做 您确实可以通过将基于 XMPP 框架的应用程序称为 VoIP 应用程序来在 iOS4 中的后台运行该应用