2016-01-05 29 views
11

Android cihazlarla GCM'yi kullanmayı başardım, ancak şimdi bir iOS uygulamasında uygulamaya çalışıyorum.Xcode 7 ve iOS 9 ile Google Cloud Messaging

GCM hizmetini kullanabilmek için gerekli tüm adımları izledim. Hizmeti mevcut bir uygulamaya eklemek için https://developers.google.com/cloud-messaging/ios/client?configured=true'u takip ettim.

Her şeyin doğru yapılandırıldığını düşünüyorum, ancak herhangi bir bildirim alamıyorum. APN sertifikaları ve GoogleService-info.plist dosyası var, konsolda bu çıktı:

2016-01-05 13: 47: 53.864: GCM | Checkin plist içinde geçersiz anahtar: GMSInstanceIDDeviceDataVersion GCM'ye bağlandı 2016-01-05 13: 47: 57.501: GGLInstanceID | Gelecekte geçersiz son kontrol zaman damgası. 2016/01/05 13: 47: 57,501 TerneraGallega [1014: 444.977] authId ile Tarihi, başarılı: 4958686017822257121 sindirimi: KSJNg + Aj82uavBXrFeOAfA == lastCheckinTimestamp: 1451998077000 Kayıt Simgesi: nC-dd9fCvFs: APA91bHMfbvLczxSPLQsLeEJASU_RfV4wvVuPs2u4VJDtpC8oB2cm1AKr6cH_LFeLsQzb94Kk9iwez8fsOvgzNns_9DU3i8Ema1oCKIwcNFzenNpAhViyGHah4E7-RkQlg1durYSEQRD Zaten abone

{ "den": "NC-dd9fCvFs: APA91bHMfbvLczxSPLQsLeEJASU_RfV4wvVuPs2u4VJDtp En kısa zamanda bir POST isteği yaptıysanız bunu aldıktan küresel/konular/

C8oB2cm1AKr6cH_LFeLsQzb94Kk9iwez8fsOvgzNns_9DU3i8Ema1oCKIwcNFzenNpAhViyGHah4E7-RkQlg1durYSEQRD", "content_available": true, "bildirim": { "beden": "büyük maç", "başlığı!": "Portekiz Danimarka vs" } }

bir başarı mesajı ancak hiçbir günlüğünü ne de bildirim döndürülen ilk denemesi şimdi

bir hata döndürür POST isteğinin bir başka denemede, birkaç dakika sonra

(ön planda uygulama ile) cihazında gösterilir, "başarılı":

{ "multicast_id" 0, "başarısız": 1, "canonical_ids": 0, "sonuç": [ { "hata": "NotRegistered" } ] Şimdi }

, ben, Google sayfasından GCM Örnek indirilen APN yapılandırılmış ve ayrıca GoogleService-info.plist var, açılır olarak GCM Örnek Swift kısa sürede dosyasını başlatırken cihaz diyor ki:

Kayıt Başarılı! Kullanabileceğiniz kayıt kodunu değiştirmek için xcode hata ayıklama konsolunu kontrol edin ...Bundan sonra

, sen

{ "den" ile POST isteği ayarlarsanız: "content_available": "mVEtHyTXEOg APA91bGvK_Uf2ZKgpguWUOto3CXQzIT1z22uJ446mYkNqMwL9VLDYdGtdm_4vS8rcl3T9OeqEC1UWbdKAOyuoweW1GiU0mv0cDSPW03y4XGx19JcR6rxsiWRNUjtADX6iNAW8wM8UBJl",: true, "bildirim": { "beden ":" büyük eşleşme! ", " title ":" Portekiz vs. Danimarka " } }

yine bir

{ "multicast_id" olarak geri dönmektedir: 7435981433811133310, "başarılı": 0, "başarısız": 1, "canonical_ids": 0, "sonuç": [ { "hata": "NotRegistered" } ] }

bir uygulamayı GCM uygulamıştır birisi beni ne I işaret olabilir Can eksik mi?

------- DÜZENLEME -------

Sonunda bunun yerine bir gelişme belgesinin bir dağıtım sertifikası kullanılarak çalışması yaptık ... ben var gibi görünüyor Tüm iyi yapılandırılmış ama geliştirme sertifikası ile bir şey eksik.

Not: Kimliği altında APN Profil sayfasında ben

Ama kullanamıyor çünkü ben açık bu soruyu bırakacağım (Ben her şeyi yapılandırılmış iyi olduğunu düşündüm bu yüzden) hem Push bildirim sertifikalarını sağladı Bu, geliştirme koşullarında

+0

[document] öğesini kontrol edebilirsiniz (https: //developers.google.c "NotRegistered" hatasının olası nedenleri için om/cloud-mesajlaşma/http # yanıtı). Diyor ki: "NotRegistered" ise, uygulama kimliğini cihazdan kaldırıldığı veya istemci uygulamasının iletileri almak için yapılandırılmadığı için sunucu kimliğinizden kayıt kimliğini kaldırmanız gerekir. " – gerardnimo

+0

Hi @gerardnimo, evet, bu hata, uygulama o kullanıcı için artık mevcut olmadığı (ancak belirli bir doğru değil) ancak belirteci kaydetmediğim için belirteci kaldırmanız gerektiği anlamına gelir, sistemin ilk çalıştırılmasını istiyorum ..:( – neteot

cevap

1

Sertifikalarla uğraşmadan düzenlemenizdeki düzeltmeyle aynı şeyi etkin bir şekilde gerçekleştirebildim. Açıkçası bu, her şey kurulumuna sahipseniz ve hem geliştirme hem de üretim ortamlarını kullanıyor olmanız durumunda işe yaramaz, ancak geliştirme aşamasındaysanız, değiştirmek için yeterince kolaydır. GCM örnek projede

uygulamada (amaç-c için)

: Ben bu tam bir gerçek değil anlıyorum

_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken, 
          kGGLInstanceIDAPNSServerTypeSandboxOption:@YES}; 

_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken, 
          kGGLInstanceIDAPNSServerTypeSandboxOption:@NO}; 

için: didRegisterForRemoteNotificationsWithDeviceToken ben sadece kod değişti düzeltmek, ancak en azından herhangi bir sertifika değiştirmeden çalışmasını sağladı (üretim sertifikası ayarlandığı sürece.

+0

Merhaba @jrobe evet, aslında hızlı 2'de GCM ile üretim sertifikasını kullanmak istiyorsanız, "kGGLInstanceIDAPNSServerTypeSandboxOption = false" değerini ayarlamanız gerekir, eğer her zaman "{NotRegistered}" ifadesini alırsınız ama bayrak sertifikasını doğru olarak ayarladım (ama hala işe yaramadı) – neteot