2013-03-28 16 views
9

Birkaç Apps için bildirim göndermek için PushSharp kullanıyorum. PushSharp, itme servisleri ile çalışmayı gerçekten kolaylaştırır ve bununla çalışmak için doğru yolun ne olduğunu merak ediyorum. Bunun hakkında örnekler/açıklamalar bulamadım. Ben göndermek için bir mesajınız var Şimdi ne zamanPushSharp'ı kullanmanın doğru yolu nedir?

, ben ...

  1. bir PushService.StopAllServices yaptığımız tüm cihazlar için bir PushSharp nesnesi
  2. (a PushService.QueueNotification yapmak) oluşturmak Tüm kuyruk iletilerini gönder
  3. yöntemden çıkar (ve PushService nesnesini öldürür).

Ben bu şekilde çalışan veya bu PushService canlı nesne ve gerektiğinde onun yöntemleri çağırmak tutmak gerekir mi?

nasıl kayıtsız cihaz kimlikleri almak için bir PushService nesnesi kullanmalısınız ? özel bir örnekle?

herhangi bir öneri

takdir.

cevap

8

Bu, sıklıkla ortaya çıkan bir sorudur.

cevap ya da bu şekilde olması gerekmez, ama sizin durumunuza bağlıdır. Çoğu durumda, ihtiyaç duyduğunuz her an bir PushBroker örneği oluşturmak kesinlikle iyi olur, çünkü çoğu platform bildirimleri göndermek için HTTP tabanlı protokolleri kullanır. Apple söz konusu olduğunda, belgelerinde, güvenli bağlantıların açılmasının ve kapatılmasının en aza indirgenmesi için bağlantınızı APNS açık tutmanız gerektiğini belirtirler. (: Onlar Gönderdiğiniz her mesaj için yeni bir bağlantı oluşturmak istemiyoruz mesela)

Ancak, uygulamada bu onlar bağlayan ve çok sık kesmeden istemiyoruz demektir düşünüyorum. Gerçekte, her zaman sık sık bildirimler topluyorsanız (her 15 dakikada bir ya da her saatte söyleyelim), muhtemelen her parti için yeni bir bağlantı açmanız ve daha sonra işiniz bittiğinde kapanmanız gibi bir sorun yaşamayacaksınız.

kimseden duymadım Bunu yapmak için Apple'ın APNS sunucularından engelleniyor. Aslında, push bildirimleriyle çalışmanın ilk günlerinde, her bildirim için oluşturulacak yeni bir apns bağlantısına neden olan bir hatam vardı. Böyle bir günde binlerce bildirim gönderdim ve Apple'dan hiç bir şey duymadım (en sonunda bir hata olarak belirledim ve elbette düzeltdim). ApplePushService her 10 dakikada sonra sonra 10 başlangıç ​​saniye ve sonra geri bildirim sunucularını yoklar varsayılan olarak, geribildirim toplamak için olduğu gibi

. Bunun olmasını engellemek istiyorsanız, ApplePushChannelSettings.FeedbackIntervalMinutes öğesini < = 0 olarak ayarlayabilirsiniz. Daha sonra, el ile yapmanız gerektiğinde geri bildirim almak için FeedbackService sınıfını kullanabilirsiniz.

+0

Her defasında yeni bir PushBroker örneği oluşturup olaylarını tetiklerseniz, bellek sızmaz mı? Olayların ne zaman birleştirileceğini nasıl bilebilirim? – Kugel

+1

Redth, bu çok değerli bir yorumdu. Özellikle bağlantıların neredeyse sürekli olarak açık kalması gerekip gerekmediğiyle ilgili, daha önce sahip olduğum hissi. –

+0

@Nicholas bu yardımcı oldu. Söylediğim gibi, Apple'ın belgeleri onlara açık bir bağlantı kurmanızı talep ediyor. Uygulamada, toplu işlerde bildirim gönderiyorsanız, bu muhtemelen gerekli değildir ve Apple'ın bunu yapmak için kimseyi yasakladığını hiç duymadım. – Redth