У тебя крушение.Как разработчик важно прочитать это.Вы можете или понимать это или нет, но вы, конечно, можете искать это, и это вполне известно.Это основное сообщение о сбое, которое должен знать любой разработчик iOS.Если вы этого не сделаете, поделитесь им с нами.Вы получите больше шансов получить ответы.
Самая важная часть:
-[__NSCFConstantString objectForKey:]: unrecognized selector sent to instance 0x100002090
Это означает, что вы пытаетесь вызвать метод objectForKey:
для объекта NSString
,NSString
не знает этого, и поэтому он аварийно завершает работу.
Значение ключа gcm.notification.data
является строковым JSON.
Так что [userInfo objectForKey:@"gcm.notification.data"];
на самом деле NSString
не NSDictionary
.
Давайте исправим это сейчас:
//Creation of the sample for the sake of the test
NSDictionary *userInfo = @{@"gcm.notification.data": @"{\"request\":\"update_location\",\"latitude\":\"45.48945419494574\",\"customMessage\":{\"loc-args\":[\"iPhone di Tester\"],\"loc-key\":\"LOCATION_CHECKIN\"},\"type\":\"checkin\",\"message\":\"Ggg\",\"longitude\":\"9.195329826333742\",\"child\":{\"name\":\"iPhone di Tester\",\"pid\":\"C312EDDC-E8A8-4EFC-9E65-957BE5DAC5FC\"}}"};
//Parsing
NSString *gcmNotificationJSONString = [userInfo objectForKey:@"gcm.notification.data"];
NSData *gcmNotificationJSONData = [gcmNotificationJSONString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *gcmNotification = [NSJSONSerialization JSONObjectWithData:gcmNotificationJSONData options:0 error:nil];
NSString *request = [gcmNotification objectForKey:@"request"];
NSLog(@"Request: %@", request);
Примечание: я удалил часть «dat» имен переменных, которую вы использовали, потому что ключ заканчивается на «data»"не путать NSString
, NSData
и NSDictionary
, как я явно назвал их из класса.Я неправильно набираю класс в комментарии, будьте осторожны и исправьте его из кода здесь.