2015-10-18 30 views
0

從Apple watch擴展中,handlewatchkitextensionrequest未調用異步調用並將nill數據返回給Apple Watch,下面是代碼請幫助我。handlewatchkitextensionrequest不調用暫停狀態下的異步調用

-(void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply 
{ 
    __block UIBackgroundTaskIdentifier watchKitHandler; 
    watchKitHandler = [[UIApplication sharedApplication] beginBackgroundTaskWithName:@"backgroundTask" 
                    expirationHandler:^{ 
                     watchKitHandler = UIBackgroundTaskInvalid; 
                    }]; 


    dispatch_semaphore_t sema = dispatch_semaphore_create(0); 

    if ([[userInfo objectForKey:@"request"] isEqualToString:@"NearestFacility"]) { 

     [self NearestFacilityClicked]; 
     if (self.ary_WatchKitNearestFacility.count>0) { 
     NSDictionary *response = @{@"response" : self.ary_WatchKitNearestFacility}; 
     reply(response); 
     } 
    } 

    dispatch_semaphore_signal(sema); 

    dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER); 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)NSEC_PER_SEC * 1), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     [[UIApplication sharedApplication] endBackgroundTask:watchKitHandler]; 
    }); 
} 


-(IBAction)NearestFacilityClicked 
{ 

    // ASIFormdatarequest call 
    [request startAsynchronous]; 
} 

回答

0

在手錶OS 2,您需要使用會話表& iPhone之間傳送數據。 首先,你需要初始化在viewDidLoad中()的WCSession

if (WCSession.isSupported()) { 
let session = WCSession.defaultSession() 
session.delegate = self 
session.activateSession() 

}

然後將數據發送可以使用

let transfer = WCSession.defaultSession().transferUserInfo(applicationDict) 

然後,在接收端,你需要實施會話:didReceiveUserInfo :(開發人員文檔)。請注意,根據Apple的「watchOS2過渡指南」,

要開始通信,Watch應用程序和iOS應用程序必須具有活動的WCSession對象。通常,每個應用程序在啓動時創建,配置和激活會話對象,並將引用存儲在中央位置。當你想發送數據時,你檢索會話對象並調用它的方法。

+0

親愛的法瓦茲,非常感謝您的回覆,我的手錶操作系統是1.0.1,還是我面對這個問題:( – DevD

+0

親愛的法瓦茲,我注意到,如果我傳遞零回覆或大於簡單的字典回覆它通過擴展方法處理,當試圖通過numutablearray回覆比它給我下面的錯誤 – DevD

+0

錯誤域= com.apple.watchkit.errors代碼= 2「iPhone應用程序中的UIApplicationDelegate從來沒有調用回覆()nsmutablearray,你有關於這個的想法? – DevD