2012-09-09 20 views
5

için soran iletişim kutusunu görüp görmediğini nasıl belirleyebilirim enableremotenotificationtypes olduğunun farkındayım, ancak bu özellik bana yardımcı olmuyor çünkü etkinleştirilmişseçenotelikselyotipler == UIRemoteNotificationTypeNone alırsam, benim için bir yol yok. Kullanıcının 1 kez push bildirimlerini kabul ettiğini, ancak daha sonra ya da daha sonra ayarlayarak bunu kapattığını söyleyin VEYA 2. reddedilen push bildirimleri VEYA 3. 3. mavi ekranın iznini istemediğini görün. Bu üç vakayı ayırt etmenin bir yoluna ihtiyacım var.Bir kullanıcının, iletme izni (ios)

Herhangi bir yardım gerçekten takdir edilecektir.

+0

, iOS 6 için Değişiklikleri gösteren okuyunuz Bence sen cevabı bulacaktır. –

+1

ayrıntılı olabilir misiniz lütfen? – user1657624

+2

developer.apple.com adresine gidin. IOS 6 beta sayfasına gidin. Değişiklikleri oku. Lisans anlaşması nedeniyle burada detay veremem. –

cevap

-3

Bu tür bir durumla uğraşma şeklim budur - yeni bir kullanıcıyım, bu yüzden bu optimal değil, ama benim için çalışıyor. Bir int özelliği pushNotificationSeen oluşturun. Kullanıcı diyaloğu görürse ve reddederse, pushNotificationSeen değerini 1 olarak ayarlayın. Eğer kullanıcı diyalogu görür ve kabul ederse, pushNotificationSeen değerini 2 olarak ayarlayın. Sonra, bir sonraki kod satırında, bu gibi bir işlevi çağırın (kodun başka bir yerinde tanımlanmış)):

-(void)saveData 
{ 
if (self.pushNotificationSeen) 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setInteger:self.pushNotificationSeen forKey:@"seen?"]; 
    [defaults synchronize]; 
} 
} 

sonra viewDidLoad şu satırları ekleyin. Bu noktada
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
self.pushNotificationSeen = [defaults integerForKey:@"seen?"]; 

, kullanıcı varsa veya self.pushNotificationSeen 0 olsun, 1 kontrol ederek yapmadı ya

2. Bu yeterli bilgi umut anlayana - Çok fazla uyumamıyorum. Kafam karıştıysa, lütfen bana bildirin ve açıklığa kavuşabilirim.

+0

Sorun şu ki: push bildiriminin ne zaman göründüğünü nasıl öğrenebilirim? – Marty

+0

Kullanıcıya izin verilmiş olup olmadığını nasıl anlarsınız? Hiçbir iletişim gösterilmese bile – Andy

1

Çözüm bir kesmek biraz, ama işe yarıyor. bakılmaksızın (UIUserNotificationSettings *) uygulaması temsilci notificationSettings yöntemle iki kez adı verilecek ve:

//Request notification permission 
UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]; 
[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings]; 

//Request notification permission again, but with a category with no actions 
UIMutableUserNotificationCategory *category = [[UIMutableUserNotificationCategory alloc] init]; 
category.identifier = @"com.xyz.markNotificationPopupShownCategoryIdentifier"; 

UIUserNotificationSettings *notificationSettingsWithCategory = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:[NSSet setWithObject:category]]; 
[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettingsWithCategory]; 

didRegisterUserNotificationSettings: Bir notificationCategory olmadan diğeri bir notificationCategory ile tek - İki farklı notificationSettings için registerUserNotificationSettings çağırmanız gerekir Kullanıcının ikinci kez yapılan çağrıdan sonra gelen izin bildirimi, mevcut bildirim ayarları kategoriyi içerecektir. Sürece kategori sayısı 0'dan büyük olduğu için, bildirimler izni iletişim gösterilmiştir kesin olarak bilebilir: Bir iOS geliştirici sertifikanız varsa

if ([UIApplication sharedApplication].currentUserNotificationSettings.categories.count > 0) { 
    NSLog(@"Notifications permissions has been asked"); 
} else { 
    NSLog(@"Notifications permissions hasn't been asked"); 
} 
+0

Benim için 1 döndürür –