2017-09-07 2 views
0

Ich erstelle eine Brücke von iOS zu React Native für HomeKit. Ich fange gerade gerade an und versuche einfach, ein Heim für Testzwecke zu schaffen. Ich habe erfolgreich Berechtigungen für HomeKit akzeptiert, wie in der aka NSHomeKitUsageDescription festgelegt.Warum wird meine überbrückte Methode nicht korrekt aufgerufen?

RNHomeKit.m

#import "RNHomeKit.h" 
#import <HomeKit/HomeKit.h> 
#import <React/RCTLog.h> 

@implementation RNHomeKit 

RCT_EXPORT_MODULE(); 

RCT_EXPORT_METHOD(createHome) { 
    RCTLog(@"FAKELY CREATING HOME"); 
    HMHomeManager *myHomeManager = [[HMHomeManager alloc] init]; 

    [myHomeManager addHomeWithName: @"Matt's Awesome Home" completionHandler:^(HMHome *home, NSError *error) { 
    RCTLog(@"REALLYING CREATING HOME"); 
    if (!error) { 
     RCTLog(@"Created Home : %@",home.name); 
    } else { 
     RCTLog(@"Error: %@", error); 
    } 
    }]; 
} 

@end 

RNHomekit.h

#import <Foundation/Foundation.h> 
#import <HomeKit/Homekit.h> 
#import <React/RCTBridgeModule.h> 

@interface RNHomeKit : NSObject <RCTBridgeModule> 

@end 

ich auf meinem Homescreen ist meine createHome Methode bin Aufruf componentDidMount()RNHomeKit.createHome(); verwenden. FAKELY CREATING HOME wird protokolliert, während REALLYING CREATING HOME nie gesehen wird. Warum treffe ich nicht die addHomeWithName?

+0

Es hängt davon ab, wie Sie 'addHomeWithName' implementieren. Bist du sicher, dass es nicht heißt? Da Sie es im Callback von 'completionHandler' protokollieren, wird es möglicherweise nur ohne Abschluss aufgerufen. – Val

+0

'addHomeWithName' ist eine Funktion von' HMHomeManager' [Link zu Dokumenten] (https://developer.apple.com/documentation/homekit/hmhomemanager/1616747-addhomewithname?language=objc) – MattyK14

Antwort

0

Ich habe versucht, eine native HomeKit-Beispiel-App zu reverse-Engineering und einige Änderungen, die es ermöglicht, zu arbeiten. Eine Erklärung, warum meine ursprüngliche Implementierung nicht funktioniert hat, wäre aber toll!

RNHomeKit.h

#import <Foundation/Foundation.h> 
#import <HomeKit/Homekit.h> 
#import <React/RCTBridgeModule.h> 

@interface RNHomeKit : NSObject <RCTBridgeModule, HMHomeManagerDelegate> 

@property (strong, nonatomic) HMHomeManager *myHomeManager; 

@end 

RNHomeKit.m

#import "RNHomeKit.h" 
#import <HomeKit/HomeKit.h> 
#import <React/RCTLog.h> 

@implementation RNHomeKit 

@synthesize myHomeManager; 

RCT_EXPORT_MODULE(); 

RCT_EXPORT_METHOD(createHome) { 
    RCTLog(@"FAKELY CREATING HOME"); 
    self.myHomeManager = [[HMHomeManager alloc] init]; 
    self.myHomeManager.delegate= self; 

    [self.myHomeManager addHomeWithName: @"Matt's Awesome Home" completionHandler:^(HMHome *home, NSError *error) { 
    RCTLog(@"REALLYING CREATING HOME"); 
    if (!error) { 
     RCTLog(@"Created Home : %@",home.name); 
    } else { 
     RCTLog(@"Error: %@", error); 
    } 
    }]; 
} 

@end 
Verwandte Themen