2015-03-07 19 views
5

4 hataları için raporlar gördüm ancak 5 değil. Bir "openParentApplication: yanıtı" isteği kullanmaya çalıştığımda bu bir konsol iletisi olarak olsun. Sorunun iOS kodunda, WK kodunda veya Simülatörde olup olmadığını bilmek için günlüğe yeterli bilgi yok. Ben sim başlattım ve projeyi temizledim. Herhangi bir fikir?iOS Hatası: FBSOpenApplicationErrorDomain hatası 5. Bu ne anlama geliyor?

WK Kodu:

- (IBAction)sendRequest { 

    NSDictionary *request = @{@"request":@"Request1"}; 

    [InterfaceController openParentApplication:request reply:^(NSDictionary *replyInfo, NSError *error) { 

     if (error) { 
      NSLog(@"%@", error); 
     } else { 

      [self.label1 setText:[replyInfo objectForKey:@"response1"]]; 
      [self.label2 setText:[replyInfo objectForKey:@"response2"]]; 
      [self.label3 setText:[replyInfo objectForKey:@"response3"]]; 
     } 

    }]; 
} 

iOS Kodu:

- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply{ 

    NSLog(@"%s", __FUNCTION__); 
    //([max intValue] - [min intValue]) + [min intValue] 

    int randNum1 = arc4random_uniform(16); 
    int randNum2 = arc4random_uniform(16); 
    int randNum3 = arc4random_uniform(16); 


    NSString *num1 = [NSString stringWithFormat:@"Test%d", randNum1]; 
    NSString *num2 = [NSString stringWithFormat:@"Test%d", randNum2]; 
    NSString *num3 = [NSString stringWithFormat:@"Test%d", randNum3]; 

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

     NSLog(@"containing app received message from watch: Request1"); 


     NSDictionary *response = @{@"response1" : num1, @"response2" : num2, @"response3" : num3}; 
     reply(response); 
    } 

} 

sadece konsol günlüğü geçerli:

WatchKit Extension[48954:9523373] Error Domain=FBSOpenApplicationErrorDomain Code=5 "The operation couldn’t be completed. (FBSOpenApplicationErrorDomain error 5.) 
+2

Tamam. Söz verildiği gibi cevap şu şekildedir: info.plist'de "Uygulama Arka Planda Çalışmıyor" ayarını EVET olarak ayarlamıştı. Bu soruna neden oldu. Bu ayarın HAYIR olarak değiştirilmesi düzeltildi. AppleDev forumlarında Faber'a teşekkürler. –

cevap

1

Sana basitleştirmek deneyin öneririm. Swift'de benzer bir sorun olan here yanıtını verdim. Aşağıdaki mantık basitleştirmek olacaktır:

- (IBAction)sendRequest { 
    [InterfaceController openParentApplication:request reply:^(NSDictionary *replyInfo, NSError *error) { 
     NSLog(@"Reply Info: %@", replyInfo); 
     NSLog(@"Error: %@", error); 
    }]; 
} 

iOS Kod

WK Kanunu

- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply { 
    NSDictionary *response = @{@"replyKey" : @"replyValue"}; 
    reply(response); 
} 

bu kez çalışıyorsa ardından ek Ayrıştırma bir adım at eklemeye başlayın bir zaman. Ayrıca, these talimatlarını izleyerek aramayı ilerlemek için hata ayıklayıcısını iOS uygulamasına da ekleyebilirsiniz. IOS uygulamasında yanıt bloğunu arayamıyor olabilirsiniz ve bunu bile bilmiyorsunuz.

+0

Yanıtladığınız için teşekkür ederiz. Ben bu yönde ilerliyorum. Hatayı kaydettiğimde yanıt bloğuna inanıyorum.Orada meydana geliyor. Ama fikirlerinizi daha dikkatli bir şekilde ele alacağım .. –

+0

Şaşırtıcı, NSLog'dan yanıt (@ "Reply Info:% @", replyInfo); null .. bir şey özledim merak ediyorum .. Ben küçük bir test projesinde çalışan bağlantı var ve herhangi bir fark göremiyorum-- hariç diğer uygulama WK başlangıçta kuruldu, hariç Üzerine cıvatalı. Bunun bu problemle ilgisi olduğunu düşünüyor musunuz? –

+0

Korkarım ne demek istediğini tam olarak anlamadım. Daha küçük bir projede çalışıyorsanız ve daha büyük bir projede çalışıyorsanız, daha büyük olanla birlikte bir proje konfigürasyon probleminiz olduğunu söyleyebilirim. Eğer durum buysa, çözüme kavuşturulduğunda bunu kapatmak için farklı bir soru açmanızı öneririm. – cnoon

5

Bugün de aynı sorunla karşılaştım. info.plist

yılında simülatörünün

  • Silinmiş uygulaması
  • Sıfırlama simülatörü
  • yeniden başlatılması XCode
  • Yapılan değişiklikler Ama Production uygulamayı çalıştırdığınızda, işe yaradı. App simülatör ile üretim modunda iyi çalışıyordu.

    enter image description here

    Sonra, ben dev mod düzeni mevcut silinir ve başka dev mod düzeni yarattı ve işe yaradı. Ardından, uygulamada arka plan getirme özelliğini uygularkenşemasında Launch due to a background fetch event seçeneğini işaretlediğimi hatırlattı. Daha sonra Background Fetch'dan vazgeçtim ama bu seçeneğin işaretini kaldırmayı unuttum. Sadece simülatörü bırakma Benim durumumda

    enter image description here

+0

Bunu kullanabilmek için bir yetkilendirme ayarlamanız gerektiğini düşünüyorum. Her halükarda, Xcode, NEDEN, uygulamayı başlatılamayacağını veya "hata 5" i bildiremediğini bildirmelidir. Bu şema seçeneğini kontrol ettiğim için bugün Xcode 7.3 ile çalıştım. –

İlgili konular