2016-03-31 8 views
10

Chcę tylko zapytać, w jaki sposób mogę określano, jakie działania należy zrobić na cichym naciśnięciem:Cicha powiadomień push Ładowność

Jest to aps że wysłałem do klienta:

aps 
{ 
content-available: 1 
} 

mój problem teraz jest, gdy dodaję typ: "Order_Update", aby określić, że ciche pchnięcie jest dla aktualizacji zamówienia, wyświetla powiadomienie o alertach.

Odpowiedz

31

Jest kilka opcji! Zróbmy małą przejażdżkę, aby zrozumieć wszystkie różne ładunki i ich użycie.


Proste Ładowność

Wyświetlane w Centrum Powiadamiania: Tak

Wakes aplikację aby wykonać zadanie tła: nie

{ 
    "aps" : { 
     "alert" : "You received simple notification!", 
     "badge" : 1, 
     "sound" : "default" 
    } 
} 

ładunek z dźwięk powiadomienia klienta

Wyświetlane w Centrum Powiadamiania: Tak

Wakes aplikację aby wykonać zadanie tła: nie

Step 1: Dodaj zwyczaj powiadamiania pliku dźwiękowego (.wav lub tylko .aiff rozszerzeń. na przykład notification.wav) w pakiecie aplikacji.

Step 2: Skonfiguruj swój ładunek, jak pokazano poniżej, aby odtworzyć niestandardowe dźwięk

{ 
    "aps" : { 
     "alert" : "It's a custom notification sound!", 
     "badge" : 1, 
     "sound" : "notification.wav" 
    } 
} 

Powiadomienie z niestandardowymi Payload

wyświetlanego w centrum powiadomień: Tak

Wakes aplikację Wykonaj zadanie w tle: nr

{ 
    "aps" : { 
     "alert" : "It's a notification with custom payload!", 
     "badge" : 1, 
     "content-available" : 0   
    }, 
    "data" :{ 
     "title" : "Game Request", 
     "body" : "Bob wants to play poker", 
     "action-loc-key" : "PLAY" 
    }, 

} 

W tym miejscu słownik data przechowuje niestandardowe informacje, jakie tylko chcesz. Będzie również wyświetlać się jako zwykłe powiadomienie z komunikatem "Jest to powiadomienie z niestandardowym ładunkiem!".


Normal Cichy Powiadomienie

Nie będzie pokaz alert jako pasku powiadomień; powiadomi twoją aplikację tylko o dostępności nowych danych, zachęcając aplikację do pobrania nowej treści.

wyświetlane w centrum powiadomień: Nie

Awake aplikacja do wykonywania zadania w tle: Tak

{ 
    "content-available" : 1 
} 

cichy Powiadomienie z niestandardowymi Payload

Nadchodzi magii pokazać powiadomienie powiadomienie, a także obudzić aplikację w tle dla zadania! (Uwaga: tylko jeśli działa w tle i nie został zabity jawnie przez użytkownika.) Wystarczy dodać dodatkowy parametr "content-available" : 1 do swojej ładowności.

Wyświetlane w Centrum Powiadamiania: Tak

Wakes aplikację do wykonania zadania w tle: Tak

{ 
    "aps" : { 
     "alert" : "Notification with custom payload!", 
     "badge" : 1, 
     "content-available" : 1 
    }, 
    "data" :{ 
     "title" : "Game Request", 
     "body" : "Bob wants to play poker", 
     "action-loc-key" : "PLAY" 
    } 
} 

użyć dowolnego z tych ładunków w zależności od wymagań aplikacji. Dla background app refresh patrz Apple's documentation. Mam nadzieję, że dostarczy Ci wszystkich niezbędnych informacji. Szczęśliwe kodowanie :)

+0

Świetna odpowiedź, ale myślę, że tęsknię za parametrem danych w sekcji Powiadomienia z niestandardową ładownością. –

+0

Dzięki @LiborZapletal za notowanie, mam zaktualizowaną odpowiedź. –

+2

Zgodnie z dokumentacją firmy Apple "treść dostępna" musi znajdować się w "aps". Https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW1 Dlaczego używasz go poza "aps"? – makkasi

0

Jak rozumiem, chcesz dodatkowe dane wewnątrz ładunku, dzięki czemu można określić, jaki typ powiadomienia push jest lub jakie działania należy podjąć.

Z tego zmieniać swoich ładowność jak:

Następnie w kodzie iOS:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 


    NSString *action = userInfo["action"]; 


    if([userInfo[@"aps"][@"content-available"] intValue]== 1 && [action isEqualToString:@"order_update") //order update notification 
    { 
     //handle Your Action here 
     return; 
    } 


} 

nadzieję, że to rozwiąże problem!