2014-11-21 82 views
7

我試圖從iPhone應用程序發送數據到手錶套件擴展但失敗。 並不知道如何去做。與手錶套件擴展和iPhone應用程序通信

我在模擬器上測試並通過應用程序組發送數據。

這裏是我的步驟:從蘋果

  1. 下載觀看套件目錄示例應用程序
  2. 添加應用程序組(XXX.XXX.XXX)的iPhone應用程序和wtach套件擴展
  3. 添加RequestOpenAccess:YES對於NSExtensionAttributes(手錶套件擴展)
  4. 將按鈕添加到iPhone應用程序,將值寫入與NSUserDefaults的特定套件名稱
  5. 在watchkit前添加代碼緊張讀取NSUserDefaults數據。 ([的NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier :)

  6. 運行手錶試劑盒的應用

  7. 手冊單擊在iPhone模擬器
  8. 目錄應用點擊在步驟4
  9. 添加的按鈕在watchkit擴展添加斷點看是否值NSUserDefaults的改變
  10. 沒有發生

我錯過了什麼必要的東西?

或者我應該用另一種方式來做到這一點?

我想要做的就是發送數據從iPhone觀看每秒鐘。 數據可能是字符串或圖像。

感謝

+0

你能分享一些代碼嗎?你確定你爲應用程序組正確編寫了文件嗎? – Idan 2015-04-04 16:08:12

回答

1

要設置通信iPhone和IWATCH之間我已經把一個文件到共享應用程序組的文件夾,並從觀察擴展監控。如果iPhone應用程序中有任何更改,則會修改該文件,並會通知Watch擴展程序並對其執行操作。

1

您需要:

  1. 創建兩個目標(iPhone和觀看擴展名)的應用程序組。確保它被添加到您的應用程序ID apple developer portal(有時它不能很好地從Xcode傳遞)。

  2. 寫的應用程序組從iPhone應用程序:

    NSString *destFolderPath = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier: 
              @"YOUR_GROUP_STRING"].path; 
    [UIImageJPEGRepresentation(image, 1.0) writeToFile:[destFolderPath stringByAppendingPathComponent:@"Your_Shared_File_Name.jpg"] atomically:YES]; 
    
  3. 閱讀從擴展名的文件:

    UIImage *image; 
    NSURL *groupURL = [[NSFileManager defaultManager] 
           containerURLForSecurityApplicationGroupIdentifier: 
           @"YOUR_GROUP_STRING"]; 
    
    NSString *imagePath = [groupURL URLByAppendingPathComponent:@"Your_Shared_File_Name.jpg"].path; 
    } 
    
    if([[NSFileManager defaultManager] fileExistsAtPath: imagePath]){ 
        image = [[UIImage alloc] initWithContentsOfFile: imagePath]; 
    } 
    

在一般我建議你使用MMWormhole如果您不需要在Watch和Host應用程序之間傳遞任何過於複雜的內容,就可以輕鬆使用它。