2015-10-08 20 views
7

Sorunum, bir iOS parçacığında belirli bir URL'nin açılıp açılmayacağını öğrenemem. Hiçbir UIApplication sınıf olduğundan yöntem canOpenURL: bugünün widget'ındaki kullanılamaz. URL'nin bugün iOS üzerinden açılıp açılmadığını kontrol edin

Üstelik yöntem openURL: dahi geçersiz bir URL'ye sahip EVET boolean "başarı" için NSExtensionContext getiri ait.

kod aşağıda başka durumuna girer (başarı BOOL EVET her zaman) ama ekli resimde görüldüğü gibi aynı sürede simülatörü, bir pop-up hata gösterir.

NSURL* invalidURL = [NSURL URLWithString:@"fake://blablabla"]; 
[self.extensionContext openURL:invalidURL completionHandler:^(BOOL success) { 
    if (success == NO) { 
     DDLogWarn(@"Can't open URL: %@", invalidURL); 
    } 
    else{ 
     DDLogInfo(@"Successfully opened URL: %@",invalidURL); 
    } 
}]; 

enter image description here

+0

gerçek cihazda bu denediniz gibi bir şey performSelector: kullanarak paylaşılan UIApplication örneğine alabilirim? Acı, farklı olabilir. –

cevap

1

Bu bilinen böcek. Geçen yıl Apple ile bu sorunu yayınladım (rdar: // 18107612) iOS 8.0b5 mevcut olduğunda ve hala açık bir sorun.

http://bugreport.apple.com de Apple ile kendi hatası bildirin ve en iyisini ummak.

+0

Bunu işaretlediğiniz için teşekkürler. Herhangi bir uygulanabilir geçici çözüm var mı? Bu takdir edilecektir. –

+0

İyi bir tane değil. Düşünebildiğim en iyi şey, ana uygulama kontrolünüzün URL'de olmasını sağlamak ve daha sonra çalışıp çalışmadığını belirtmek için kullanıcı varsayılanlarında bilgileri kaydetmektir. Uzantı bunu okuyabilir. Ancak, kullanıcı uygulamaları ekler veya kaldırırsa bilgi geçerli olmayabilir. –

0

Sen

UIApplication *sharedApplication = [[UIApplication class] performSelector:NSSelectorFromString(@"sharedApplication")];

+0

Bunun genel bir API olmadığını düşünüyorum, bu nedenle Apple bu kodu kullanarak herhangi bir uygulamayı reddeder, değil mi? Eğer yöntem imzası obfuscate eğer – andreacipriani

+0

doğrudur da bu, –

+0

onu karartmak ve eklemek olsa geçmek mümkün olabilir bir 'ciddiye beklenen uygulama inceleme tarihi bittikten sonra emin arama yalnızca yapılır olmak için kontrol .. Ama NSDate', Bunu yapman gerektiğini düşünmüyorum. – Mazyod

İlgili konular