gpt4 book ai didi

ios - WCSession 文件传输问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:13 27 4
gpt4 key购买 nike

我在从父设备向 Apple Watch 发送文件时遇到问题。有时文件会通过并被完全解析。其他时候,它开始文件传输,但它失败了,甚至从未在 Apple Watch 上调用 session:(WCSession *)session didReceiveFile:(WCSessionFile *)file 方法。

这是父设备代码:

- (void)sendLiveAudioRecording
{
NSError *moveError;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *groupURL = [fileManager containerURLForSecurityApplicationGroupIdentifier: @"group.myCompany.myApp"];
NSURL *permanentURL = [groupURL URLByAppendingPathComponent: @"PhoneToWatch.mp4"];
[FileSystem_Helper removeFile: [permanentURL path]];
[fileManager moveItemAtURL: [self fileURL] toURL: permanentURL error: &moveError];

if (!moveError)
{
if ([WCSession isSupported])
{
[[WCSession defaultSession] setDelegate: self];
[[WCSession defaultSession] activateSession];
if ([[WCSession defaultSession] isReachable])
{
NSLog(@"File Is Being Transferred: %@", [permanentURL path]);
[[WCSession defaultSession] transferFile: permanentURL metadata: nil];
}
else
{
[self createAlertWithTitle: @"Error" andMessage: @"WCSession Not Reachable"];
}
}
else
{
[self createAlertWithTitle: @"Error" andMessage: @"WCSession Not Supported"];
}
}
else
{
NSLog(@"%@", [moveError localizedDescription]);
}
}

这是 Apple Watch 代码:

-(void) session:(WCSession *)session didReceiveFile:(WCSessionFile *)file
{
NSData *fileData = [NSData dataWithContentsOfURL: [file fileURL]];
WKAudioFileAsset *asset = [WKAudioFileAsset assetWithURL: [file fileURL]];
NSURL *fileLocation = [FileSystem_Helper writeAudioToAppGroupsWithData: fileData withName: @"FromPhone.mp4"];
NSLog(@"%@", [file fileURL]);
NSLog(@"%@", [fileLocation path]);

[FileSystem_Helper removeFile: [[file fileURL] path]];

NSError *writingError;
if (!writingError)
{
[self playURL: fileLocation withDuration: [asset duration]];
}
else
{
[WKAlertViewController_Helper showWKAlertControllerWithTitle: @"Audio Receive Failed" andMessage: [writingError localizedDescription] andButtonTitle: @"Ok" onController: self];
}
}

我什至不确定它与代码本身有什么关系。我认为文件传输有时会失败,但我找不到任何地方打印出要调试的错误。

谁能给我一些见解?

iOS 9.2 && WatchOS 2.1

这是来自 [FileSystem_Helper removeFile: (NSString *)filePath] 的代码:

+ (void) removeFile: (NSString *)filePath
{
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath: filePath])
{
NSError *error;
if (![fileManager removeItemAtPath: filePath error:&error])
{
NSLog(@"Error removing file: %@", error);
}
}
}

这里是 [FileSystem_Helper writeAudioToAppGroupsWithData]:

+ (void)writeAudioToAppGroupsWithData: (NSData *)audioData withName: (NSString *)name
{
// Writing the audio data to the App Groups
NSURL *URL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier: @"group.myCompany.myApp"];
NSURL *containerURL = [URL URLByAppendingPathComponent: name];
[audioData writeToURL: containerURL atomically: YES];
}

最佳答案

文件传输在 watchOS 2.2 上存在错误。它可能会在下一个版本中修复。参见 https://forums.developer.apple.com/thread/43596获取更多证词。

关于ios - WCSession 文件传输问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34713062/

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