2014-11-03 12 views
9

Mam aplikację, która korzysta z lokalnych powiadomień i ti, która działała dobrze w poprzednich wersjach. Zaktualizowałem aplikację na iOS 8 i przetestowałem ją i działałem dobrze. Po przesłaniu aktualizacji do sklepu z aplikacjami niewielka liczba użytkowników skarży się, że nie otrzymała żadnych lokalnych powiadomień. Jednak większa liczba użytkowników, które sprawdziłem, jest w porządku i nie obserwuje żadnych problemów.Lokalne powiadomienia nie działają dla niektórych użytkowników (iOS 8)

Dla użytkowników z błędem (co najmniej jeden z nich) nie widzą elementu "Powiadomienia" na ekranie "Ustawienia-> mojaAplikacja"; Brakuje całej opcji, a nie jej wyłączenia. "Lokalizacja" i "Użyj danych komórkowych" są na tym ekranie, ale nie Powiadomienia. Próbowałem zmienić ustawienia w "Ustawienia-> Powiadomienia-> mojaAplikacja" i działa zgodnie z oczekiwaniami.

Wszelkie sugestie dotyczące debugowania tego problemu byłyby bardzo pomocne. Dzięki!

+0

sam problem: http://stackoverflow.com/questions/20180806/app-with-local-notifications-not-appearing-in-notification-center-list-in-settin?rq=1 – Mikrasya

+0

samo issue (another): http://stackoverflow.com/questions/25827650/app-from-app-store-doesnt-show-up-for-all-users-under-notification-center-loca?rq=1 – Mikrasya

+1

I mają ten sam problem. Cieszę się, że nie jestem sama. Mam nadzieję, że ktoś wkrótce znajdzie odpowiedź. – dadThrowsBolts

Odpowiedz

8

Spróbuj tego dla Objective-C:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions 
{ 
// are you running on iOS8? 
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) 
    { 
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge|UIUserNotificationTypeAlert|UIUserNotificationTypeSound) categories:nil]; 
    [application registerUserNotificationSettings:settings]; 
    } 
else // iOS 7 or earlier 
    { 
    UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound; 
    [application registerForRemoteNotificationTypes:myTypes]; 
    } 
} 

Dla Swift:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 
// Override point for customization after application launch. 
if(UIApplication.instancesRespondToSelector(Selector("registerUserNotificationSettings:"))) 
{ 
    application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil)) 
} 
else 
{ 
    // 
} 
return true 
} 
+2

Dzięki. Wybrałem to jako poprawną odpowiedź, ponieważ to była pierwsza odpowiedź. Zanim te odpowiedzi zostaną opublikowane, zaimplementowałem ten sam kod (registerUserNotificationSettings) i poprosiłem jednego z moich użytkowników, aby przetestował przy użyciu testów Ad-hoc i potwierdził, że problem został rozwiązany. ** W systemie iOS 8 wymagane są także lokalne powiadomienia **. – Mikrasya

1

najpierw trzeba się zarejestrować, aby korzystać z lokalnych powiadomienia push

UIApplication *application = [UIApplication sharedApplication]; 
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { 
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]]; 
} 

następnie można wysłać lokalny powiadomienia wypychania przez ten

UILocalNotification *notification = [UILocalNotification new]; 
notification.alertBody = @"Local Push !!!"; 
notification.applicationIconBadgeNumber=1; 
[[UIApplication sharedApplication] presentLocalNotificationNow:notification]; 
0
void EnableLocalNotificationIOS8 
{ 
    UIApplication *app = [UIApplication sharedApplication]; 

    if ([app respondsToSelector:@selector(registerUserNotificationSettings:)]) 
    { 
     UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]; 
     [app registerUserNotificationSettings:settings]; 
     [app registerForRemoteNotifications]; 
    } 
} 
Powiązane problemy