Я пробовал все, чтобы это исправить. Я получаю уведомление, когда приложение закрыто с двумя настраиваемыми элементами, типом и идентификатором. Предполагается, что тип скажет мне, какой вид загрузки загрузить, а id должен сообщать приложению, какую строку нужно получить из базы данных. Я иду через ад, пытаясь понять это.Приложение didreceiveRemoteNotification и переход к определенному виду
Мне нужно нажать на уведомление и взять его в соответствующую запись. До сих пор я был почти успешным с двумя разными методами, которые я опишу ниже.
Я хотел бы также отметить, что я знаю, что полезная нагрузка правильно работает с APNS как я отлажена до смерти :)
Первое, что я попытался было следующим:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSString *itemType = [[userInfo objectForKey:@"T"] description];
NSString *itemId = [[userInfo objectForKey:@"ID"] description];
self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// type 1 = call, type 2 = contact
if ([itemType isEqual: @"1"]) {
Leads_CallsDetailViewController *callView = [[Leads_CallsDetailViewController alloc] init];
[callView displayItem:itemId];
[self.window addSubview:callView.view];
[self.window makeKeyAndVisible];
} else if([itemType isEqual: @"2"]) {
Leads_ContactsDetailViewController *contactView = [[Leads_ContactsDetailViewController alloc] init];
[contactView displayItem:itemId];
[self.window addSubview:contactView.view];
[self.window makeKeyAndVisible];
}
}
С этот, у меня есть метод на подробных представлениях, называемых displayItem, которые я собираюсь использовать для получения данных из api, а затем отображать его. Это что-то делало, но это выглядело так, будто представление никогда не загружалось. У меня есть scrollview и различные кнопки на странице, но все, что когда-либо загружалось из addSubview, было фоновым изображением. На самом деле ничего не случилось, чтобы полностью загрузить представление. Я не был уверен, как с этим справиться.
Вторая вещь, которую я попытался было идти прямо к виду, как это:
NSString *storyboardId = @"Leads_Calls_SB";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:storyboardId];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = initViewController;
[self.window makeKeyAndVisible];
Это один, кажется, загрузить работу и вид красивый, глядя с двумя основными предостережений. 1. Я не уверен, как передавать данные на него, и 2. Мне это не понравилось, когда я пытался отскочить назад, и он также рассердился, когда я пытался отступить оттуда, почти так же, как если бы не было навигации контроллер для представления, хотя все приложение встроено в контроллер навигации.
Большое спасибо за помощь. Если кто-нибудь поможет мне понять это, я буду вам признателен.
Круто. Я буду работать над этим завтра, и у меня был еще один вопрос. Я пытался читать в NSNotificationCenter, и я смущен относительно того, что именно это делает. Когда я нажимаю на уведомление, я хочу создать центр уведомлений с именем notificationReceived правильно? Затем оттуда я создаю слушателя на моем подробном представлении. Затем я представляю подробный вид. Как происходит фактическая передача данных в NSNotificationCenter? Или я просто передаю данные из userInfo? Если последний, то для чего мне нужен NSNotificationCenter.Извините, если это боль, просто пытаясь понять! : D –
Привет Крис, NSNotificationCenter имеет шаблон подписчика издателя. вы можете передавать данные с помощью параметра userInfo. Красота NSNotificationCenter заключается в том, что он делает ваше приложение слабо связанным, и передача данных происходит без прямой ссылки между отправителем и получателем. – travoux