是否有人通过
获得有关设备之间传递大小消息的任何信息[MCSession sendData:(NSData *)data
toPeers:(NSArray *)peerIDs
withMode:(MCSessionSendDataMode)mode
error:(NSError **)error];
可以吗?我一直在谷歌搜索没有成功。我的应用程序需要将相当大的(~1-2 MB)信息包发送到连接的设备。我打算使用符合NSCoding的对象,我可以在任何一端打包解包。但是,我不熟悉底层协议。会话是否允许这样一个大对象传递?它是否在幕后提供包装?
任何信息都会非常有用。
谢谢, 瑞恩
答案 0 :(得分:1)
正如文档中明确提到的,multipeer支持三种类型的数据传输。
1.使用
发送文字- (NSProgress *)sendResourceAtURL:(NSURL *)resourceURL withName:(NSString *)resourceName toPeer:(MCPeerID *)peerID withCompletionHandler:(void(^)(NSError *error))completionHandler;
2.使用
发送本地图片或文件- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// if cancel button is pressed
if (sender!=self.saveBtn) {
return;
}
// if save button is pressed
else{
if (self.addField.text.length>0) {
ToDoItem *item = [[ToDoItem alloc] init];
item.itemName = self.addField.text;
item.isDone = FALSE;
item.row = [ToDoListTableTableViewController getCount];
self.toDoItem = item;
NSMutableArray *arr = [NSMutableArray arrayWithContentsOfFile:_appFile];
[arr addObject:item];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:_appFile];
[handle seekToEndOfFile];
[handle writeData:data];
[handle closeFile];
}
}
3.Streaming(音频) - 使用音频流和会话,您可以发送数据包。但是蓝牙的带宽限制是一个瓶颈。
我认为文件大小没有上限,而使用第二种方法时,使用NSProgress,您也可以显示加载视图。