Как обрабатывать тихие push-уведомления, когда приложение находится в состоянии InActive в ios 9? - PullRequest
0 голосов
/ 04 сентября 2018

У меня реализовано тихое push-уведомление. Поэтому метод didReceiveRemoteNotification вызывается, когда приложение находится в неактивном состоянии в ios 9.

В некоторых случаях приложение неактивно.

1.При вкладке пользователя на конкретное уведомление.

2.При получении вызова или сообщения.

3. При открытии центра уведомлений и центра управления.

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
 {
     if(application.applicationState == UIApplicationStateInactive)  //Inactive state
     {
         [self RedirectScreenBasedOnNotification:self.userInfoDic];//Screen Redirection code 
     }
 }

Так, как я могу обработать тихое уведомление, когда приложение неактивно?

У меня проблема с лицом, когда в это время открывается центр уведомлений, если приходит какое-либо уведомление, тогда будет выполняться перенаправление, но я хочу остановить это.

Уведомление полезной нагрузки: -

aps =     {
    alert = "Test Dev 5 startd following you ";
    "content-available" = 1;
    "link_url" = "https://raywenderlich.com";
    message =         {
        friend =             {
            email = "abc@gmail.com";
            name = "Test Dev 5";
            photo = "";
            "user_id" = 27;
        };
        id = 3;
        "is_business_sent" = 0;
        message = "Test Dev 5 startd following you ";
    };
    sound = default;
}

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Вы можете добавить свой код в этом условии If.

if (UIApplication.sharedApplication.applicationState != UIApplicationStateInactive) {
   //Write your code her, this will get executed when your app is not in Inactive state.
}
0 голосов
/ 06 сентября 2018

Тихие push-уведомления не запускают взаимодействие с пользователем. Когда полезная нагрузка молчаливого уведомления включает в себя ключи для взаимодействия с пользователем, что-то идет не так - iOS не может понять, намерено ли что-то представить пользователю или сохранить уведомление в безмолвном режиме и обработать его без взаимодействия с пользователем. Иногда тихое уведомление может работать, в других случаях оно может быть представлено как обычное уведомление с участием пользователя. Это может быть одно или другое, а не оба.

Если тихая нажимная клавиша content-available присутствует в полезной нагрузке aps, то ключей alert, sound или badge не должно быть.

Вы можете использовать мой Инструмент проверки полезных данных push-уведомлений , чтобы проверить содержание вашего уведомления. У полезной нагрузки, которую вы разместили в своем вопросе, есть несколько проблем - ключ aps должен содержать только ключи Apple, определенные в Генерация push-уведомлений . Все ваши пользовательские ключи и значения должны находиться вне объекта aps.

application:didReceiveRemoteNotification:fetchCompletionHandler: будет вызываться только для тихих push-уведомлений. Если полезная нагрузка уведомления содержит как content-available , так и , то один или несколько из alert, sound или badge iOS не будет знать, какой метод вызывать, и вы можете увидеть несогласованное поведение.

Если вы просто пытаетесь показать не молчаливое уведомление, вам не нужно вводить application:didReceiveRemoteNotification:fetchCompletionHandler:. Вместо этого реализуйте application:didReceiveRemoteNotification: для iOS 9 и userNotificationCenter:willPresentNotification:withCompletionHandler: для iOS 10 и более поздних версий.

Что касается тихих уведомлений и неактивного состояния приложения, здесь делать нечего особенного. Тихие уведомления предназначены для того, чтобы «намекнуть» приложению, что оно должно обновить содержимое. При получении уведомления в режиме без вывода сообщений приложение должно обработать обновление содержимого в течение 30 секунд, а затем вызвать обработчик завершения выборки. Когда iOS выполняет обработчик завершения выборки, она делает новый снимок восстановления обновленного пользовательского интерфейса. Это происходит, даже когда приложение неактивно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...