Web uygulamasına push bildirimleri ekleme

Push mesajı, kullanıcılarınızla yeniden etkileşimde bulunmanın basit ve etkili bir yoludur. Bu codelab'de web uygulamanıza push bildirimlerini nasıl ekleyeceğinizi öğreneceksiniz.

Neler öğreneceksiniz?

  • Push mesajı almak için abone olma ve abonelikten çıkma
  • Gelen push mesajlarını işleme
  • Bildirim nasıl görüntülenir?
  • Bildirim tıklamaları nasıl yanıtlanır?

Gerekenler

  • Chrome 52 veya sonraki sürümler
  • Chrome için Web Sunucusu veya tercih ettiğiniz kendi web sunucunuz
  • Metin düzenleyici
  • HTML, CSS, JavaScript ve Chrome Geliştirici Araçları ile ilgili temel bilgiler
  • Örnek kod (Kurulum bölümüne bakın.)

Örnek kodu indirin

Bu codelab için örnek kodu almak üzere iki seçeneğiniz vardır:

  • Git veri deposunu klonlayın:
git clone https://github.com/GoogleChrome/push-notifications.git
  • ZIP dosyasını indirin:

Kaynak kodu indir

Kaynağı ZIP dosyası olarak indirirseniz paketi açmak size bir kök klasör push-notifications-master verir.

Web sunucusunu yükleyip doğrulama

Kendi web sunucunuzu kullanabilmenize rağmen bu codelab, Chrome için Web Sunucusu uygulamasıyla iyi çalışacak şekilde tasarlanmıştır. Henüz uygulamayı yüklemediyseniz Chrome Web Mağazası'ndan edinebilirsiniz:

Chrome için Web Server'ı yükleyin

Chrome için Web Sunucusu uygulamasını yükledikten sonra yer işareti çubuğundaki Uygulamalar kısayolunu tıklayın:

Uygulamalar penceresinde Web Sunucusu simgesini tıklayın:

Sonraki iletişim kutusunda yerel web sunucunuzu yapılandırabilirsiniz:

Klasör seç düğmesini tıklayın, indirdiğiniz push-notifications klasöründeki app klasörünü seçin. Bu sayede, iletişim kutusunun Web Sunucusu URL'leri bölümünde gösterilen URL üzerinden devam eden çalışmalarınızı sunabilirsiniz.

Seçenekler bölümünde, aşağıda gösterildiği gibi index.html'yi otomatik olarak göster'in yanındaki kutuyu işaretleyin:

Ardından, Web Sunucusu: BAŞLAT açma/kapatma düğmesini sola, ardından sağa kaydırarak sunucuyu durdurun ve yeniden başlatın.

Web tarayıcınızda sitenizi ziyaret etmek için Web Sunucusu URL'sini tıklayın. Şuna benzer bir sayfa görürsünüz: Sürümünüz adres olarak 127.0.0.1:8887'yi gösterebilir:

00-push-codelab.png

Hizmet çalışanını her zaman güncelleme

Geliştirme sırasında, hizmet çalışanınızın her zaman güncel olduğundan ve en son değişikliklere sahip olduğundan emin olmak yararlıdır.

Bunu Chrome'da ayarlamak için:

  1. Codelab'i Aktar sekmesine gidin.
  2. Geliştirici Araçları'nı açın: Windows ve Linux'ta Ctrl-Üst Karakter-I, macOS'ta Cmd-Option-I
  3. Uygulama panelini seçin, Hizmet Çalışanları sekmesini tıklayın ve Yeniden Yüklemede Güncelle onay kutusunu işaretleyin. Bu onay kutusu etkinleştirildiğinde, sayfa her yeniden yüklendiğinde hizmet çalışanı zorla güncellenir.

Kod tamamlandı

app dizininizde, sw.js adında boş bir dosyanız olduğunu fark edin. Bu dosya, hizmet çalışanınız olacak. Şimdilik boş kalabilir. Kodu daha sonra ekleyeceksiniz.

Öncelikle bu dosyayı hizmet çalışanınız olarak kaydetmeniz gerekir.

app/index.html sayfanız scripts/main.js yükler. Hizmet çalışanınızı bu JavaScript dosyasına kaydedersiniz.

scripts/main.js adresine aşağıdaki kodu ekleyin:

if ('serviceWorker' in navigator && 'PushManager' in window) {
  console.log('Service Worker and Push are supported');

  navigator.serviceWorker.register('sw.js')
  .then(function(swReg) {
    console.log('Service Worker is registered', swReg);

    swRegistration = swReg;
  })
  .catch(function(error) {
    console.error('Service Worker Error', error);
  });
} else {
  console.warn('Push messaging is not supported');
  pushButton.textContent = 'Push Not Supported';
}

Bu kod, hizmet çalışanlarının ve push mesajlarının tarayıcınız tarafından desteklenip desteklenmediğini kontrol eder. Destekleniyorsa kod, sw.js dosyanızı kaydeder.

Deneyin

Tarayıcıda Push Codelab sekmesini yenileyerek değişikliklerinizi kontrol edin.

Chrome Geliştirici Araçları'ndaki konsolda şunun gibi bir Service Worker is registered message olup olmadığını kontrol edin:

Uygulama sunucusu anahtarlarını alma

Bu codelab ile çalışmak için uygulama sunucusu anahtarları oluşturmanız gerekir. Bunu tamamlayıcı sitede yapabilirsiniz: web-push-codelab.glitch.me

Burada ortak ve özel bir anahtar çifti oluşturabilirsiniz.

push-codelab-04-companion.png

Ortak anahtarınızı scripts/main.js alanına kopyalayıp <Your Public Key> değerini girin:

const applicationServerPublicKey = '<Your Public Key>';

Önemli: Özel anahtarınızı hiçbir zaman web uygulamanıza yerleştirmemelisiniz.

Kod tamamlandı

Şu anda web uygulamasının Etkinleştir düğmesi devre dışıdır ve tıklanamaz. Bunun nedeni, push düğmesinin tarayıcı tarafından desteklendiğini ve kullanıcının mesajlaşmaya abone olup olmadığını kontrol ettikten sonra varsayılan olarak devre dışı bırakma düğmesini devre dışı bırakmasıdır.

scripts/main.js içinde iki işlev oluşturmanız gerekir:

  • Kullanıcının abone olup olmadığını kontrol etmek için initializeUI
  • updateBtn, düğmenizi etkinleştirmek ve kullanıcının abone olup olmamasına bağlı olarak metni değiştirmek için

main.js sayfasına şunun gibi bir initializeUI işlevi ekleyin:

function initializeUI() {
  // Set the initial subscription value
  swRegistration.pushManager.getSubscription()
  .then(function(subscription) {
    isSubscribed = !(subscription === null);

    if (isSubscribed) {
      console.log('User IS subscribed.');
    } else {
      console.log('User is NOT subscribed.');
    }

    updateBtn();
  });
}

Yor yeni yöntemi, önceki adımdaki swRegistration öğesini kullanır, pushManager özelliğini bundan alır ve getSubscription() öğesini çağırır.

pushManager. getSubscription(), varsa geçerli abonelikle çözümlenecek bir söz verir. Aksi takdirde null değerini döndürür. Böylece kullanıcının zaten abone olup olmadığını kontrol edip isSubscribed değerini belirleyebilir ve ardından düğmeyi güncellemek için updateBtn() numaralı telefonu arayabilirsiniz.

updateBtn() işlevini main.js öğesine ekleyin:

function updateBtn() {
  if (isSubscribed) {
    pushButton.textContent = 'Disable Push Messaging';
  } else {
    pushButton.textContent = 'Enable Push Messaging';
  }

  pushButton.disabled = false;
}

Bu işlev, düğmeyi etkinleştirir ve kullanıcının abone olup olmamasına bağlı olarak düğme metnini değiştirir.

Servis çalışanınız main.js hizmetine kaydolduğunda yapılacak son şey initializeUI() numarasını aramaktır:

navigator.serviceWorker.register('sw.js')
.then(function(swReg) {
  console.log('Service Worker is registered', swReg);

  swRegistration = swReg;
  initializeUI();
})

Deneyin

Codelab'i Aktar sekmesini yenileyin. Push Mesajlaşmayı Etkinleştir düğmesinin artık etkin olduğunu (tıklayabilirsiniz) ve konsolda User is NOT subscribed ifadesini görmeniz gerekir.

Bu codelab'in geri kalanında ilerlerken, abone olduğunuzda veya abonelikten çıktığınızda düğme metninin değiştiğini görürsünüz.

Kod tamamlandı

Şu anda Push Mesajlaşmayı Etkinleştir düğmeniz çok fazla işlem yapmaz. Gelin bu sorunu çözelim.

initializeUI() işlevinde, düğmeniz için bir tıklama işleyici ekleyin:

function initializeUI() {
  pushButton.addEventListener('click', function() {
    pushButton.disabled = true;
    if (isSubscribed) {
      // TODO: Unsubscribe user
    } else {
      subscribeUser();
    }
  });

  // Set the initial subscription value
  swRegistration.pushManager.getSubscription()
  .then(function(subscription) {
    isSubscribed = !(subscription === null);

    updateSubscriptionOnServer(subscription);

    if (isSubscribed) {
      console.log('User IS subscribed.');
    } else {
      console.log('User is NOT subscribed.');
    }

    updateBtn();
  });
}

Düğmeye abone olunması biraz zaman alabileceğinden, kullanıcı düğmeyi tıkladığında düğmeyi ikinci kez tıklamadığından emin olmak için düğmeyi devre dışı bırakırsınız.

Ardından, kullanıcı henüz abone değilse subscribeUser() numarasını ararsınız. Bunun için aşağıdaki kodu scripts/main.js etiketine yapıştırmanız gerekir:

function subscribeUser() {
  const applicationServerKey = urlB64ToUint8Array(applicationServerPublicKey);
  swRegistration.pushManager.subscribe({
    userVisibleOnly: true,
    applicationServerKey: applicationServerKey
  })
  .then(function(subscription) {
    console.log('User is subscribed.');

    updateSubscriptionOnServer(subscription);

    isSubscribed = true;

    updateBtn();
  })
  .catch(function(error) {
    console.error('Failed to subscribe the user: ', error);
    updateBtn();
  });
}

Bu kodun işlevini ve kullanıcının push mesajlaşması için nasıl abone olduğunu ele alalım.

Öncelikle, uygulama sunucusunun ortak anahtarını (Base64 URL açısından güvenli şekilde kodlanmış) alıp UInt8Array çağrısına yönelik beklenen giriş olduğu için bu anahtarı UInt8Array haline getirirsiniz. urlB64ToUint8Array() işlevi, scripts/main.js öğesinin üst kısmındadır.

Değeri dönüştürdükten sonra hizmet çalışanlarınızın pushManager yönteminde subscribe() yöntemini çağırır ve uygulama sunucunuzun ortak anahtarını ve userVisibleOnly: true değerini geçirirsiniz.

const applicationServerKey = urlB64ToUint8Array(applicationServerPublicKey);
swRegistration.pushManager.subscribe({
  userVisibleOnly: true,
  applicationServerKey: applicationServerKey
})

userVisibleOnly parametresi, her push mesajı gönderildiğinde bildirim göstereceğinizi garanti eder. Şu anda bu değer gereklidir ve doğru olmalıdır.

subscribe() numarasını aradığınızda, aşağıdaki adımlardan sonra çözüm vadeden söz verilir:

  1. Kullanıcı, bildirimleri görüntüleme izni verdi.
  2. Tarayıcı, PushSubscription oluşturmak için gereken verileri almak üzere push hizmetine bir ağ isteği gönderdi.

Bu adımlar başarılı olursa subscribe() taahhüdü PushSubscription ile çözümlenir. Kullanıcı izin vermezse veya kullanıcıya abone olmakla ilgili bir sorun varsa söz verme işlemi bir hata ile reddedilir. Bu size codelab'inizde aşağıdaki taahhüt zincirini verir:

swRegistration.pushManager.subscribe({
  userVisibleOnly: true,
  applicationServerKey: applicationServerKey
})
.then(function(subscription) {
  console.log('User is subscribed.');

  updateSubscriptionOnServer(subscription);

  isSubscribed = true;

  updateBtn();

})
.catch(function(err) {
  console.log('Failed to subscribe the user: ', err);
  updateBtn();
});

Bu sayede bir abonelik alabilir ve kullanıcıya abone olarak davranabilir veya bir hatayı yakalayıp konsola kaydedebilirsiniz. Her iki senaryoda da, düğmenin yeniden etkinleştirilmesini ve ilgili metnin bulunmasını sağlamak için updateBtn() numaralı telefonu ararsınız.

Gerçek bir uygulamada updateSubscriptionOnServer() işlevi, abonelik verilerinizi bir arka ucuna göndereceğiniz yerdir; ancak codelab'de aboneliği kullanıcı arayüzünüzde göstermeniz yeterlidir. scripts/main.js işlevine şu işlevi ekleyin:

function updateSubscriptionOnServer(subscription) {
  // TODO: Send subscription to application server

  const subscriptionJson = document.querySelector('.js-subscription-json');
  const subscriptionDetails =
    document.querySelector('.js-subscription-details');

  if (subscription) {
    subscriptionJson.textContent = JSON.stringify(subscription);
    subscriptionDetails.classList.remove('is-invisible');
  } else {
    subscriptionDetails.classList.add('is-invisible');
  }
}

Deneyin

Codelab'i Aktar sekmesine gidin, sayfayı yenileyin ve düğmeyi tıklayın. Şuna benzer bir izin istemi görürsünüz:

İzin verirseniz User is subscribed konsolunda konsola giriş yapıldığını görürsünüz. Düğme metni Push Mesajlaşmasını Devre Dışı Bırak olarak değişir ve aboneliği sayfanın alt kısmında JSON verileri olarak görüntüleyebilirsiniz.

Kod tamamlandı

Henüz ele almadığınız bir şey de, kullanıcı izin isteğini engellerse ne olacağıdır. Kullanıcı izin vermesi halinde web uygulamanız izin istemini yeniden gösteremeyeceğinden ve kullanıcıya abone olamayacağından bu işlem için benzersiz bir dikkat edilmesi gerekir. Kullanıcının kullanılamayacağını bilebilmesi için en azından push düğmesini devre dışı bırakmanız gerekir.

Bu senaryoda belirleyici unsur, updateBtn() işlevidir. Tek yapmanız gereken Notification.permission değerini kontrol etmektir. Örneğin:

function updateBtn() {
  if (Notification.permission === 'denied') {
    pushButton.textContent = 'Push Messaging Blocked';
    pushButton.disabled = true;
    updateSubscriptionOnServer(null);
    return;
  }

  if (isSubscribed) {
    pushButton.textContent = 'Disable Push Messaging';
  } else {
    pushButton.textContent = 'Enable Push Messaging';
  }

  pushButton.disabled = false;
}

İzin denied olduğunda kullanıcının abone olamayacağını ve yapabileceğiniz başka bir şeyin olmadığını bildiğinizden düğmeyi en iyi yaklaşım devre dışı bırakmaktır.

Deneyin

Önceki uygulamanız için web uygulamanız için zaten izin verdiğinizden, URL çubuğundaki bir daire içinde i simgesini tıklamanız ve Bildirimler iznini Genel varsayılanı kullan (Sor) olarak değiştirmeniz gerekir.

Bu ayarı değiştirdikten sonra sayfayı yenileyin ve İletişim Mesajını Etkinleştir düğmesini tıklayıp izin iletişim kutusunda Engelle'yi seçin. Düğme devre dışı bırakılır ve Push Mesajlaşma Engellendi metnini gösterir.

Bu değişiklikle birlikte artık olası izin senaryolarıyla ilgilenerek kullanıcıya abone olabilirsiniz.

Kod tamamlandı

Arka ucunuzdan nasıl push mesajı göndereceğinizi öğrenmeden önce, abone olan bir kullanıcı push mesajı aldığında ne olacağını düşünmelisiniz.

Bir push mesajını tetiklediğinizde, tarayıcı push mesajını alır, aktarmanın hangi hizmet çalışanı için olduğunu öğrenir, ilgili hizmet çalışanını uyandırır ve bir push etkinliği gönderir. Bu etkinliği dinlemeniz ve sonuç olarak bir bildirim göstermeniz gerekir.

sw.js dosyanıza aşağıdaki kodu ekleyin:

self.addEventListener('push', function(event) {
  console.log('[Service Worker] Push Received.');
  console.log(`[Service Worker] Push had this data: "${event.data.text()}"`);

  const title = 'Push Codelab';
  const options = {
    body: 'Yay it works.',
    icon: 'images/icon.png',
    badge: 'images/badge.png'
  };

  event.waitUntil(self.registration.showNotification(title, options));
});

Bu kodun üzerinden geçelim. Bir etkinlik işleyici ekleyerek hizmet çalışanınızdaki push etkinliğini dinliyorsunuz:

self.addEventListener('push', ... );

(Web İşçileriyle daha önce oynamadıysanız self muhtemelen yenidir. Bir hizmet çalışanı dosyasında, self servis çalışanının kendisine referans verir.)

Bir push mesajı alındığında etkinlik işleyici aranacak ve hizmet çalışanının registration özelliğinde showNotification() çağrısı yaparak bir bildirim oluşturacaksınız. showNotification() bir title gerektirir. Ayrıca gövde mesajı, simge ve rozet ayarlamak için buna bir options nesnesi de verebilirsiniz. (Rozet, yalnızca yazma sırasında Android'de kullanılır.)

const title = 'Push Codelab';
const options = {
  body: 'Yay it works.',
  icon: 'images/icon.png',
  badge: 'images/badge.png'
};
self.registration.showNotification(title, options);

push etkinliğinizin ele alınması gereken son konu event.waitUntil(). Bu yöntem, iletilen vaat çözüme ulaştırılana kadar tarayıcının hizmet çalışanınızı çalışır durumda tutmasını sağlamak için taahhüt verir.

Yukarıdaki kodu daha kolay anlaşılır hale getirmek için kodu şu şekilde yeniden yazabilirsiniz:

const notificationPromise = self.registration.showNotification(title, options);
event.waitUntil(notificationPromise);

Artık push etkinliğinde ilerlediğinize göre bir push etkinliğini test edelim.

Deneyin

Servis çalışanındaki push etkinliği işleme özelliğiyle, bir mesaj alındığında ne olduğunu test etmek için sahte bir push etkinliği tetikleyebilirsiniz.

Web uygulamanızda push mesajlara abone olun ve konsolda User IS subscribed bölümünü gördüğünüzden emin olun. Geliştirici Araçları'ndaki Uygulama panelinde, Hizmet Çalışanları sekmesinin altında, Aktar düğmesini tıklayın:

Push'u tıkladıktan sonra aşağıdakine benzer bir bildirim görürsünüz:

Not: Bu adım işe yaramazsa Geliştirici Araçları Uygulama panelindeki Kaydı iptal et bağlantısını kullanarak hizmet çalışanınızın kaydını iptal etmeyi deneyin, hizmet çalışanının durdurulmasını bekleyin ve ardından sayfayı yeniden yükleyin.

Kod tamamlandı

Bu bildirimlerden birini tıklarsanız hiçbir şey olmadığını fark edersiniz. Servis çalışanınızda notificationclick etkinliklerini dinleyerek bildirim tıklamalarını yönetebilirsiniz.

sw.js içinde bir notificationclick işleyici ekleyerek başlayın:

self.addEventListener('notificationclick', function(event) {
  console.log('[Service Worker] Notification click received.');

  event.notification.close();

  event.waitUntil(
    clients.openWindow('https://developers.google.com/web')
  );
});

Kullanıcı bildirimi tıkladığında notificationclick etkinlik işleyici çağrılır.

Kod ilk tıklanan bildirimi kapatır:

event.notification.close();

Daha sonra, https://developers.google.com/web URL'sini yükleyen yeni bir pencere veya sekme açılır. Bunu değiştirebilirsiniz.

event.waitUntil(
    clients.openWindow('https://developers.google.com/web/')
  );

event.waitUntil(), yeni pencere veya sekme gösterilmeden önce tarayıcının hizmet çalışanını sonlandırmamasını sağlar.

Deneyin

Geliştirici Araçları'nda bir push mesajını tetiklemeyi tekrar deneyin ve bildirimi tıklayın. Artık bildirimin kapandığını ve yeni bir sekmenin açıldığını göreceksiniz.

Web uygulamanızın Geliştirici Araçları'nı kullanarak bildirim gösterebildiğini ve bildirimi tek tıklamayla nasıl kapatacağınızı incelediğinizi gördünüz. Sonraki adım, gerçek bir push mesajı göndermektir.

Normalde bu işlem bir web sayfasından arka uça abonelik gönderilmesini gerektirir. Arka uç, abonelikteki uç noktaya bir API çağrısı yaparak bir push mesajını tetikler.

Bu codelab'in kapsamı dışındadır, ancak gerçek bir push mesajı tetiklemek için tamamlayıcı siteyi (web-push-codelab.glitch.me) kullanabilirsiniz. Aboneliği sayfanızın altına yapıştırın:

Sonra bunu Alıcıya Gönder metin alanındaki tamamlayıcı siteye yapıştırın:

Gönderilecek Metin'in altında, push mesajıyla göndermek istediğiniz herhangi bir dizeyi ekleyin.

Push iletisi gönder düğmesini tıklayın.

Ardından bir push mesajı alırsınız. Kullandığınız metin konsolda günlüğe kaydedilir.

Bu sayede, veri gönderip almayı test edebilir ve bunun sonucunda bildirimleri manipüle edebilirsiniz.

Tamamlayıcı uygulama, ileti göndermek için web-push kitaplığını kullanan bir düğüm sunucusudur. Sizin için push mesajlarının gönderilebileceği kitaplıkları görmek üzere GitHub'daki web-push-libs kuruluşunu incelemeniz faydalı olacaktır. Bu, push mesajlarını tetiklemek için birçok ayrıntıyı işler.

Tamamlayıcı sitenin kodunun tamamını burada görebilirsiniz.

Kod tamamlandı

Eksik olan bir nokta da kullanıcının push aboneliğinden çıkmasıdır. Bunu yapmak için bir PushSubscription üzerinde unsubscribe() araması yapmanız gerekiyor.

scripts/main.js dosyanızda, initializeUI() ürünündeki pushButton tıklama dinleyicisini aşağıdaki şekilde değiştirin:

pushButton.addEventListener('click', function() {
  pushButton.disabled = true;
  if (isSubscribed) {
    unsubscribeUser();
  } else {
    subscribeUser();
  }
});

Şimdi yeni bir işlev unsubscribeUser() çağıracağınıza dikkat edin. Bu işlevde geçerli aboneliği alır ve unsubscribe() olarak çağırırsınız. scripts/main.js adresine aşağıdaki kodu ekleyin:

function unsubscribeUser() {
  swRegistration.pushManager.getSubscription()
  .then(function(subscription) {
    if (subscription) {
      return subscription.unsubscribe();
    }
  })
  .catch(function(error) {
    console.log('Error unsubscribing', error);
  })
  .then(function() {
    updateSubscriptionOnServer(null);

    console.log('User is unsubscribed.');
    isSubscribed = false;

    updateBtn();
  });
}

Bu işlevi adım adım ele alalım.

İlk olarak, geçerli aboneliği getSubscription() numaralı telefonu arayarak alırsınız:

swRegistration.pushManager.getSubscription()

Bu işlem, varsa PushSubscription ile çözümlenen bir sözü döndürür, aksi takdirde null değerini döndürür. Abonelik varsa abonelik üzerinde unsubscribe() çağrısı yaparsınız. Bu durumda PushSubscription geçersiz olur.

swRegistration.pushManager.getSubscription()
.then(function(subscription) {
  if (subscription) {
    // TODO: Tell application server to delete subscription
    return subscription.unsubscribe();
  }
})
.catch(function(error) {
  console.log('Error unsubscribing', error);
})

unsubscribe() işlevini çağırmak biraz zaman alabileceğinden, bir söz vadede döndürür. sözü vermiş olursunuz. Zincirdeki bir sonraki then() için unsubscribe() kadar beklemeniz gerekir. Ayrıca, unsubscribe() işlevini çağırmanın bir hataya neden olması ihtimaline karşı bir yakalama işleyici de eklersiniz. Bundan sonra, kullanıcı arayüzünüzü güncelleyebilirsiniz.

.then(function() {
  updateSubscriptionOnServer(null);

  console.log('User is unsubscribed.');
  isSubscribed = false;

  updateBtn();
})

Deneyin

Web uygulamanızda Push Mesajlaşmasını Etkinleştir veya Push Mesajlaşmayı Devre Dışı Bırak'a basabiliyor olmanız gerekir. Günlüklerde, abone olan ve abonelikten çıkan kullanıcı gösterilir.

Tebrikler, bu codelab'i tamamladınız.

Bu codelab'de, web uygulamanıza push bildirimleri ekleyerek nasıl çalışmaya başlayacağınızı göstermişsiniz. Web bildirimlerinin neler yapabileceği hakkında daha fazla bilgi edinmek istiyorsanız bu belgelere göz atın.

Sitenizde push bildirimleri dağıtmak istiyorsanız, DASH kullanan eski tarayıcılar veya standartlara uygun olmayan tarayıcılar için destek eklemek isteyebilirsiniz. Daha fazla bilgi

Daha fazla bilgi

Alakalı blog yayınları