Search code examples
ioswatchkitapple-watch

WCErrorDomain 7013 when trying to send image using Watch OS 2


I´m testing Apple Watch OS 2 and I´m trying to send a image from the application to the watch. According to Apple, I shall use WCSession transferFile to do this.

Use the transferFile:metadata: method to transfer files in the background. Use this method in cases where you want to send more than a simple dictionary of values. For example, use this method to send images or file-based documents.

for example:

NSString *string = [[NSBundle mainBundle] pathForResource:@"my_image" ofType:@"png"];
NSURL *path = [NSURL URLWithString:string];

[[WCSession defaultSession] transferFile:path metadata:@{@"meta1":@"meta2"}];

It all looks ok in the debugger, the path is correct and the file is accessible (checked with NSFileManager) and readable.

However, everytime I try I get a callback to the didFinishFileTransfer function, including an error:

Error Domain=WCErrorDomain Code=7013 "The operation couldn’t be completed. (WCErrorDomain error 7013.)"

Looking up the error:

WCErrorCodeFileAccessDenied An error indicating that a file could not be transferred because it was inaccessible. Available in watchOS 2.0 and later.

It seems the file is not accessible by the send function? I have tried things like resaving the file to another directory etc, but nothing seems to work.

Anyone got an idea?


Solution

  • The URL you are creating is not a fileURL. Try:

    NSURL *path = [NSURL fileURLWithPath:string];