'a bırakılan bildirimleri belirleme Azure Bildirim Hub'ları aracılığıyla iOS ve Android cihazlarına push bildirimlerinin başarılı bir şekilde uygulanması sağlanmıştır. Sorun, bazı iOS aygıtlarının Azure Notification Hubs tarafından gönderilen bildirimleri hiçbir zaman almadığı yönündedir.Azure Bildirim Hub'dan APNS
İletileri uygun aygıtlara yönlendirmek için şablonlar ve etiketler kullanıyoruz. Etiketler ilgi alanıdır ve asla kullanıcıya özgü değildir. Bu nedenle, bir etiketin o etikete abone olan tüm cihazlara aktarılması için bir bildirim bekleriz.
Android aygıtlar bildirimlerini hatasız şekilde alıyor ancak iOS aygıtları tutarlı değil. Çoğu çalışır. Bir çift yapmaz.
Push bildirimlerinin en iyi şekilde teslim edildiğini ve güvenilirlik garantisi vermediğinin bilincindeyiz, ancak sınırlı testlerimiz, tutarlı olmayan bir şekilde (yaklaşık bir düzine iki başarısızlıktan daha fazla) push bildirimleri almayan daha fazla aygıt ortaya çıkarmıştır. cihazlar).
var outcome = await hub.SendTemplateNotificationAsync(properties, tag);
Biz emin olmak için GetAllRegistrationsAsync
yöntemini kullandık: Biz Azure Bildirim Hub bağlanır ve Azure uyarılarını yollar sonunda geri basit bir C# rutini var
: Burada
düzmece kontrol ettiğimiz her cihazın başarıyla kaydedildiğini ve doğru şablonu kullandığını. Her cihaz kayıtlı, tüm şablonlar doğru."Test modu" nda değiliz; NotificationHubClient.CreateClientFromConnectionString
'un enableTestSend
parametresi yanlış olarak ayarlanır.
Sorun: biz bildirimi gönderdiğinizde
, çoğu cihazlar Test ettiğimiz belirli durumlarda bildirim ve almak, doğru sayı ile rozet sayacı güncelleyin. Ancak, birkaç aygıtın bildirimi almıyor gibi görünüyor. Cihazlardan biri cihazı yeniden başlattıktan sonra bildirimi aldı, ancak bundan sonra durdu.
Yukarıda belirtilen GetAllRegistrationsAsync
yöntemini kullanarak, sorunlu aygıtların Azure'a doğru şekilde kaydedildiğini doğruladık ve doğru etiketlere ve şablonlara sahip olduklarını doğruladık.
Sorun aygıtlarının aygıt belirteçlerini Azure kayıtlarından belirledik. Cihazın belirteçlerini kullanarak sorunlu cihazlara bir bildirim göndermek için doğrudan APNS ile iletişim kuran bir PHP betiği kullandık. Her seferinde cihaz bu doğrudan gönderim bildirimini alır. Sadece Azure'dan güvenilmez olan bildirimler.Azure Bildirim Hub Monitör sayfasını incelediğimizde
, geçen 24 saat boyunca bu ölçümleri görmek:
- 967 APNS Başarılı Bildirimler
- 3 APNS Kötü Kanal Hataları
- 2 APNS Doldu Kanal Hataları
- 4 APNS hatalar
... ve ge içinde Azure APNS'ye için veya bildirilen başka bir hata neral. Gördüğümüz başarısızlık oranı 20'nin üzerinde bir hata üretmelidir.
Hatalardan hangi cihaz sembollerinin sorumlu olduğunu belirleyemedik; Bu bilgiyi Azure'dan almanın bir yolu var mı?
Neden APNS'nin kendisi üzerinden bildirimleri doğrudan bu cihazlara gönderebildiğimizi açıklamakta bir kayıp olamayız, ancak Azure üzerinden değil, neden Azure'un neden olduğundan daha fazla hata bildirmediğini açıklıyoruz.
Herhangi bir öneri veya anlayış?
Bu oldukça makul bir açıklama gibi görünüyor, ancak açıklamanız, doğrudan mesajın Azure'ın kullandığı aynı cihaz belirtecini kullanarak APNS aracılığıyla gönderilememesi gerektiği anlamına gelmez mi? Veya Apple, gönderen IP'ye (veya benzeri bir şeye) göre gelen mesajları seçerek reddedebilir mi? Alternatif olarak, bu geçersiz cihaz belirteçlerini Azure'dan çıkarmak için bir yol biliyor musunuz? (Kayıtları yapmıyoruz; cihazlar doğrudan Azure ile iletişim kurar.) –
@AlanMcBee Doğrudan göndermeye çalıştığınız cihaz kodları geçerli olabilir, aksi takdirde çalışmazlar. Sorun muhtemelen farkında olmadığınız diğer cihaz belirteçlerinden kaynaklanmaktadır. Geçersiz jetonları Azure'dan nasıl kaldırabileceğinizi bilmiyorum. Azure ile hiç çalışmadım. Geliştirme oluşturmayı test ederken (sandbox push ortamı ile) Azure ile cihaz kaydettirdiniz mi? Bunlar en olası sorunlu cihaz belirteçleri. – Eran
Muhtemelen test sırasında oluşturduğumuz üretim öncesi kayıtların tümünü kaydetmemeliydik, böylece herhangi bir sorun olmayacaktı. Ancak, üretim uygulamasının tamamı üretim sertifikasına sahip olduktan sonra, sorunlu aygıtların tümü, Azure ile belirteçlerini başarıyla kaydettirdi.Bireysel geçersiz cihaz jetonlarının sonunda kayıttan kaldırılmasını bekledim. Tek tek cihaz hatalarını takip etmeye yardımcı olmak için Microsoft ile açık bir destek biletimiz var. Bu ileti dizisini yayınlayacağım. –