2016-07-22 35 views
0

Ich möchte Daten von meinem iOS App auf meine watchOS 3 AppWKWatchConnectivityRefreshBackgroundTask Beispiel

mit WKWatchConnectivityRefreshBackgroundTask

passieren, wie ich Code in meinem watchOS App einrichten Sie die Daten zu handhaben übertragen werden?

Denn ich Beispiel in der Vergangenheit diesen iOS-Code verwendet, um eine Nachricht aus dem iOS App zu senden und wenn es keine Verbindung einen Kontext senden ist:

func sendTable() 
{ 
    let tableInfo: WatchWorkout = PhoneData().buildWatchTableData(Foundation.Date().refDays()) 
    let archivedTable: Data = NSKeyedArchiver.archivedData(withRootObject: tableInfo) 
    if validSession 
    { 
     sendMessage([Keys.UpdateType : PhoneUpdateType.TableInfo.rawValue, Keys.Workout: archivedTable]) 
    } 
    else 
    { 
     do 
     { 
      try updateApplicationContext([Keys.UpdateType : PhoneUpdateType.TableInfo.rawValue, Keys.Workout: archivedTable]) 
     } 
     catch 
     { 
      print("Phone Session - error sending info: \(error)") 
     } 
    } 
} 


func sendMessage(_ message: [String : AnyObject], replyHandler: (([String : AnyObject]) -> Void)? = nil, errorHandler: ((NSError) -> Void)? = nil) 
{ 
    print("Phone Session - phone sent message") 
    session!.sendMessage(message, 
     replyHandler: 
     nil, 
     errorHandler: 
     { 
      (error) -> Void in 
      print("Phone Session - Error Message during transfer to Watch: \(error)") 
     } 
    ) 
} 


func updateApplicationContext(_ applicationContext: [String : AnyObject]) throws 
{ 
    print("Phone Session - phone sent context") 
    if ((session) != nil) 
    { 
     do 
     { 
      try session!.updateApplicationContext(applicationContext) 
     } 
     catch let error 
     { 
      print("Phone Session - OPPS something wrong - context send failed") 
      throw error 
     } 
    } 
} 

Ich bin mir nicht sicher, wie die Quittung kodieren von diese Daten als Hintergrundaufgabe auf der Uhr.

Kann jemand einen Beispielcode bereitstellen oder einen Link posten? Der einzige Beispiel Code Apple ist nicht sehr hilfreich: https://developer.apple.com/library/prerelease/content/samplecode/WatchBackgroundRefresh/Introduction/Intro.html

Dank

Greg

Antwort

1

Das Quick Switch Codebeispiel aktualisiert wurde zusammen mit der Veröffentlichung von watchOS 3 ein Beispiel für die Handhabung der WatchConnectivity Hintergrundaktualisierung Aufgabe schließen .

+0

Ich habe ein ähnliches Problem, siehe [hier] (http://stackoverflow.com/questions/40537027/wkwatchconnectivityrefreshbackgroundtask-is-nevertriggered-in-background-but-w). Anscheinend wird 'WKWatchConnectivityRefreshBackgroundTask' nie aufgerufen, nicht einmal im Demoprojekt QuickSwitch. –

+0

Ich reichte das Problem an Apple Developer Technical Support, und sie bestätigt (# 652471299) das Problem in WatchOS 3, und schlug vor, einen Fehlerbericht, was ich tat (# 29284559). Allerdings muss ich sagen, ich habe nicht viel Hoffnung, dass dies bald helfen wird. Meine früheren Fehlerberichte wurden normalerweise Monate später behandelt, wenn überhaupt ... –

+0

Gab es irgendwelche Updates zu diesem Fehler? Einige Probleme selbst haben –

1

@ccjensen Der Quick Switch-Beispielcode funktioniert nicht, oder? Es wird auf meinem iPhone6 ​​iOS10.0 beta3 abstürzen. Ich habe bereits am vergangenen Freitag Feedback geschickt.

In meinem Fall Seite updateApplicationContext(_:) transferUserInfo(_:) transferCurrentComplicationUserInfo(_:) transferFile(_:metadata:) auf dem iPhone Aufruf auslösen nie handle(_:) Zuhörer.

+0

Kann nicht kommentieren, also schreibe Antwort – iamhite

+1

Ich kann es nicht bekommen, um an der Sim entweder zu arbeiten. –

+0

wahrscheinlich am besten, um ein Radargerät zu archivieren und sicherzustellen, dass der Absturzbericht angehängt wird! – ccjensen