PushKit token kaydı ve VoIP sertifikası kullanarak OneSignal ile iOS’ta VoIP push bildirimleri gönderin; arama tarzı davranış için Android alternatifleri de sunulmaktadır.
VoIP push bildirimleri, uygulamanızın arka planda veya sonlandırılmış olsa bile gelen arama uyarılarını almasını sağlar. Apple, VoIP pushlerini standart push bildirimlerinden farklı şekilde işler — bunlar ayrı bir sertifika türü, ayrı bir token (PushKit aracılığıyla) ve farklı teslimat kuralları kullanır.OneSignal VoIP pushlerini göndermeyi destekler, ancak OneSignal SDK’sı VoIP token kaydını gerçekleştirmez. Şunlardan siz sorumlusunuz:
Apple PushKit kullanarak uygulamanızda VoIP tokenlarını kaydetme
VoIP Services Certificate ile ayrı bir OneSignal uygulaması oluşturma
OneSignal REST API aracılığıyla tokenları kaydetme ve push gönderme
iOS’ta VoIP bildirimleri Apple PushKit kullanır ve standart push bildirimlerinden farklı özel teslimat kurallarına sahiptir. Apple VoIP pushlerini farklı şekilde ele aldığından, OneSignal’ın VoIP için ayrı bir uygulama yapılandırması gerekir.
Başlamadan önce — en sık yapılan VoIP kurulum hataları şunlardır:
VoIP için ayrı bir OneSignal uygulaması oluşturmamak. Apple VoIP için farklı bir sertifika türü gerektirdiğinden, OneSignal’ın VoIP pushlerini gönderebilmesi için ayrı bir uygulamaya ihtiyacı vardır. Mevcut push uygulamanız her ikisi için kullanılamaz.
Yanlış sertifika yüklemek. Standart APNs push sertifikanız değil, bir VoIP Services Certificate (.p12) gerekir. Yanlış sertifika kullanılması sessiz teslimat hatalarına neden olur.
Sandbox’ta test_type alanını unutmak. Geliştirme derlemesiyle test ederken, token kaydederken "test_type": 1 eklemeniz gerekir. Bu alan olmadan API çağrısı başarılı olur ancak pushler hiçbir zaman ulaşmaz.
1
PushKit kullanarak bir VoIP token kaydetme
VoIP bildirimleri için kaydolmak ve bir VoIP token almak üzere Apple’ın PushKit framework’ünü kullanın.
Uygulamanızda PushKit’i uygulayın
Apple token’ı yenilerken VoIP tokenını saklayın ve güncelleyin
Apple VoIP pushleri, standart push bildirimlerinden farklı bir sertifika türü gerektirir. Tek bir OneSignal uygulaması yalnızca bir sertifika türü kullanabildiğinden, iki ayrı OneSignal uygulaması oluşturmanız gerekir:
Ana Push Uygulaması: Standart push bildirimleri için APNs sertifikanızı kullanır
VoIP Push Uygulaması: Yalnızca VoIP bildirimleri için VoIP Services Certificate kullanır
Her iki uygulama da aynı iOS bundle ID’sini kullanmalı ve aynı yerel iOS uygulamasıyla ilişkilendirilmelidir. OneSignal SDK’sını iki kez başlatmanıza gerek yoktur — VoIP uygulaması yalnızca API aracılığıyla VoIP pushlerini göndermek için sunucu tarafında kullanılır.
Bundle ID (ör. com.yourcompany.appname), Xcode’da hedef uygulamanızın General sekmesinde bulunur.
3
VoIP Services Certificate yükleme
VoIP OneSignal uygulamanıza bir VoIP Services Certificate (.p12) yükleyin. Bu, normal bildirimler için kullandığınız standart APNs push sertifikasından farklı bir sertifika türüdür.Oluşturmak için:
Sertifikayı oluşturmak ve indirmek için yönergeleri izleyin
Keychain Access’te açıp .p12 dosyası olarak dışa aktarın
.p12 dosyasını VoIP OneSignal uygulamanızın iOS ayarlarına yükleyin
Standart APNs push sertifikanızı VoIP uygulamasına yüklemeyin. Yanlış sertifika türü kullanırsanız, API push isteğinizi kabul eder ancak Apple reddeder ve bildirim hiçbir zaman ulaşmaz.
Keychain Access'te VoIP sertifikası
OneSignal kontrol panelinde yüklenen VoIP sertifikası
4
VoIP tokenını OneSignal'a kaydetme
VoIP tokenını VoIP OneSignal uygulamanıza kaydetmek için Create User API’sini kullanın.
Sandbox/geliştirme derlemeleri "test_type": 1 gerektirir. Bu alanı atlarsanız, API çağrısı başarılı olur ve hata döndürmez, ancak Apple tokenı üretim olarak değerlendirir ve gönderilen her pushu sessizce reddeder.
Geçerli bir VoIP token, 64 karakterli küçük harfli bir onaltılık dizedir (ör. a1b2c3d4e5f6...). PushKit iOS Simülatör’de çalışmaz — geçerli bir token elde etmek için gerçek bir cihaz kullanmanız gerekir.
Android, VoIP push bildirimlerini desteklemez. Apple PushKit’e eşdeğer bir özellik yoktur.Bunun yerine, Android arama uygulamaları şunları kullanarak VoIP davranışını simüle eder:
Yalnızca veri push bildirimleri
Ön plan servisleri
Özel arama tarzı kullanıcı arayüzü
Bunu başarmak için OneSignal’ın normal Android push desteğini yerel Android API’leriyle birlikte kullanabilirsiniz.Önerilen yaklaşım:
Yalnızca veri bildirimleri gönderin
Bunları uygulamanızda şu şekilde işleyin:
Bir ön plan servisi başlatın
Bir arama kullanıcı arayüzü aktivitesi başlatın
Özel bir gelen arama bildirimi görüntüleyin
Bildirim işlemeyi engellemek ve tam olarak kontrol etmek istiyorsanız, Android’in Notification Service Extension özelliğini kullanın.Yararlı kaynaklar:
Hayır. Confirmed Deliveries, VoIP pushlerinde takip edilmez. Onaylanmış Teslimatlar, VoIP bildirimleri için tetiklenmeyen Notification Service Extension’a dayanır.Bunun yerine, alındı bilgisini yerel iOS PushKit olayı aracılığıyla takip edin:
VoIP bildirimlerini OneSignal kontrol panelinden gönderebilir miyim?
Hayır. VoIP bildirimleri, "apns_push_type_override": "voip" parametresiyle Create Notification API’si aracılığıyla gönderilmelidir. Kontrol paneli bu parametreyi desteklemez.
VoIP pushleri, OneSignal API’sinden herhangi bir hata almadan başarısız olabilir. Bu kontrol listesini takip edin:
Sandbox/geliştirme derlemesi mi kullanıyorsunuz? Create User API’si aracılığıyla token kaydederken "test_type": 1 eklemeniz gerekir. Bu alan olmadan token üretim olarak kaydedilir, Apple pushu reddeder ve sessizce başarısız olur.
Doğru sertifikayı yüklediniz mi? VoIP OneSignal uygulaması, standart bir APNs push sertifikası değil, VoIP Services Certificate (.p12) kullanmalıdır. Her ikisi de Keychain Access’te benzer görünür — sertifika adının “VoIP Services” ile başladığını doğrulayın.
Doğru OneSignal uygulamasına mı gönderiyorsunuz? Gönderme isteğinizdeki app_id, ana push uygulamanız değil VoIP uygulamanız olmalıdır. REST API Key de VoIP uygulamasından alınmış olmalıdır.
VoIP token geçerli mi? Tokenlar, uygulama yeniden yüklendiğinde veya cihaz sıfırlandığında sona erer. Token’ın 64 karakterli küçük harfli bir onaltılık dize olduğunu ve yakın zamanda kaydedildiğini doğrulayın.
Uygulamanız reportNewIncomingVoIPPushPayload çağırıyor mu? iOS 13’ten itibaren Apple, VoIP pushu alan ancak CallKit’e bir arama bildirmeyen uygulamaları sonlandırır. Bu bir Apple gereksinimi olup OneSignal’a özgü bir kısıtlama değildir.