2

バックグラウンド:

私の iPhone アプリでは、画像を取得してドキュメント ディレクトリに保存し、読み込みを高速化しています。これらの画像を A​​pple Watch で使用するには、それらをアプリ グループと共有する必要があることはわかっています。

そこで、アプリ グループを作成し、プロビジョニング プロファイルを更新しました。今私の問題は、画像をアプリ グループに保存し、WatchKit ファイル内でその画像を読み取る方法がわからないことです。

画像をアプリグループに保存するために私が試したことは次のとおりです。

NSString *container = @"group.com.appName.watchdatasharing";

NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:container];

[defaults setValue:UIImagePNGRepresentation([FileManager readImageFromFileWithName:@"icon1_imgUrl"]) forKey:@"icon1_imgUrl"];
  • 注: 私の FileManager クラスは UIImage を返します

WatchKit アプリで画像を取得するには、次のコードを使用します。

NSString *container = @"group.com.fantrac.watchdatasharing";

NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:container];

NSData* imageData = [defaults valueForKey:@"icon1_imgUrl"];
UIImage* image = [UIImage imageWithData:imageData];

[tableRow.iconImage setImage:image];

質問:

Apple Watch でテストすると、画像が表示されません。アプリと Apple Watch の間で画像を保存/取得するには、どうすればよいですか?

4

3 に答える 3

5

watchOS 2 を使用している場合は、WatchConnectivity を使用できます。参考までにサンプルコードを添付します。

iPhone の場合:

// Create a Watch Connectivity session
- (void)viewDidLoad
{
    [super viewDidLoad];

    self.applicationDict = @{@"foo" : @"bar"};

    if ([WCSession isSupported]) {
        WCSession *session = [WCSession defaultSession];
        session.delegate = self;
        [session activateSession];
    }
}

// Transfer file to Apple Watch 
- (IBAction)fileTransferButtonTapped:(id)sender
{
    // File Transfer
    NSURL *url = 
    [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"png"]];
    WCSessionFileTransfer *fileTransfer = 
    [[WCSession defaultSession] transferFile:url
                                    metadata:self.applicationDict];
}

ウォッチ:

// Receive file from iPhone
- (void)session:(nonnull WCSession *)session didReceiveFile:(nonnull WCSessionFile *)file
{
    // recieve file
}

参照。 http://www.kristinathai.com/watchos-2-how-to-communicate-between-devices-using-watch-connectivity/

于 2015-10-16T23:56:14.433 に答える