Po otrzymaniu zdalnego powiadomienia wypychania, ponieważ aplikacja jest w tle, aplikacja wchodzi do aplikacjiDidBecomeActive. W jaki sposób mogę uzyskać dostęp do NSDictionary danych z powiadomienia?Jak uzyskać dostęp do danych zdalnego powiadamiania push na applicationDidBecomeActive?
Odpowiedz
Dane powiadomienia są dostarczane do Twojej aplikacji pod numerem application:didReceiveRemoteNotification:
. Jeśli chcesz przetworzyć go w applicationDidBecomeActive:
, powinieneś go zapisać w application:didReceiveRemoteNotification:
i przeczytać ponownie w applicationDidBecomeActive
.
Jeśli aplikacja jest w stanie background
, gdy powiadomienie push jest odbierane i stukane, aplikacja zostanie wywołana za pomocą application:didFinishLaunchingWithOptions:
, a nie application:didReceiveRemoteNotification:
.
Nośnik powiadomienia push jest dostępny w słowniku application:didFinishLaunchingWithOptions:
ze słownika .
To nie jest poprawna aplikacja: didFinishLaunchingWithOptions: nie jest wywoływana, gdy aplikacja działa w tle, jest ona wywoływana tylko podczas uruchamiania aplikacji. to, co mówisz, jest całkowicie przeciwne, najpierw będzie nazywane aplikacją: didReceiveRemoteNotification: a następnie applicationDidBecomeActive: –
używam tego kodu do zarządzania push:
W AppDelegate
@implementation AppDelegate{
NSDictionary *dUserInfo; //To storage the push data
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Check for options
if (launchOptions != nil)
{
//Store the data from the push.
dUserInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dUserInfo != nil)
{
//Do whatever you need
}
}
return YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
//Data from the push.
if (dUserInfo != nil)
{
//Do whatever you need
}
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
//Store the data from the push.
if (userInfo != nil)
{
dUserInfo = userInfo;
}
}
Mam nadzieję, że będzie to przydatne dla kogoś.
Szczęśliwe kodowanie.
wersja Swift:
var dUserInfo: [NSObject : AnyObject]?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// code...
if let info = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [NSObject : AnyObject] {
dUserInfo = info
}
return true
}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
dUserInfo = userInfo
}
func applicationDidBecomeActive(application: UIApplication) {
// code...
self.yourAction(dUserInfo)
}
func yourAction(userInfo: [NSObject : AnyObject]?) {
if let info = userInfo?["aps"] as? Dictionary<String, AnyObject> {
}
}
- 1. Swift czytać userinfo zdalnego powiadamiania
- 2. Jabłko Usługa powiadamiania push
- 3. push lokalnej bazy danych PostgreSQL do zdalnego serwera Heroku
- 4. iOS powiadomień Push - Jak uzyskać dane z powiadomieniem po kliknięciu na ikonę aplikacji zamiast powiadomienia
- 5. jak uzyskać dostęp do wewnętrznych danych jquery?
- 6. git push NOT aktualna gałąź do zdalnego
- 7. Jak uzyskać dostęp do modeli danych z widokiem na backbone.js
- 8. Skrypt Bash do powiadamiania, gdy dostęp do Internetu jest
- 9. Czy istnieje sposób, aby programowo wyrejestrować urządzenie do powiadamiania push?
- 10. Minimalna wersja Usług Google Play do powiadamiania push
- 11. Google App Engine próbuje uzyskać dostęp do danych dewelopera
- 12. Czy istnieje usługa powiadamiania push w systemie Android, na przykład usługa powiadomień Apple Push?
- 13. Test zdalnego dostępu do bazy danych Host
- 14. Jak uzyskać dostęp do aplikacji?
- 15. Jak uzyskać dostęp do danych postów z gry scala?
- 16. Jak uzyskać dostęp do zebranych danych zdarzenia FullCalendar jQuery?
- 17. Jak mogę programowo uzyskać dostęp do danych użytkowania funkcji Azure?
- 18. jak uzyskać dostęp do danych formularza za pomocą kolby?
- 19. Jak uzyskać dostęp do magazynu danych Ember z konsoli?
- 20. Jak programowo uzyskać dostęp do szczegółów szczegółów wiersza danych datagrid
- 21. Jak uzyskać dostęp do danych za pomocą atrybutu jQuery
- 22. Jak uzyskać dostęp do GetGlobalResourceObject()
- 23. Jak uzyskać dostęp do RouteTable.Routes.MapHttpRoute?
- 24. Jak uzyskać dostęp do danych o przesunięciu rejestru w gdb?
- 25. Jak uzyskać dostęp do katalogu danych JBoss z poziomu aplikacji?
- 26. Jak uzyskać dostęp do danych konfiguracyjnych Phalcon w zewnętrznej bibliotece?
- 27. Jak uzyskać dostęp do dwóch baz danych w Grails
- 28. Jak uzyskać dostęp do pliku * .mv.db bazy danych H2?
- 29. jak uzyskać dostęp do obiektu ModelAndView na stronie jsp.
- 30. Jak uzyskać dostęp do phpmyadmin na Amazon RDS Database
Niestety ożywić to, ale co się stanie, gdy pojawi się powiadomienie w aplikacji: didReceiveRemoteNotification i aplikacja jest na pierwszym planie, co oznacza applicationDidBecomeActive nie zostanie wywołana. –
W 'application: didReceiveRemoteNotification:' możesz zapytać '- [UIApplication applicationState]', aby dowiedzieć się, czy twoja aplikacja jest już na pierwszym planie. Jeśli jest to po prostu przetwarzaj powiadomienia od razu. –