2013-08-12 34 views
7

Ben bir iOS uygulaması yazıyorum ve işletim sistemi böyle bir Afiş Bildirimi göstermeye karar verdiğinde benim uygulamanın hareket içeriğini duraklatmak istiyorum:iOS'ta bir başlık bildirimi nasıl bildirilir?

Banner Notification

bir sistem NSNotification var mı ben Gözlemleyebileceğim veya gözlemleyebileceğim bir yöntem olabilir mi? Ben applicationWillResignActive denedim, ancak bu durumda denir.

+1

Ucuz çekim: Pencerenin çerçevesi veya sınırları değişiyor mu? Öyleyse, uygulama penceresinin sınırlarında KVO'yu deneyebilir misiniz? – Moshe

+0

Kısa Yanıt: Yasal bir şey yok. APNS bir istemci-sunucu modeli olarak tasarlanmıştır, bu yüzden sizin olmayan bir başlıktan asla haberdar edilmemelisiniz. Uzun Yanıt: Bildirim afişleri görünür ve bu nedenle görünümler veya katmanlar olması gerekir. Her iki durumda da, bir afiş gösterildiğinde pencere hiyerarşisinin muhtemelen değişebileceği bir önsezim var. – CodaFi

+1

@ CodaFi- Benim tahminim sizin * pencerenizde değil ve uygulamanızın görünüm hiyerarşisinin tamamen dışındadır. – BergQuester

cevap

2

Bu sabah bir bıçak aldım ve bunun için bir kamu API'sinin olmadığını söylemeye meyilliyim.

here'da belirtilen kodu kullanmayı denedim ve herhangi bir bildirim yakalamadım. Sonra, bir şey bulabileceğimi görmek için bir sürü "test" yaptım.

Test etmek için, bir çift uygulama oluşturdum, one to schedule notifications (GitHub link) ve one to try and "catch" them (GitHub link). Gönderen uygulamasında her N saniyede bir N bildirimi gönderebilirim. Bazı keyfi yüksek değeri seçtim ve yolladım.

Yakalamamda, visibleRect değerlerine katman hiyerarşisinde yukarı ve aşağı bakmayı denedim. (KeyWindow bir katmanda yaşar, ancak bu süper görüntüdür ve süper layer.delegate ikisi de sıfırdır) Kısıtlamaları kontrol etmedim, ancak bu önemli olmamalı. Uygulamanın penceresine baktım, süper bir süper görüntü, katmanı, alt görüntüleri. Uygulamanın sınırları da etkilenmez. Uygulamaya bu kadar iyi korumalı, uygulamanın dünyasında springboard ve bildirim merkezi yok.

Özel çerçevelere erişme yoluna gitmeye başladım, ancak bu çabaya değmeyeceğine karar verdim.

Enstrümanlar'ı açtım ve görünümlerin saydamlık seviyelerine baktım. (Bir hiyerarşideki tüm görünümleri opak olmaya zorlamak mümkün mü ve afişin bir şeyi engelleyip engellemediğini görmek için bunu kullanabilir miyim? Belki de şeffafsa "engelleme" değil?)

Ayrıca denemeyi denedim Bir ekran görüntüsü seçin ve ekranın üst kısmındaki renkleri kontrol edin, ancak bu durum işe yaramayacağınız için işe yaramaz. Çalışsa bile, özellikle performans göstermez.

Bastırıcı bağlantı noktasında push bildirimlerini dinlemek zorunda olduğumu düşündüğüm başka bir düşünce de Apple'ın başka bir uygulamanın bildirimlerini yakalamanıza izin verdiğinden şüpheliyim. Bir geliştirici olarak, özel bilgileri bir uyarıya göndermem, ancak yine de bir endişe.

Gerçek şu ki, bildirim afişleri uygulamanızın etkin olmamasına neden olmadığından, bu davranışın yanlış olduğundan emin değilim. Bir kolaylık ise, bir hata dosyası. DeviceWillShowNotificationNotification'u nasıl talep edebilirim?

İlgili konular