İOS'ta APNS Aygıt belirteci almıyorum 13


14

APNS aygıt belirteciyle ilgili sorunum var. Xcode 10.2 ve iOS 12.1'i kullanmadan önce. Şu anda delege yönteminde cihaz belirtecini alırdım

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

Ben böyle APNS için kayıt ve iyi çalışıyordu.

UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = self;
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
                if(!error){
                    [[UIApplication sharedApplication] registerForRemoteNotifications];
                }
    }];

Şimdi iOS 13'ü iPhone cihazıma yüklediğimde ve Xcode 11 kullanırken, didRegisterForRemoteNotificationsWithDeviceToken temsilci yöntemi çağrılmadı. Bu sorun anlaşılamıyor. Zaten bu konuda araştırma yaptım, delege yönteminden belirteç alma bazı değişiklikler olduğunu biliyorum ama benim durumumda delege yöntemi bile çağrılmaz. Yine iOS 12 için iyi çalışıyor.


Şimdi çözüldü. Geliştirici portalından Xcode 11 için tüm sertifikaları oluşturmak zorunda kaldı ve çalıştı.
IOS Dev

@IOSDev Lütfen ne yaptığınızı belgeleyin. Şimdi aynı şeyle karşılaşıyorum; Burada olması gereken iyi bir karma var.
Darren Black

1
Bunun için bir çözüm buldunuz mu? aynı sorunla koşuyorum.
Aman.Samghani

1
@ Aman.Samghani: EVET, Push Notification için uyarı oluşturulduğunda ilk kez gelmiyor. Yine aynı Push Bildirim kaydı kodunu çağırmak zorunda kaldı sonra cihaz belirteci var. Bu yüzden iki kez veya üç kez denemeliyim.
IOS Dev

Yanıtlar:


14

İPhone'unuzu yeniden başlatın. Bu kadar basit ve vakaların% 90'ında sorununuzu çözecek.


1
Keşke daha önce bu yorumu okudum. Hata ayıklamak ve profil vb çılgınca bakmak için 5hours ++ boşa
zuyao88

1
Benim için çalış, iOS 13.3.1
Jhonattan

Bu garip bir şey, neyin yanlış olduğunu bulmak için 3 saat geçirdim,
fakiho

2

Https://appleid.apple.com/ adresinde oturum açın, ardından " https://developer.apple.com/account/ios/identifier/bundle " veya " https://developer.apple.com/account/resources " adresini açın. / sertifikalar / liste ".

İlk olarak, iki Yeni Sertifika oluşturun: (1) iOS, macOS, tvOS ve watchOS uygulamalarınızın Apple Development Sign geliştirme sürümleri. Xcode 11 veya sonraki sürümlerde kullanım için. (2) Apple Dağıtımı Uygulamalarınızı App Store'a göndermek veya Geçici dağıtım için imzalamak. Xcode 11 veya üstü ile kullanım için.

Sonra " https://developer.apple.com/account/resources/identifiers/list " adresinden " Tanımlayıcılar" menüsünü bulun . Uygulamanızın Tanımlayıcılarını düzenleyin, Anlık Bildirimlere Geliştirme SSL Sertifikası ve Üretim SSL Sertifikası'nın eklendiğinden emin olun.

Ardından, " https://developer.apple.com/account/resources/profiles/list " adresinden " Profiller" menüsünü açın . Xcode 11 veya sonraki sürümlerde kullanılacak Dağıtım türü olarak Sertifikaların olduğundan emin olun ve kaydedin

Son olarak, dosyaları ayrı olarak çift tıklatarak XCode ve anahtar zinciri uygulamasına eklenecek Temel Hazırlık Profili dosyasını ve MAC'nize oluşturulan CA Sertifikaları dosyalarını indirin.

Dahası, cep telefonunuzu yeniden başlatmayı unutmayın ve uzaktan bildirimi doğru şekilde ayarladığınızdan emin olun.


1

Aynı problemle de karşılaştım. Birçok senaryo denedim. Aşağıdaki adımları uyguladıktan sonra başarılı oldum:

  1. Yeniden başlatılan cihaz
  2. Adlandırılan registerForRemoteNotifications ana iplik yöntemi.

Benim durumumda, bir cihaz belirteci alıyordum, ancak yanıtta bir gecikme var (arka plan iş parçacığında uzaktan bildirimlerin kaydedilmesi nedeniyle düşünüyorum). Ancak [[UIApplication sharedApplication] registerForRemoteNotifications]ana iş parçacığına geçtikten sonra , her şey iyi çalışıyor.

İşte benim kod:

    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = delegate;
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
        if(!error){
            dispatch_async(dispatch_get_main_queue(), ^{
                [[UIApplication sharedApplication] registerForRemoteNotifications];
                [self callCompletion:TRUE completion:completion];
            });
        }
    }];

Umarım bu yardımcı olur.


hiç çalışmıyor
Vyachaslav Gerchicov

0

Aşağıdaki adımları izleyerek bu sorunu bu şekilde çözdüm.

DidRegisterForRemoteNotificationsWithDeviceToken yönteminde bir miktar baskı ekleyin ve aygıtları bağlı tutun.

  1. Hedef yeteneklere gitti.
  2. Anlık Bildirimi Kapatma
  3. Uygulamayı cihazda oluşturun ve çalıştırın ve bekleyin.
  4. Ardından, Başarısız push bildirimi hata mesajı aldığınız konsolu kontrol edin.
  5. Uygulamayı çalıştırmayı durdurun.
  6. Anlık Bildirimi tekrar açın.
  7. Goto https://developer.apple.com/ Hesap seçin -> Sertifikalar, Tanımlayıcılarını & proje ProvisionalProfiles seçin -> Tuşlar -> üzerine biraz o indirme provisonal profil ve çift tıklama sonra düzenlemek ve tasarruf tıklayın.
  8. Uygulamayı cihazda oluşturun ve çalıştırın.
  9. Sonra iyi çalışıyor.

    Umarım bu birine yardım eder.


-2

Dağıtım aygıtınız tarafından kullanılan platform sürümü için XCode kurulumunuzda eksik olan DeviceSupport ile ilgilidir.

Benim durumumda, 13.1 platformu eksikti. Çözmek için DeviceSupports'u klasöre ekleyin

Xcode.app/Contents/Develper/Platforms/iPhoneOS.platform/DeviceSupport

Eksik DeviceSupport'u şu adresten indirebilirsiniz: https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport


@ Giuseppe hayır şans, hatta 12.4.2 için çalışmıyor
IOS Dev

Şimdi çözüldü. Xcode 11 için tüm sertifikaları oluşturmak zorunda kaldı ve çalıştı.
IOS Dev

Her iki sertifikayı da oluşturdum ancak hala çalışmıyor. Ayrıca DeviceSupports'u kontrol ettim ve 13.1 orada. İOS 11.1 ile xcode 11.1 kullanıyorum ve iphone 7 üzerinde test yapıyorum. Herhangi bir öneri?
Ugo Chirico

1
Arka plan modlarını ekledim: getirme, işleme ve uzaktan bildirim, iphone'umu yeniden başlattım ve işe yaradı. Gerçekten neden anlamıyorum ama şimdi çalışıyor
Ugo Chirico

Simülatör için cihaz desteği gerçek bir cihazla ilgili bir soruna nasıl aittir?
Vyachaslav Gerchicov

-2

Bunu dene.

  1. Uygulamanızı kaldırın.
  2. Telefonunuzu yeniden başlatın.
  3. Cihazınızda Oluşturun ve Çalıştırın (uygulamanızı yeniden yükleyin).

Benim için çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.