Son zamanlarda, bir projede çalıştığım için yine de Watch/iPhone iletişimine bağlı. Ama kodum bazen işe yarıyor ve bazen işe yaramıyor, bu da benim için biraz tuhaf çünkü kodun işe yarayıp yaramadığını düşünüyorum. 50/50 olamaz. Bu yüzden neyin yanlış gittiğine dair hiçbir fikrim yok. iPhone'daWCSession.sendMessage çalışıyor 50/50
kurulum WCSession: Watch üzerinde
class WatchCommunicationController: NSObject, WCSessionDelegate {
var session : WCSession?
override init(){
// super class init
super.init()
// if WCSession is supported
if WCSession.isSupported() { // it is supported
// get default session
session = WCSession.defaultSession()
// set delegate
session!.delegate = self
// activate session
session!.activateSession()
} else {
print("iPhone does not support WCSession")
}
}
... ...
}
benzer WCSession kurulumu:
class PhoneCommunicationController: NSObject, WCSessionDelegate {
var session : WCSession?
override init(){
// super class init
super.init()
// if WCSession is supported
if WCSession.isSupported() { // it is supported
// get default session
session = WCSession.defaultSession()
// set delegate
session!.delegate = self
// activate session
session!.activateSession()
} else {
print("Watch does not support WCSession")
}
}
... ...
}
Watch mesajı göndermek:
fonk sendGesture (jest: GKGesture) {
// if WCSession is reachable
if session!.reachable { // it is reachable
// create the interactive message with gesture
let message : [String : AnyObject]
message = [
"Type":"Gesture",
"Content":gesture.rawValue
]
// send message
session!.sendMessage(message, replyHandler: nil, errorHandler: nil)
print("Watch send gesture \(gesture)")
} else{ // it is not reachable
print("WCSession is not reachable")
}
}
ilgili enum:
enum GKGesture: Int {
case Push = 0, Left, Right, Up, Down
}
iPhone'da iletisini: nasılsa
func session(session: WCSession, didReceiveMessage message: [String : AnyObject]) {
//retrieve info
let type = message["Type"] as! String
let content = message["Content"]
switch type {
case "Gesture":
handleGesture(GKGesture(rawValue: content as! Int)!)
default:
print("Received message \(message) is invalid with type of \(type)")
}
}
func handleGesture(gesture : GKGesture){
print("iPhone receives gesture \(gesture)")
var notificationName = ""
switch gesture {
case .Up:
notificationName = "GestureUp"
case .Down:
notificationName = "GestureDown"
case .Left:
notificationName = "GestureLeft"
case .Right:
notificationName = "GestureRight"
case .Push:
notificationName = "GesturePush"
}
NSNotificationCenter.defaultCenter().postNotificationName(notificationName, object: nil)
}
Xcode benim Watch uygulamasını hata ayıklama olamaz hata ayıklama oturumu taşikardi. Nedenini bilmiyorum. Bu yüzden tek taraflı iPhone ile hata ayıkladım.
bazen
"İçeriği sıfırla ve ayarları" denediniz ve saat/iPhone simülatörlerini ve Xcode'unuzu yeniden başlattınız mı? Bu, hata ayıklama oturumu ekli almak için ipuçları. Bunun nasıl gittiğini anlatın ve daha sonra iPhone ve Apple Watch'ımla – Philip
hata ayıklama ile ilgili WatchConnectivity sorunları konusunda size yardımcı olabilirim. –
ulaşılabilirlik için özel bir şey yapmak zorunda mıydınız? Benim kod çok küçük benzer, ama benim kontrol her zaman geri bildirim – prawn