2014-06-05 141 views
8

我很難在iOS 8擴展和容器應用程序之間共享數據。 我建立一個從開發門戶網站和Xcode中組,和我的權利的plist這兩個看起來像:ios8擴展和容器應用程序如何共享數據

<dict> 
    <key>com.apple.security.application-groups</key> 
    <array> 
     <string>my group id</string> 
    </array> 
</dict> 

蘋果文檔中建議的解決方案中使用[[NSUserDefaults standardUserDefaults]

不會爲我工作。

我試着通過@Santa克勞斯解決這個職位Communicating and persisting data between apps with App Groups使用

[[NSUserDefaults alloc] initWithSuiteName:@"<group identifier>"]; 

聖誕老人的解決方案在模擬器但不是在我的iPhone 4S的工作,任何想法如何使它真實工作設備?或者我錯過了什麼?

有些更新:

[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group id"]; 

函數返回地址,然後從容器的應用和推廣這兩個URL看起來是一樣的,爲「路徑/私營/無功/移動/集裝箱/共享/ AppGroup/3DFB9750-A9F3 -4C37-BC3C-0D5BF746B 233「。 我從容器應用程序在該文件夾內創建了一個json文件,但擴展名在設備上運行時找不到文件夾中的任何文件。但在模擬器中它發現它很好,一切正常。

+0

我可以確認[我的解決方案](http://stackoverflow.com/a/24063144/2446155)也適用於設備。嘗試卸載您的應用程序並重新安裝它們。 –

+0

謝謝,我試圖卸載,它仍然不能在設備上工作.. – woof

+0

確認您的組ID是鍵入完全相同的應用程序權利和在'NSUserDefaults'初始化 –

回答

20

我的解決方法是編輯我的自定義鍵盤的Info.plist:

NSExtension - > NSExtensionAttributes - > RequestsOpenAccess

讓它YES。

然後刪除設備中的鍵盤並重新添加它。在鍵盤添加頁面中,您將找到一個名爲「允許完全訪問」的設置,啓用它並且鍵盤將訪問共享數據。

+0

你的答案幫了我很大的忙,謝謝 –

+0

在模擬器工作,但同樣的事情不工作在設備任何想法爲什麼? –

+0

謝謝,它適合我的工作....非常感謝你.. –

1

這個問題只發生在自定義鍵盤上,iOS8 beta 2修正了這個問題。

+2

iOS 8 beta 5仍然不能在真實設備上工作,只能在模擬器上 –

+0

看起來像iOS GM sill有這個問題,在模擬器上工作,但沒有設備! –

2

對於鍵盤的擴展,請確保使RequestsOpenAccess作爲heheBear的答案
,並嘗試刪除和設置添加回鍵盤/ Keyoboard偶爾
鍵盤延長並不穩定,性能是因爲beta 4版本非常糟糕,包括β5

相關問題