我已阅读并遵循了几条说明和视频,试图让我的iphone和iwatch应用程序使用相同的Userdefaults存储空间。 我创建了一个appgroup并使用了这样的appgroup名称
preferences = UserDefaults(suiteName: "group.com.xxxx.appname")!
但它仍无法按预期工作
我已经阅读了几乎所有(如果不是全部)与stackoverflow相关的问题,但我仍然没有得到预期的结果。
我读过的最后一篇文章建议使用WCSession,所以我按照这个url http://www.codingexplorer.com/watch-connectivity-swift-application-context/
在所有这些尝试之后,我的Iwatch仍然无法使用我在ios应用程序上设置的首选项/数据。
任何回复都会受到赞赏。
答案 0 :(得分:0)
尝试访问两个设备上的数据时,不再可以选择应用组。
您现在需要使用WatchConnectivity框架。
以下是如何使用它的示例:
<强> IOS 强>
import WatchConnectivity
class ViewController: UIViewController, WCSessionDelegate{
override func awake(withContext context: Any?) {
super.viewDidLoad()
if WCSession.isSupported(){
WCSession.default.activate()
WCSession.default.delegate = self
}
}
}
<强> watchOS 强>
import WatchConnectivity
class InterfaceController: WKInterfaceController, WCSessionDelegate{
override viewDidLoad(){
super.viewDidLoad()
if WCSession.isSupported(){
WCSession.default.activate()
WCSession.default.delegate = self
let data = ["data1": 1, "data2": 2]
WCSession.default.sendMessage(data, replyHandler: {reply in
print("Got reply \(reply)")
}, errorHandler: {error in
print("Got error \(error)")
})
}
}
func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
print("Received \(message)") // ["data1": 1, "data2": 2]
replyHandler(["messagedReceived": true])
}
}
以上代码未经过测试,但应该足以让您入门。