AWS SNS 및 SwiftUI를 통한 애플의 알림 전달

7095 단어 iosawsapnsswiftui
이 문서는 Apple 푸시 알림(APN)을 설정하고 AWS SNS를 통해 푸시 메시지를 보내는 방법을 보여 줍니다.
본 문서의 정보를 사용하여 푸시 알림을 보내는 선결 조건:
  • Mac
  • 최소 11
  • 의 Xcode
  • 아이폰 기기
  • 애플 개발자 계정
  • 미국 용접학회 계좌
  • 1단계: iOS 애플리케이션 생성

  • Xcode 시작
  • 애플리케이션, 제품 이름 및 기타 선택 사항은 원하는 대로 선택할 수 있지만 SwiftUI를 선택해야 합니다.

  • 응용 프로그램을 만든 후 왼쪽 상단의 항목 이름을 클릭합니다.

  • Signing &Capabilities를 누르면 애플 개발자 계정에 로그인했는지 확인
  • Push 알림을 검색하고 추가하려면 + 기능 클릭

  • 이제 이러한 뷰를 볼 수 있습니다.

    2단계: AWS SNS 설정

  • AWS 및 SNS
  • 로 이동
  • 왼쪽에서 밀어넣기 알림 클릭

  • 지금 클릭하여 플랫폼 애플리케이션 생성


  • 선택 영패(인증서를 선택하고 p12 파일을 다운로드할 수도 있음)
  • 이제 developer.apple.com 로 돌아가 왼쪽 메뉴의 키
  • 를 선택합니다.
  • Apple Push 알림 서비스(APNs)에 대한 새 키를 만들고 다음 절차를 따릅니다.

  • 현재 p8 파일을 다운로드하고 서명 키 ID를 받습니다. AWS 포털에 추가
  • 팀 ID는 사용자 이름의 오른쪽 상단
  • 값입니다.
  • Bundle ID는 응용 프로그램 표지 ID입니다. Xcode를 열고 항목을 선택한 다음(왼쪽 상단)을 선택한 다음General을 선택하고 Bundle 표지 값
  • 을 복사해서 찾을 수 있습니다.
  • Create를 선택했습니다. 만일 모든 것이 정상적이라면 APNs 영패 기반 인증을 사용하여 플랫폼 응용 프로그램을 성공적으로 만들었습니다.

  • 3단계: 푸시 어플리케이션 지원 구현


    우선, 우리는 추송 알림의 등록을 처리하고 설비 영패의 등록을 받아야 한다.
    니 SNSPushDemo에서swift 및 이 파일에 다음 코드를 추가합니다. (이것은 항목의 이름입니다. 항목을 다른 이름으로 부르면 해당 이름으로 부릅니다.)
    import SwiftUI
    
    @main
    struct SNSPushDemoApp: App {
        @UIApplicationDelegateAdaptor private var appDelegate: AppDelegate
    
        var body: some Scene {
            WindowGroup {
                ContentView()
            }
        }
    }
    
    class AppDelegate: NSObject, UIApplicationDelegate, UNUserNotificationCenterDelegate {
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
            UNUserNotificationCenter.current().delegate = self
            return true
        }
    
        func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
            let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) }
            let token = tokenParts.joined()
            print("Device Token: \(token)")
        };
    
        func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
           print(error.localizedDescription)
        }
    
        func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
            completionHandler([.banner, .badge, .sound])
        }
    }
    
    이제 ContentView에 있습니다.스웨프트, 우리는 이 종류를 갱신하여
  • 사용자에게 알림을 보내는 요청
  • 장치 토큰을 획득할 수 있도록 사용자가 장치를 등록할 수 있습니다.
  • import SwiftUI
    
    struct ContentView: View {
        @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    
        init() {
            requestPushAuthorization();
        }
    
        var body: some View {
            Button("Register for notifications") {
                registerForNotifications();
            }
        }
    }
    
    struct ContentView_Previews: PreviewProvider {
        static var previews: some View {
            ContentView()
        }
    }
    
    func requestPushAuthorization() {
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { success, error in
            if success {
                print("Push notifications allowed")
            } else if let error = error {
                print(error.localizedDescription)
            }
        }
    }
    
    func registerForNotifications() {
        UIApplication.shared.registerForRemoteNotifications()
    }
    

    4단계: 모든 설정을 설정하고 밀어넣기 준비


    장치에서 프로그램을 시작하는 것부터 시작합시다.다음과 같은 메시지가 표시됩니다.

    ContentView 클래스에 다음 코드 세그먼트가 추가되었으므로 이 메시지가 표시됩니다.
    func requestPushAuthorization() {
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { success, error in
            if success {
                print("Push notifications allowed")
            } else if let error = error {
                print(error.localizedDescription)
            }
        }
    }
    
    우리가 교실에 들어갈 때, 우리는 호출할 것이다.
    init() {
        requestPushAuthorization();
    }
    
    라이센스가 성공적으로 부여되면 다음과 같이 인쇄합니다.
    Push notifications allowed
    
    다음 단계는 우리의 설비 영패를 얻는 것이다.응용 프로그램을 시작하고 등록 알림 버튼을 클릭합니다.현재 출력 창에서 장치 영패를 받을 수 있습니다.값을 복사합니다.
    계속하기 전에 장비 토큰이 무엇인지 설명합니다.
    장치 영패는 애플이나 구글이 만들고 분배하는 유일한 키로 응용 프로그램과 iOS, 안드로이드 사이의 연결을 구축하는 데 사용된다.이 키는 장치 및 어플리케이션 설치에 따라 고유합니다.이것은 프로그램을 다시 설치할 때마다 새 장치 카드를 받을 수 있다는 것을 의미합니다.
    이제 AWS 콘솔로 돌아가서 응용 프로그램 끝점 만들기 를 클릭합니다.

    다음 보기에서 장치 영패를 추가해야 하지만 사용자 데이터도 추가할 수 있습니다.사용자 데이터는 밀어서 전달할 수 있는 데이터로 유일한 정보를 표시하는 데 사용할 수 있다.
    예를 들어, 당신은 뉴스 프로그램이 있는데, 당신은 한 문장의 알림을 받는다. 전송을 눌렀을 때, 특정한 문장을 열고 싶을 때, 사용자 데이터에서 문장 id를 전달할 수 있다.

    5단계: 밀어넣기


    이제 AWS 콘솔에서 메시지 게시를 클릭하기만 하면 됩니다.


    메시지를 게시하면 다음과 같은 푸시 알림이 전송됩니다.

    좋은 웹페이지 즐겨찾기