2015-09-24 6 views
7

ein Wörterbuch auf eine iOS-App senden mit:Teilen von Daten zwischen Uhr App und iOS-App in watchOS2

- (void)sendMessage:(NSDictionary<NSString *, id> *)message 
    replyHandler:(nullable void (^)(NSDictionary<NSString *, id> *replyMessage))replyHandler 
    errorHandler:(nullable void (^)(NSError *error))errorHandler; 

aber ich einen Fehler mit dieser bekommen. Ich möchte wissen, wie unsere Eltern-App diese Anfrage in watchOS2 behandelt.

In watchOS1 habe ich openParentApplication verwendet, um Daten von der übergeordneten App zu erhalten, und Appdelegate hatte eine handleWatchKitExtensionRequest, um diese Anfrage zu bearbeiten. Wie gehen wir damit in watchOS2 um?

My Interface Controller:

- (void)awakeWithContext:(id)context 
{ 
    [super awakeWithContext:context]; 
    if([WCSession isSupported]) 
    { 
    self.watchSession = [WCSession defaultSession]; 
    self.watchSession.delegate = self; 
    [self.watchSession activateSession]; 
    } 
    [self sendRequestWithActionType:@"InitialView"]; 
} 

-(void)sendRequestWithActionType:(NSString *)action 
{ 
    NSDictionary *requst = @{@"request":action}; 
    [[WCSession defaultSession] sendMessage:requst 
          replyHandler:^(NSDictionary *replyHandler) { 
           [self setTextForLabelWithData:[replyHandler valueForKey:@"response"]]; 
          } 
          errorHandler:^(NSError *error) { 
           NSLog(@""); 
          } 
]; 
} 
+1

Sie sollte checkbar überprüfen e bevor Sie sendMessage verwenden. Welchen Fehler bekommst du? – ccjensen

+0

Ich möchte replyHandler dictionary.tell mir was soll ich in iOS app.Ich denke, wir sollten verwenden - (void) Sitzung: (nonnull WCSession *) Sitzung didReceiveMessage: (nonnull NSDictionary *) Nachricht replyHandler: (nonnull void (^) (NSDictionary * __nonnull)) replyHandler geben Sie mir ein Beispiel dafür – PramukaD

Antwort

8

Hier ist ein Beispiel für die Verwendung nachrichts mit einer Antwort:

senden Seite:

-(void)sendRequestWithActionType:(NSString *)action { 
    NSDictionary *request = @{@"request":action}; 
    [[WCSession defaultSession] sendMessage:request 
         replyHandler:^(NSDictionary *replyHandler) { 
          [self setTextForLabelWithData:[replyHandler valueForKey:@"response"]]; 
         } 
         errorHandler:^(NSError *error) { 
          NSLog(@""); 
         }]; 
} 

Seite Empfang:

- (void)session:(nonnull WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message replyHandler:(void(^)(NSDictionary<NSString *,id> *))replyHandler { 
    NSString *action = message[@"request"]; 
    NSString *actionPerformed; 
    if ([action isEqual:@"foo"]) { 
     // do "foo" stuff 
     actionPerformed = @"foo done"; 
    } else if ([action isEqual:@"bar"]) { 
     // do "bar" stuff 
     actionPerformed = @"bar done"; 
    } 
    replyHandler(@{@"actionPerformed":actionPerformed}); 
} 
+0

Ist es möglich, die Safari auf dem iPhone zu öffnen, wenn ich auf einen Link in der Anwendung watch klicke? –

+0

1. Sie sollten meine Antwort als die richtige markieren, wenn es für Sie hilfreich war, 2. Sie fragen jetzt eine separate Frage, die wahrscheinlich ihre eigene sein sollte, 3. Um es zu beantworten; Nein, das ist nicht möglich, es sei denn, die iOS-App ist zu diesem Zeitpunkt im Vordergrund – ccjensen

+0

Ich habe diese Frage @ccjensen nicht gestellt. Bitte beantworte meine Frage, wenn du eine Idee hast. http://stackoverflow.com/questions/33450521/open-safari-ios-app-from-watch-app –

Verwandte Themen