我可以通过iOS Multipeer Connectivity发送多大的消息?

时间:2015-05-22 23:32:54

标签: ios networking bluetooth multipeer-connectivity

是否有人通过

获得有关设备之间传递大小消息的任何信息
[MCSession sendData:(NSData *)data
     toPeers:(NSArray *)peerIDs
    withMode:(MCSessionSendDataMode)mode
       error:(NSError **)error];
可以吗?我一直在谷歌搜索没有成功。我的应用程序需要将相当大的(~1-2 MB)信息包发送到连接的设备。我打算使用符合NSCoding的对象,我可以在任何一端打包解包。但是,我不熟悉底层协议。会话是否允许这样一个大对象传递?它是否在幕后提供包装?

任何信息都会非常有用。

谢谢, 瑞恩

1 个答案:

答案 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,您也可以显示加载视图。