2012-12-08 12 views
22

Uzmanlar, Günde üç kez (sabah, öğleden sonra, akşam) kullanıcıyı bilgilendirmem gereken bir senaryo var. Ve bu bildirimlerin zamanlamaları her bir tarih için farklı olacak ve her bir tarih için veritabanı değerleri esas alınacaktır.Aşağıdaki senaryo için yerel bildirimi nasıl zamanlayabilirim?

Bu12 bildirimleri yapılandırılabilir. Kullanıcı, ayarların altında sabah bildirimini kapatırken öğleden sonra ve akşam ayarlamayı seçebilir.

Anlayışım gereği yerel bildirimleri kullanarak bunu başarabilirim.

Aşağıdakileri yapabilirim: - uygulamadan önce, didFinishLaunchingWithOptions içinde, bir sonraki bildirimin ne zaman gerçekleşeceğini kontrol edebilirim (açık/kapalı). Eğer ayarlanmışsa, onu programlıyorum. Değilse bir sonraki bildirim türüne geçiyorum ve aynı şeyi yaparım. Tüm bildirimler kapatılmışsa, açık bir şekilde herhangi bir bildirim yapılmayacaktır.

Bildirim göründüğünde, "Kapat" ve "Görüntüle" olmak üzere iki düğme ile uyarı görüyorum. Kullanıcı "Görüntüle" seçeneğini belirlerse Uygulamam etkinleşir ve kullanıcı çıkmadan önce bir sonraki bildirim zamanlanır. Şimdiye kadar çok iyi.

Kullanıcı "Kapat" ı seçmeyi seçerse ne yapmalıyım? Uygulamamı başlatmayacak ve dolayısıyla bir sonraki bildirim planlanmayacak mı?

Bunu nasıl başarabilirim? Bunu yapmanın daha iyi bir yolu var mı?

Yardım! Yardım et! Yardım et!

+0

Yapmak istediğiniz şey çok mantıklı veya kullanılabilir. Gereksinimlerinizi yeniden düşünmenizi ve sorunu başka bir şekilde ele almaya çalışmanızı öneririm. –

cevap

37

Tüm (veya birçok) bildirimleri tek seferde zamanlayabilirsiniz. Bir sonraki bildirimi planlamak için uygulamanızı View uygulamanızı beklemeniz gerekmez. the docs on UILocalNotification kaynaktan

,

bir uygulama planlanan bildirimleri yalnızca sınırlı sayıda olabilir; sistemi (otomatik ertelenmişti bildirimler tek bildirim olarak sayma ile) en erken ateşleme 64 bildirimlerini tutar ve günde 3 bildirimleri varsa, önceden tarifesi olabilir 3 hafta, Yani geri kalan

atar bir kerede bildirimler. Kullanıcı uygulamanızı bir ay boyunca açmazsa hala bir sorunla karşılaşırsınız, ancak bu senaryo hakkında endişelenmeniz gerekiyor mu?

Her neyse, sadece bu bildirimleri bir kerede planlamanız gerekmediğinden emin olmak istedim.

Örnek:

UILocalNotification* n1 = [[UILocalNotification alloc] init]; 
n1.fireDate = [NSDate dateWithTimeIntervalSinceNow: 60]; 
n1.alertBody = @"one"; 
UILocalNotification* n2 = [[UILocalNotification alloc] init]; 
n2.fireDate = [NSDate dateWithTimeIntervalSinceNow: 90]; 
n2.alertBody = @"two"; 
[[UIApplication sharedApplication] scheduleLocalNotification: n1]; 
[[UIApplication sharedApplication] scheduleLocalNotification: n2]; 

Yani, ilk bildirim göründüğünde kullanıcı Kapat tercih etse bile ikincisi yine teslim edilecektir.

Bu arada, uygulamanız başladıktan hemen sonra didFinishLaunchingWithOptions yöntemi hemen çağrılmaya başlıyor. Bununla birlikte, istediğiniz zaman yeni bildirimleri planlayabilirsiniz.

+0

Teşekkürler Nate. Bunu düşündüm ama doğru yol olup olmadığından emin değildi. –

3

Ayrıca, repeatInterval özelliğini süresiz olarak yeniden zamanlamak için de kullanabilirsiniz. Bununla birlikte, NSCalendarUnit'daki birimlerle sınırlıdır. Daha fazla bilgi için docs'a bakın