gpt4 book ai didi

ios - sendResourceAtURL 多端 IOS7

转载 作者:行者123 更新时间:2023-11-29 03:32:06 26 4
gpt4 key购买 nike

我有一张图像,我需要通过蓝牙将其发送到另一台设备。数据是这样的:

NSData *Recording = [NSData dataWithContentsOfFile:myFilePath];
NSString* str = [NSString stringWithFormat:@"%@.ext", button.titleLabel.text];
myDictionary = [[NSMutableDictionary alloc] init];
[myDictionary setObject:str forKey:@"fileName"];
[myDictionary setObject:@"Recording" forKey:@"fileType"];
[myDictionary setObject:Recording forKey:@"FileData"];


NSData* myData = [NSKeyedArchiver archivedDataWithRootObject:myDictionary];

我需要使用以下方法发送 myData 或 myDictionary:

progress = [session sendResourceAtURL:anUrl withName:[imageUrl lastPathComponent] toPeer:peerID withCompletionHandler:^(NSError *error) {
// Implement this block to know when the sending resource transfer completes and if there is an error.
if (error) {
NSLog(@"Send resource to peer [%@] completed with Error [%@]", peerID.displayName, error);
}
else {
// Create an image transcript for this received image resource

}
}];

正如你所看到的,我必须在 url 发送一个资源,接收者将收到“在 url”的资源,并且我必须从该 url 获取一个 NSMutabledictionary。基本上我必须发送这个 myDictionary 但我无法弄清楚 url 是如何工作的。谁能解释一下我必须使用什么网址以及如何创建它?

最佳答案

我不确定我是否明白你想要什么,但看起来你只是被困在传送点了。

由于您已经将所有内容转换为 NSData 对象,因此在发送方您需要调用如下内容:

// Assume peerID is correct and data has been prepared
NSError *error;
if ( ![session sendData:data
toPeers:@[peerID]
withMode:MCSessionSendDataReliable
error:&error] )
NSLog(@"ERROR - Unable to queue message for delivery - %@",[error localizedDescription]);

在接收方,无论谁是 MCSessionDelegate,都将通过以下方式调用:

- (void)session:(MCSession *)session
didReceiveData:(NSData *)data
fromPeer:(MCPeerID *)peerID;

您可能会“取消归档” NSData 对象以对其执行某些操作。

让我也添加一个观察结果......

从您的示例来看,您似乎正在将文件的全部内容填充到然后存档和发送的字典中。这可能是可行的,但不建议这样做。

更好的方法是将文件作为单独的资源发送。例如,查看发件人的此示例:

// Assume peerID and filePath are both valid and correct 
NSURL *fileURL = [NSURL URLWithString:filePath];
NSString *fileName = [fileURL lastPathComponent];
NSError *error;
[session sendResourceAtURL:resourceURL
withName:fileName
toPeer:peerID
withCompletionHandler:^(NSError *error) {
if (error)
NSLog(@"Sending to [%@] failed: %@",peerID.displayName, error);
}];

接收者的 MCSessionDelegate 将在传输开始时接收到这两个内容:

- (void)session:(MCSession *)session 
didStartReceivingResourceWithName:(NSString *)resourceName
fromPeer:(MCPeerID *)peerID
withProgress:(NSProgress *)progress;

...传输结束时:

- (void)session:(MCSession *)session 
didFinishReceivingResourceWithName:(NSString *)resourceName
fromPeer:(MCPeerID *)peerID
atURL:(NSURL *)temporaryURL
withError:(NSError *)error;

关于ios - sendResourceAtURL 多端 IOS7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19623044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com