在iOS中跨应用程序共享UDP数据(背景/前景或分屏多任务)
我正在撰写一个研究应用程序,利用通过UDP广播数据的特定传感器。 有各种商业应用程序使用这种传感器,我们希望能够并行运行我们的应用程序和现有的应用程序。
在过去(iOS 8及以下版本),我们将在后台运行我们的应用程序,在前台logging数据和不同的应用程序。 不幸的是,似乎只有一个应用程序能够绑定到传入的UDP数据(这是有道理的),但即将到来的'并行'的应用程序function,我想知道是否有任何解决scheme来共享应用程序之间的数据。
我唯一能想到的是以某种方式让我们的应用程序捕获数据并将其重新广播给其他应用程序,但是我不知道这是否可能在iOS中,即使这是你如何确定“谁“在UDPstream上locking。
苹果的文档在: https : //developer.apple.com/library/prerelease/ios/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/index.html#//apple_ref/doc/uid/TP40015145似乎没有提供太多的信息。
我不确定这是否适用于您的用例,但您可能希望使用CloudKit将数据发送到自定义应用程序容器。 在第二个应用的应用function部分,您可以访问共享容器。
从iClouddevise指南 :
当您启用iCloud Documents或CloudKitfunction时,Xcode会将您的应用程序configuration为访问名称基于应用程序包ID的iCloud容器。 大多数应用程序只需要访问默认的容器。 如果您的应用程序彼此共享数据,请启用“指定自定义容器标识符”选项并添加一个或多个用于共享数据的容器ID。
来自苹果〜更多细节见原文
在应用程序之间共享容器
或者,configuration您的应用程序以使用多个容器或与其他应用程序共享一个容器。 例如,您可以在内部使用一个应用程序来创buildloggingtypes并以编程方式logging以将数据库返回到已知状态。 这个应用程序需要与您正在开发和testing的最终用户应用程序共享相同的容器。 为此,请启用第一个应用程序以使用第二个应用程序的默认容器,或者创build一个两个应用程序共享的自定义容器。 iOS和Mac应用程序也可以configuration为共享相同的容器。
将容器添加到应用程序
select另一个应用程序使用的现有容器ID,或者创build一个新的容器ID。
将容器添加到应用程序
在“iCloud”设置下的“function”窗格中,select“指定自定义容器”。
当您之前select了CloudKit服务时,Xcode为您的应用程序创build了一个与包ID相匹配的默认容器ID。 默认容器标识旁边出现复选标记。
如有必要,请单击“容器”表下方的“刷新”button以从其他应用程序使用的会员中心下载容器。 在要添加的容器ID的行中,选中checkbox。 Xcode更新授权文件中容器标识的列表。
下面的屏幕截图显示了馆藏和图库应用共享图库应用的默认容器。
创build自定义容器
或者,创build由多个应用程序共享的自定义容器。
重要提示:只有团队pipe理员可以创build容器。 如果你是一个人,你是一个团队的团队代理(具有pipe理员权限)。
创build一个自定义容器
如果select“使用默认容器”,请select“指定自定义容器”。
点击表格底部的添加button(+)。 在出现的对话框中,input要添加的容器的标识符。
警告:您不能删除容器标识,因此请仔细select容器标识。
容器ID从iCloud开始。 之后是反向DNS标记中的string,如iCloud.com.example.gkumar1.SharedGallery容器标识。
点击OK。
Xcode将新的容器ID添加到Xcode项目权利文件和成员中心。
如果要与另一个应用程序共享新容器标识,请将容器添加到应用程序,如将容器添加到应用程序中所述。
validation你的步骤
您可以在iCloud设置或会员中心查看您的团队的所有容器ID。 在会员中心,您还可以添加容器并编辑容器的名称。
在会员中心查看容器ID
在成员中心,select证书,标识符和configuration文件。 在“标识符”下,select“iCloud容器”。