이 주제와 관련된 많은 스택 오버플로 스레드가 있지만 여전히 좋은 해결책을 찾지 못했습니다.
앱이 배경에 없으면, 내가 확인하실 수 있습니다 launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]
에 application:didFinishLaunchingWithOptions:
이 통지에서 연 것 있는지 확인하기 위해 전화.
앱이 백그라운드에있는 경우 모든 게시물 application:didReceiveRemoteNotification:
에서 애플리케이션 상태 를 사용 하고 확인하도록 제안합니다 . 그러나 내가 실험 한 것처럼 (또한이 API의 이름에서 알 수 있듯이)이 메서드는 탭하는 대신 알림을받을 때 호출됩니다.
따라서 문제는 앱이 시작된 후 백그라운드로 설정되고 알림이 수신 된 경우 application:didReceiveNotification
( application:didFinishLaunchWithOptions:
이 시점에서 트리거되지 않음) 사용자가 알림을 탭하거나 탭하여 앱을 다시 시작했는지 어떻게 알 수 있는가 앱 아이콘? 사용자가 알림을 탭한 경우 해당 알림에 언급 된 페이지가 열릴 것으로 예상됩니다. 그렇지 않으면 안됩니다.
handleActionWithIdentifier
사용자 지정 작업 알림에 사용할 수 있지만 사용자가 알림 본문을 탭할 때가 아니라 사용자 지정 작업 버튼을 탭할 때만 트리거됩니다.
감사.
편집하다:
아래 답변 하나를 읽은 후 이런 식으로 내 질문을 명확히 할 수 있다고 생각했습니다.
이 두 가지 시나리오를 어떻게 차별화 할 수 있습니까?
(A) 1. 앱이 백그라운드로 이동합니다. 2. 통지 접수 3. 사용자가 알림을 탭합니다. 4. 앱이 포 그라운드로 들어감
(B) 1. 앱이 백그라운드로 이동합니다. 2. 통지 접수 3. 사용자가 알림을 무시하고 나중에 앱 아이콘을 탭합니다. 4. 앱이 포 그라운드로 들어감
이후로는 application:didReceiveRemoteNotification:
2 단계에서 두 경우 모두에서 실행됩니다.
또는 application:didReceiveRemoteNotification:
(A)에 대해서만 3 단계에서 트리거 되어야 하지만 어떻게 든 내 앱을 잘못 구성하여 2 단계에서 볼 수 있습니까?