Swift에서 Firebase로 Notification을 보내봤습니다.

화제를 따라가지 못하는 느낌이지만 Swift에서 Firebase로 Notification을 보냈습니다.
여기저기 꽉 찼기 때문에 꽉 찬 곳을 중심으로 기재했다.

환경

  • Swift: 2.2
  • CocoaPods: 1.0.0.rc.2
  • iOS: 8.0〜
  • 1. FireBase 프로젝트 만들기


    https://console.firebase.google.com/
    Google 계정으로 로그인하여 프로젝트를 만들거나 기존 프로젝트를 선택하십시오.

    2. Xcode 항목 만들기


    적당한 이름으로 Xcode 프로젝트를 만드세요.

    3. "iOS 응용 프로그램에 FireBase 추가" 선택



    표시된 순서에 따라 초기 설정을 실행합니다.

    4단계의 "추가 초기화 코드"에 렉이 걸렸기 때문에 다음 참고로 Podfile을 수정했습니다.코코아팟 버전 문제?아니면 공식 프로그램 업데이트가 누락되었습니까?
    참조iOS - Firebase error: Use of unresolved identifier FIRApp running supplied code Podfile 수정.
    그나저나 메시지 전송용 라이브러리도 넣을게요.
    Podfile
    ...
    pod 'Firebase/Core'
    pod 'Firebase/Messaging'
    ...
    

    4. APNs 인증서 준비


    공지를 제출하려면 APNs 인증서가 필요합니다.

    4-1 APNs 인증서 만들기


    Provisioning APNs SSL Certificates
    APNs 인증서 검색 결과 - Qiita
    부근의 절차를 참고하여 증명서를 작성하세요.

    4-2. APNs 인증서 업로드


    만든 인증서를 Firebase에 업로드하십시오.


    5. 응용 프로그램 설정


    단순히 공지만 보내는 경우 FireBase 초기화 시 FIRApp.configure () 가 잘 설정되어 있기 때문에 코드를 특별히 쓸 필요가 없습니다.정말 친절한 디자인이네요.
    ...일 것 같지만 notification을 받을 수 없습니다.
    하면, 만약, 만약...
    <FIRInstanceID/WARNING> Failed to fetch APNS token Error Domain=com.firebase.iid Code=1001 "(null)"
    
    이런 오류가 발생하여 토큰의 획득은 실패한 것 같다.
    "Failed to fetch APNS token Error Domain=com.firebase.iid Code=1001" 검색도 2건만 걸립니다.
    여기의 대답을 참고하여 notification을 설정해 보세요.
    어쨌든 움직였지만 이해가 안 돼요.
    아, 그리고 실수로 시뮬레이터로 시동을 걸면 아래의 오류가 발생합니다.notification은 실제 기기가 아니면 받을 수 없으니 실제 기구를 대상으로 하세요.
    <FIRInstanceID/WARNING> Failed to fetch APNS token Error Domain=NSCocoaErrorDomain Code=3010 "REMOTE_NOTIFICATION_SIMULATOR_NOT_SUPPORTED_NSERROR_DESCRIPTION" UserInfo={NSLocalizedDescription=REMOTE_NOTIFICATION_SIMULATOR_NOT_SUPPORTED_NSERROR_DESCRIPTION}
    

    6. 알림 보내기


    그럼 드디어 준비가 됐습니다. notification을 보내주세요.하지만 한 가지 주의할 점이 있다.
    Note: unless you first add message handling logic to your client app as described in the next section, some users may not receive the notifications you send. This includes any users who have your app in the foreground on the device.
    참조: Send a Notification to a User Segment on iOS
    공식 문서는 상술한 바와 같이 이전의 설치 상황에서 응용 프로그램이foreground에서 받은 메시지가 처리되지 않았기 때문에 추가 논리가 필요합니다.
    우선, 프로그램이 foreground가 아닌 상태에서 notification을 보내세요.
    실제 컴퓨터에 프로그램을 설치하고 알림을 허용한 후 Firebase 컨트롤러에서 notification을 보냅니다.


    한 마디로 하면 메시지 문장과 목표를 결정하면 발송할 수 있다.

    6-1. 화면 잠금 시 전송



    6-2. 프로그램이 백그라운드에 있을 때 보내기



    6-3. 응용 프로그램 종료 후 보내기



    응, 좋다.

    7. 응용 프로그램에서 수신된 notification의 내용을 처리합니다


    프로그램이 foreground에 있을 때 수신된 메시지 내용을 처리하려면 다음 느낌으로 AppDelegate의 응용 프로그램:didReceive Remote Notification을 설치하면 됩니다.
    이번에는 알림을 받은 후alert를 표시해 보겠습니다.
    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
        if application.applicationState == .Active {
            if let aps = userInfo["aps"] as? NSDictionary {
                if let alert = aps["alert"] as? String {
                    let alert = UIAlertController(title: "受け取ったメッセージは", message: alert, preferredStyle: .Alert)
                    alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
                    self.window?.rootViewController?.presentViewController(alert, animated: true, completion: nil)
                }
            }
        }
    }
    
    그러면 상기 내용을 설치하고 응용 프로그램이foreground에 있을 때 notification을 다시 보내십시오.

    응, 괜찮아 보여.
    무료로 간단하게 notification을 보낼 수 있어서 한번 해봤는데 공식적인 문서대로 하려고 했는데 자신의 작법이 좋지 않아서 설정이 누락되어 의외로 걸린 부분이 많았어요.
    FIRApp.configure () 의 실행만으로 notification을 보내는 사람이 있다면 환경과 절차 등이 공개될 것으로 기대합니다!

    좋은 웹페이지 즐겨찾기