[Swift] iOS 애플리케이션에 알림 푸시 설치를 위한 샘플 애플리케이션을 만들어 봤습니다.

iOS의 푸시 알림은 이런 느낌이에요.


iOS 10의 푸시 알림 디자인은 이런 느낌이다.(조금 달라, iOS 13도 같은 느낌)
Swift에서 제작한 iOS 애플리케이션에 대해 알림을 실시하고 싶습니다!나는 이런 사람에게 이 문장을 참고할 수 있다고 생각한다

견본


작업 환경 및 사전 준비


동작 환경 추천(동작 확인을 하는 환경입니다)

  • Mac OS X10.14 이상
  • Xcode 11.2 이상
  • 아이폰8iOS 13.3이상
  • 사전 준비

  • 인증서 획득
  • 알림 전송에 필요한 인증서 작성 방법

  • 느릅나무의 계정 취득(SNS ID를 통해 취득: 무료)
  • 견본 항목 일람


    모든 것을 자유롭게 사용할 수 있다
    언어
    알림 푸시
    부압
    유효 하중 취득
    Swift
    SwiftPushApp
    SwiftRichPushApp
    SwiftPaylpadApp
  • 상기 3개 샘플 준비
  • 일반적인 푸시 알림만 지원하는 SwiftPushApp
  • SwiftPushApp 이외에 푸시 알림을 켜면 WebView의 리치 기능을 표시하는 SwiftRichPushApp
  • SwiftPushApp 외에 전송된 푸시 알림으로부터 메시지 등 데이터를 얻는 효과적인 하중 기능을 실현하는 SwiftPayloadApp
  • 사용 방법은 각 링크의 README에 따라 ◇
  • 아래에 각각 코드 해설("▶"*♪
  • 코드 소개


    원래 알림을 푸시하는 장치는?


    iOS의 경우 애플의 푸시 알림을 통해 서버로 푸시 알림을 보냅니다.
    다음 그림에서 보듯이 ①~⑤의 절차에 따라 알림을 추진하면 단말기로 전송된다.

    여기서 ② 장치 토큰이 발행될 때 APNs에서 발행된 장치 토큰은 터미널에서 가져와야 하며 서버에 저장된 처리는 응용 프로그램에서 이루어져야 한다.

    <Push 알림의 기본> 장치 토큰의 수령 및 서버 등록


    AppDelegate
    import UIKit
    import UserNotifications
    import NCMB
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {
    
        var window: UIWindow?
        //********** APIキーの設定 **********
        let applicationkey = "YOUR_NCMB_APPLICATIONKEY"
        let clientkey      = "YOUR_NCMB_CLIENTKEY"
    
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            //********** SDKの初期化 **********
            NCMB.initialize(applicationKey: applicationkey, clientKey: clientkey)
    
            let center = UNUserNotificationCenter.current()
            center.requestAuthorization(options: [.alert, .badge, .sound]) {granted, error in
                if error != nil {
                    // エラー時の処理
                    return
                }
                if granted {
                    // デバイストークンの要求
                    UIApplication.shared.registerForRemoteNotifications()
                }
            }
    
            return true
        }
    
        // デバイストークンが取得されたら呼び出されるメソッド
        func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
            // 端末情報を扱うNCMBInstallationのインスタンスを作成
            let installation : NCMBInstallation = NCMBInstallation.currentInstallation
            // デバイストークンの設定
            installation.setDeviceTokenFromData(data: deviceToken)
            // 端末情報をデータストアに登録
            installation.saveInBackground {result in
                switch result {
                    case .success:
                        // 端末情報の登録に成功した時の処理
                        break
                case let .failure(error):
                        // 端末情報の登録に失敗した時の処理
                        print(error)
                        break
                }
            }
    
        }
    }
    

    부압 처리


    부압이 뭐예요?

  • Push 알림에 URL을 탑재하여 배포하며, Push 알림 개봉 시 웹 뷰에 표시되는 기능
  • 설치가 간단하고 상기 설비 영패 처리 코드를 제외하고는 아래 코드만 보충하면 됩니다.
  • 리치 키 처리 보이기
    // MARK: アプリが起動されるときに実行される処理を追記する場所
    if let notification = launchOptions?[.remoteNotification] as? [String: AnyObject] {
        NCMBPush.handleRichPush(userInfo: notification)
    }
    

    페이로드 처리


    유효 하중은 무엇입니까?

  • 푸시 알림에 JSON 데이터를 포함하여 배포하고 개봉 시 푸시 알림에서 데이터를 얻을 수 있는 기능
  • 유효 하중으로 얻은 데이터는 응용에서 사용할 수 있다

  • 프로그램이 시작되지 않을 때 수신

  • 응용 프로그램이 시작될 때 유효한 하중을 얻기 위해 didFinishLaunchingWithOptions 방법에 기술
  • // 【ペイロード:アプリ非起動時に受信】アプリが起動されたときにプッシュ通知の情報を取得する
    if let remoteNotification = launchOptions?[UIApplication.LaunchOptionsKey.remoteNotification] as? NSDictionary {
      /* 省略 */
    }
    

    프로그램이 시작될 때 받는 상황

  • 부팅 중 수신하기 위해 추기didReceiveRemoteNotification 방법 및 기술
  • // 【ペイロード:アプリ起動時に受信】アプリが起動中にプッシュ通知の情報を取得する
    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
      /* 省略 */
    }
    

    참고 자료


    GiitHub에 많은 샘플 앱이 공개되었습니다!
    https://github.com/natsumo/

    좋은 웹페이지 즐겨찾기