0

내 앱은 Apple 푸시 알림 서비스를 사용합니다. 내 앱이 포 그라운드에 있지 않고 푸시 알림을 받으면 알림 배너에 알림이 표시됩니다. 알림을 탭하면 앱이 재개되고 application:didReceiveRemoteNotification: 메소드를 통해 일부 코드 행이 실행됩니다. 사용자가 배너에이 알림을 표시하지 않고 해당 아이콘으로 앱을 직접 실행하면 application:didReceiveRemoteNotification: 메소드가 호출되지 않습니다. 그렇다면 어떻게 코드 라인을 실행할 수 있습니까? 앱 상태에 관계없이 앱이 알림을 받으면 즉시 코드 라인을 실행해야합니다. 어떻게 가능합니까?백그라운드에서 실행하면 푸시 알림에 응답 - ios

답변

2

간단히 말해 푸시 알림 서비스 만 사용하는 것은 아닙니다. 사용자가 알림을 탭하여 앱을 열지 않은 경우 어떤 알림을 받았는지 알 수 없습니다.

시도해 볼 수있는 몇 가지 사항이 있습니다.

  • 당신의 푸시 알림은 또한 응용 프로그램 아이콘에 배지 번호를 증가하면

    , 당신은 [UIApplication sharedApplication].applicationIconBadgeNumber를 사용하는 것을 액세스 할 수 있습니다. 숫자가 0 이외의 숫자이면 푸시 알림의 수를 알 수 있습니다 (다른 푸시 알림이있는 경우 푸시 알림 수는 다릅니다). 적절한 경우이 번호를 지워야합니다.

  • 백엔드 서비스를 사용하는 경우 푸시 알림을 전송하고 해당 앱이 활성화 될 때 해당 정보를 요청할 수도 있습니다.

여기에 정답하지만이 관계없이 여부, 요구하지 않고, 대신 앱이 활성화 될 때 갱신 될 필요가 어떤 데이터를 새로 고칠 수 있도록 앱을의 아키텍처 방식을 재 작업 아마 푸시 알림을 받거나 보내지 않았습니다.

1

UIApplicationDelegate 프로토콜에는 application:didFinishLaunchingWithOptions:이 있습니다.

사용자가 푸시 알림 의 오른쪽 버튼을 눌러 앱을 시작한 경우 launchOptions 사전에 메서드 호출에 바인딩 된 알림에 해당 정보가 포함됩니다.

앱이 이미 실행 중이면 application:didReceiveRemoteNotification: (위임 프로토콜에도 해당)이 대신 호출됩니다.

+0

이것은 기술적으로는 맞지만 그가 묻는 질문에 답하지 않습니다. – Dima

0

알림을 클릭하지 않으면 앱에서 알림을 수신 할 때까지 앱이 알 수 없습니다. 따라서 해당 코드 블록에 대해 별도의 메서드를 만들고 응용 프로그램에서 호출하십시오. didReceiveRemoteNotification :

배지 번호를 사용하는 경우. NSUserDefaults에 배지 번호를 저장하고 앱 아이콘에서 앱을 실행하면됩니다. 배지 번호를 이전에 사용한 코드와 비교하십시오. didFinishLaunchingWithOptions에서 실행하려는 블록을 추가하십시오.

관련 문제