swift에서 force-quit 상태에서 FCM을 받아 처리하는 방법을 알고싶습니다.

조회수 1510회

안녕하세요 신입개발자 입니다. 현재 FCM부분을 작성하고 있습니다. 몇일동안이나 인터넷 검색을 해보고 애플 홈페이지에 들어가봐도 답이 안보여서 이렇게 글을 올리게 되었습니다. 현재상황은 이렇습니다. 현재 Firebase에서는 HTTP와 XMPP로 작성된 요청을 처리하고 그것을 클라이언트인 아이폰에게 전달을 하는것으로 알고 있습니다. HTTP같은경우에는

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any],    fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)

함수에서 처리되는것으로 알고있고 XMPP같은 경우에는

func applicationReceivedRemoteMessage(_ remoteMessage: FIRMessagingRemoteMessage)

함수에서 처리하는것으로 알고있습니다.

본론으로 돌아와서 HTTP로 작성된 경우에는 force-quit상태 즉, 어플이 종료된 경우 에도 FCM이 제대로 뜨는 반면(xcode에서 어플이 죽으면 로그 확인을 하지 못해서 정확히 어떤 원리로 되는지는 모르지만....) XMPP로 작성된 경우에는 아무 반응이 없다가 어플을 킬 경우 한꺼번에 위에 말씀드린 함수로 들어오는것을 확인했습니다.

그래서 저는 어플이 종료된 후에도 XMPP로 작성된 FCM을 어떻게 띄울수 있는지, 그 방법이 있는지 알고싶습니다. 만약 없다면 HTTP로 오는 FCM은 어떻게 처리(소리를 없애거나 진동을 주거나 등...)할수있는지 궁금합니다.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기
    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any],    fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
    

    는 APNS 핸들링 함수이고,

    func applicationReceivedRemoteMessage(_ remoteMessage: FIRMessagingRemoteMessage)
    

    는 FCM에 저장된 메시지를 수신하는 핸들링 함수로 추정됩니다.

    소리를 없애거나 진동을 주거나 하는 등의 파라미터는 FCM으로 전송하는 payload에 담아야 합니다. 아래 링크를 참고해보세요.

    https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)