Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
+1 oy
585 kez görüntülendi
ios development kategorisinde tarafından

Swift'de uygulamamın yollayacağım uzaktan bildirimleri almasını istiyorum ne yapmalıyım?

1 cevap

+2 oy
tarafından
 
En İyi Cevap

öncelikle proje dosyanız içerisinde yer alan AppDelegate içerisinde yer alan "application:didFinishLaunchingWithOptions" methodu içerisinde uygulamanızı uzaktan bildirimleri alabilmesi için register etmelisiniz.
ios 8 'den itibaren "registerForRemoteNotificationTypes" methodu deprecated olacak bu nedenle hem eski ios versionlarında hem de ios8 üstü versiyonlarda uygulamanızın çökmesini engellemek için cihaz ios version kontrolü yapmalısınız.
ios8 ve sonrası sürümlerde remoteNotification register etmek için "registerUserNotificationSettings" methodunu kullanacağız.

öncelikle düzgün bir şekilde ios versiyonumuzu kontrol edebileceğimiz bir method yazalım:

func SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(version: NSString) -> Bool {
        return UIDevice.currentDevice().systemVersion.compare(version,
            options: NSStringCompareOptions.NumericSearch) != NSComparisonResult.OrderedAscending
    } 

şimdi sıra geldi "application:didFinishLaunchingWithOptions" methodu içerisinde uygulamamızı remoteNotification'lar için register etmeye:

let application:UIApplication = UIApplication.sharedApplication()
        if SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO("8.0.0") {
            application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: (.Badge | .Sound | .Alert), categories: nil));
            application.registerForRemoteNotifications()
        } else {
            application.registerForRemoteNotificationTypes(UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound | UIRemoteNotificationType.Alert)
        }

evet, yukarıdaki örnekte de gördüğünüz gibi öncelikle eski ios versiyonlarında sorunsuz çalışması için SYSTEMVERSIONGREATERTHANOREQUALTO methodumuzla versiyon kontrolümüzü yapıyoruz ve ios8 ve sonrası versiyonlarda "registerUserNotificationSettings" methoduyla uygulamamızın badge, ses, ve alert remoteNotification'larını alabilmesi için register ediyoruz.
ios8 öncesi ios versiyonlarındaysa eski register methodu olan "registerForRemoteNotificationTypes" methodunu kullanıyoruz ve yine aynı şekilde uygulamanın badge, ses, ve alert remoteNotification'larını alabilmesi için register ediyoruz.
yukarıda da belirttiğim gibi ios8 sonrası deprecated olan "registerForRemoteNotificationTypes" methodunun ios8 yüklü cihazlarda uygulamamızın çökmesine neden olmasını engellemek için versiyon kontrolu yapmamız şart.

...