2015-09-20 23 views
10

Spotlight arama sonuçlarından bir görünüm denetleyicisi açmak için çekirdek spot ışığı kullanmaya çalışıyorum.continueUserActivity Arama kapalı uygulamasından çağrılmadı

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray *restorableObjects))restorationHandler 
{ 

if(self.window.rootViewController){ 
    [self.window.rootViewController restoreUserActivityState:userActivity]; 
} 

return YES; 
} 

Bu kapalıdır ancak ne zaman uygulaması zaten arka planda çalışırken iş gibi görünüyor ve ben bu yöntem çağrılmaz alır gibi görünüyor ve ben olsun davranıştır sonucu spot aramada dokunun başvurumun o sadece ana arayüzde başlar.

Uygulamam kapatıldığında da çalışmasını sağlamak için herhangi bir öneriniz var mı? Neler olup bittiğini ayıklamanın bir yolu var mı (uygulama hata ayıklayıcısını almak için uygulamayı çalıştırmam gerektiğinden, uygulama sonucundan nasıl açılacağını bilmiyorum)?

+0

Hiç bu anlamaya mı? Aynı sorunu yaşıyorum: continueUserActivity hiç çağrılıyor. – Travis

+0

Merhaba @Travis, cevabımı aşağıya bakın :) –

cevap

3

İşte sizin önerileri aşağıdaki komple cevabı izler.

// In application: didFinishLaunchingWithOptions: 
NSDictionary *activityDic = [launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey]; 

if (activityDic) { 
    if(self.window.rootViewController){ 
     NSUserActivity * userActivity = [activityDic valueForKey:@"UIApplicationLaunchOptionsUserActivityKey"]; 
     [self.window.rootViewController restoreUserActivityState:userActivity]; 
    } 
} 
29

Niko,

her şeyden önce: orada Xcode uygulamanızı başlatmak için bir yoldur ve onu hemen açılmıyor: "run" bölümüne gidin düzeni özelliklerini açın ve "bilgi" başlığı altında, bir var Olanları hata ayıklamanıza yardımcı olacak geçiş:

"Yürütücünün başlatılmasını bekleyin".

Bu anahtarı etkinleştirirseniz, uygulamayı Xcode'dan başlatabilirsiniz; Xcode, uygulama aramaya açılana kadar bekleyecektir ve ardından hata ayıklayıcısını buna ekleyecektir.

Bu yardımcı olur umarım! Ivan

+0

çok teşekkür ederim, bu gerçekten yararlı oldu :) –

+0

evet, eğer daha fazla olabilirdim eğer daha sık! – fabb

5

uygulama kapatıldı, uygulama: continueUserActivity: çağrılmaz. didFinishLaunchingWithOptions: Bunun yerine, tüm bilgi launchOptions uygulama içinde dictionnary olsun

// In application: didFinishLaunchingWithOptions: 
NSDictionary *activityDic = [launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey]; 
if (activityDic) { 
    // Continue activity here 
} 
18

Eğer Facebook SDK kullanıyorsanız ve didfinishlaunching içinde senin yerine düz metin, FBSDK iade ve sonunda gerçek dönen, bu sorunlar continueuseractivity isabet neden olabilir.

bir çok arama ve farklı yollar denedikten sonra, sadece dönüş sadık vardı ve bu açıklama:.

FBSDKApplicationDelegate.sharedInstance() uygulama (uygulama, didFinishLaunchingWithOptions: launchOptions)

+0

Bu, kafamı duvara birkaç saat boyunca vurduktan sonra benim için beklenmedik bir çözüm. upvoted. –

+0

Dostum, harika yakalama. Bu beni kurtardı. – marcshilling

+1

Vay, bu beklenmedikti. Facebook'a lanet olsun! Gerçekten harika yakala! –

4

didFinishLaunchingWithOptions YES dönmek zorundadır, bu nedenle devamKullanıcılık özelliği çağrılır.

uygulamanın sonu ekle: didFinishLaunchingWithOptions:

NSDictionary *activityDictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey]; 
if (activityDictionary) { 
    NSUserActivity *userActivity = [activityDictionary valueForKey:@"UIApplicationLaunchOptionsUserActivityKey"]; 
    if (userActivity) { 
     return YES; 
    } 
} 

return NO; 
+0

'willFinishLaunchingWithOptions' * ayrıca * 'YES' iadesi gerekiyor – MeXx