1

푸시 알림과의 상호 작용을 통해 앱을 포그 라운드로 가져올 지 또는 사용자가 앱을 클릭하여 수동으로 포그 라운드로 가져갈 지 여부를 알아야합니다.앱이 백그라운드 스위프트에서 열리는 지 감지 iOS

당신은가 호출되는 배경 수동으로 "applicationWillEnterForeground"에서 응용 프로그램을 열합니다. 푸시 알림을 통해 백그라운드에서 앱을 열면 "applicationWillEnterForeground"이 호출되고 "didReceiveRemoteNotification"이 이어집니다.

이제 push 또는 not (통계, 사용자가 푸시 메시지와 상호 작용 함)로 인해 열렸을 때마다 내 백엔드에 대한 앱 대리인의 내부에서 alamofire 요청을하고 싶습니다.

나열된 모든 후 호출되는 메서드가 있습니까? 만약 그렇다면 푸시인지 아닌지를 확인하고 멀리 보내십시오. 아니면이 문제를 해결할 더 좋은 방법이 있습니까?

답변

2

앱이 백그라운드에있을 때 "didReceiveRemoteNotification"을 통해 알림을 처리 할 수 ​​있습니다. 방법 "응용 프로그램에서

if let launchOptions = launchOptions { 
     if let notificationInfo = launchOptions[UIApplicationLaunchOptionsKey.remoteNotification] as? [AnyHashable : Any] { 
      // Handle notificationInfo 
     } 
    } 

(_ 응용 프로그램 :

것은 그것이 전혀 실행되지 않았고 사용자가 알림 배너를 클릭하여 시작하면, 당신은 시작 옵션 확인해야 UIApplication을, didFinishLaunchingWithOptions launchOptions : [UIApplicationLaunchOptionsKey : Any]?) "AppDelegate의입니다. 이후라고

+0

확인. 나는 나머지 전화를해야한다. OpenedViaPush() 또는 OpenedManually(). 이미 보여 드린 코드는 앱의 콜드 스타트를 확인하기 위해 이미 사용하고 있습니다. 이제 앱이 백그라운드에 있고 다시 열립니다. 참으로 didReceiveRemoteNotification을 확인할 수 있습니다. 하지만 수동으로 너무 배경에서 열 었는지 추적하려는 경우 다음 두 메서드가 호출되기 때문에 작동하지 않습니다. applicationWillEnterForeground를 입력 한 다음 didReceiveRemoteNotification을 보냈습니다. –

+0

응용 프로그램이 백그라운드에 있었던 경우 applicationWillEnterForeground 메서드에 신경 쓸 필요가 없습니다. didReceiveRemoteNotification에서 필요한 것을 구현하십시오. 아마 [이 스레드] (http://stackoverflow.com/questions/5056689/didreceiveremotenotification-when-in-background) 도움이 될 것입니다. – user3581248

+0

원격 알림을받지 못했지만 백그라운드에서 앱을 열었습니까? didReceiveRemoteNotification은 알림을받을 때만 호출됩니다. 나는 둘 다 할 수있는 방법이 필요합니다. –

0

찾을 뭔가 :

여기
func applicationDidBecomeActive(_ application: UIApplication) 

난 내 백엔드에 요청을 해고 할 수는,이 푸시를 통해 여부를 연 경우 파악하기 전에

didReceiveRemoteNotification 

을 사용하는 데 .

관련 문제