푸시 알림 자습서:시작하기

업데이트 참고:Chuck Krutsinger 는 Xcode11 및 Swift5 에 대해이 자습서를 업데이트했습니다. Jack Wu 는 원래 자습서를 작성했으며 Keegan Rush 는 이전 업데이트를 작성했습니다.

iOS 개발자는 멋진 앱을 지속적으로 사용하는 사람들을 상상하는 것을 좋아합니다. 그러나 물론 사용자는 때때로 앱을 닫고 다른 활동을 수행해야합니다. 세탁은 스스로 접히지 않습니다. 행복,푸시 알림을 수 있는 개발자가 사용자에게 도달 및 작은 작업을 수행할 때도 사용자가 사용하지 않을 수 있습니다. 이 자습서에서는 다음과 같은 방법을 배웁니다.

  • 푸시 알림을 받도록 앱을 구성합니다.
  • 사용자에게 표시하거나 다른 작업을 수행합니다.

시작하기

푸시 알림이란 무엇입니까? 앱이 실행 중이 아니거나 전화가 잠자는 경우에도 Apn(Apple Push Notification service)을 통해 앱으로 전송되는 메시지입니다. 당신은 무엇을 위해 푸시 알림을 사용할 수 있습니까?

  • 앱의 새로운 것에주의를 환기시키는 경고라는 짧은 문자 메시지를 표시합니다.
  • 알림 소리를 재생합니다.
  • 앱의 아이콘에 배지 번호를 설정하여 사용자가 새 항목이 있음을 알립니다.
  • 사용자가 응용 프로그램을 열지 않고 취할 수있는 조치를 제공합니다.
  • 미디어 첨부 파일을 표시합니다.
  • 앱이 백그라운드에서 작업을 수행 할 수 있도록 침묵하십시오.
  • 알림을 스레드로 그룹화합니다.
  • 전달 된 알림을 편집하거나 제거합니다.
  • 를 표시하기 전에 알림을 변경하려면 코드를 실행하십시오.
  • 알림에 대한 사용자 정의 대화 형 UI 를 표시합니다.그리고 아마 더.

이 튜토리얼은 앱에서 푸시 알림을 만들기 시작하는 데 도움이되는 이러한 용도의 많은 부분을 다룹니다. 이 자습서를 완료하려면 다음이 필요합니다.

  • Xcode11.4 이상. 이전 버전의 Xcode 는 시뮬레이터를 사용하여 푸시 알림을 지원하지 않습니다.
  • 애플 개발자 프로그램 멤버쉽은 푸시 알림 자격으로 앱을 컴파일 할 수 있도록.
참고:후 튜토리얼에서,당신은 배우 푸시 알림을 보내는 방법을 실제 장치에 보내는 실제 장치입니다.

를 보내고 푸시 알림을 받을 수행해야 합니다의 세 가지 주요 작업이 수행됩니다:

  1. 앱을 구성하고 그것을 등록 APNs.
  2. Apn 을 통해 서버에서 특정 장치로 푸시 알림을 보냅니다. Xcode 로 시뮬레이션 할 것입니다.
  3. 앱에서 콜백을 사용하여 푸시 알림을 수신하고 처리합니다.

푸시 알림을 보내는 것은 앱의 서버 구성 요소의 책임입니다. 많은 앱이 제 3 자를 사용하여 푸시 알림을 보냅니다. 다른 사람들은 사용자 정의 솔루션이나 인기있는 라이브러리(예:휴스턴)를 사용합니다. 이 튜토리얼에서는 푸시 메시지 전송 만 터치 할 것이므로 여기에서 어디로 가야하는지 반드시 확인하십시오. 섹션 푸시 알림에 대한 지식을 구축 할 수 있습니다.

시작하려면이 자습서의 상단 또는 하단에있는 자료 다운로드 버튼을 사용하여 WenderCast starter project 를 다운로드하십시오. WenderCast 에 대한 모든 사람의 이동-투 소스입니다 raywenderlich.com 팟 캐스트 및 속보. starter 폴더에서 WenderCast 를 엽니다.xcodeproj. 프로젝트 네비게이터에서 WenderCast 를 선택한 다음 WenderCast 대상을 선택합니다. 일반&기능 탭에서 개발 팀을 선택합니다. 시뮬레이터에서 빌드하고 실행하십시오.

구축 및 실행은 시작 프로젝트

WenderCast 의 목록을 표시합니다 raywenderlich.com 팟캐스트와 사용자는 재생할 수 있습니다. 그러나 새로운 팟 캐스트를 사용할 수 있고 뉴스 탭이 비어있을 때 사용자에게 알려주지 않습니다! 곧 푸시 알림의 힘으로 이러한 문제를 해결할 것입니다.

푸시 알림 송수신

앱 구성

보안은 푸시 알림에 매우 중요합니다. 다른 사람이 앱을 통해 사용자에게 푸시 알림을 보내는 것을 원하지 않습니다. 푸시 알림을 안전하게 수신하도록 앱을 구성하려면 몇 가지 작업을 수행해야합니다.

푸시 알림 서비스 활성화

먼저 번들 식별자를 변경해야합니다. Xcode 에서 프로젝트 네비게이터에서 WenderCast 를 강조 표시 한 다음 WenderCast 대상을 선택하십시오. 일반을 선택한 다음 번들 식별자를 고유 한 것으로 변경하여 Apple 의 푸시 알림 서버가이 앱으로 직접 푸시 할 수 있도록하십시오.

변경이 뭉치 식별자

다음에,당신은 당신을 만들 필요가 있는 응용 프로그램 ID 에서 당신의 개발자 계정 사용하는 푸시 알림시기 바랍니다. Xcode 에는 간단한 방법이 WenderCast 대상은 여전히 선택 클릭하인&기능 탭을 클릭합+기능 버튼입니다. 필터 필드에”push”를 입력하고 Enter 키를 누릅니다.

추가한 푸시 알림 기능

추가한 후에 푸시 알림을 권리,프로젝트에 다음과 같아야 합니다:

프로젝트 푸시 알림을 권

참고:어떤 경우 문제 발생을 방문 애플은 개발자 센터도 있습니다. Apple 이 업데이트하기를 좋아하는 새로운 개발자 라이센스에 동의하고 다시 시도해야 할 수도 있습니다.

뒤에서 앱 ID 를 만든 다음 푸시 알림 권한을 추가합니다. 로그인할 수 있습으로 애플은 개발자 센터 이를 확인하려면:

응용 프로그램 ID 구성을 보여주는 푸시 알림을 권

의 모든 구성해야 합니다. 당신은 응용 프로그램 강화를 시작할 준비가되었습니다.

사용자 알림 권한 요청

푸시 알림에 등록하기 위해 수행하는 두 단계가 있습니다. 먼저 알림을 표시 할 수있는 사용자의 권한을 얻어야합니다. 그런 다음 원격(푸시)알림을받을 장치를 등록 할 수 있습니다. 모든 것이 잘되면 시스템은 장치 토큰을 제공합니다.이 토큰은이 장치에”주소”라고 생각할 수 있습니다.

WenderCast 에서는 앱 실행 후 즉시 푸시 알림에 등록합니다. 먼저 사용자 권한을 요청하십시오.나는 이것을 할 수 없다.스위프트하고 파일 상단에 다음을 추가하십시오:

import UserNotifications

다음에 다음을 추가하는 방법의 말AppDelegate

func registerForPushNotifications() { //1 UNUserNotificationCenter.current() //2 .requestAuthorization(options: ) { granted, _ in //3 print("Permission granted: \(granted)") }}

이 코드:

  1. UNUserNotificationCenter핸들이 모두 알림 관련 활동,응용 프로그램에서 푸시 알림을 포함하여.
  2. 당신은requestAuthorization(options:completionHandler:)options는 앱에서 사용하려는 알림 유형을 나타냅니다.
  3. 완료 핸들러는 권한 부여 성공 여부를 나타내는 Bool 을받습니다. 이 경우 결과를 인쇄하기 만하면됩니다.
참고:옵션을 통과하는requestAuthorization(options:completionHandler:)UNAuthorizationOptions:

  • .배지:앱 아이콘 모서리에 숫자를 표시합니다..carPlay:CarPlay 에 알림을 표시합니다..providesAppNotificationSettings:앱에 알림 설정을위한 자체 UI 가 있음을 나타냅니다..criticalAlert:음소거 스위치를 무시하고 방해하지 마십시오. 매우 특별한 유스 케이스만을 의미하기 때문에이 옵션을 사용하려면 Apple 의 특별 자격이 필요합니다.

application(_:didFinishLaunchingWithOptions:)return:

registerForPushNotifications()

전화registerForPushNotifications()여기에 보면 사용하는 푸시 알림을 등록하는 모든 시간의 시작했습니다.빌드하고 실행하십시오. 앱이 시작되면 알림을 보낼 수있는 권한을 요청하는 프롬프트가 나타납니다.

알림 프롬프트

허용을 탭하고 푸프! 이제 앱에서 알림을 표시할 수 있습니다. 좋아요! 그러나 사용자가 권한을 거부하면 어떻게해야합니까? 이 메소드를AppDelegate:

func getNotificationSettings() { UNUserNotificationCenter.current().getNotificationSettings { settings in print("Notification settings: \(settings)") }}

먼저 원하는 설정을 지정했습니다. 이 메서드는 사용자가 부여한 설정을 반환합니다. 지금,당신은 그들을 인쇄하는,하지만 당신이 원시 여기에는 곧로 더 많은 일을 할 수 있다.

에서는registerForPushNotifications()requestAuthorization(options:completionHandler:)으로 다음과 같다:

UNUserNotificationCenter.current() .requestAuthorization( options: ) { granted, _ in print("Permission granted: \(granted)") guard granted else { return } self?.getNotificationSettings() }

추가한 전화를getNotificationSettings()guard는 권한이 부여되지 않은 경우이 호출을 피합니다.

Apn 에 등록

이제 권한이 있으므로 원격 알림에 등록하게됩니다!

에서는getNotificationSettings()print안에 마감:

guard settings.authorizationStatus == .authorized else { return }DispatchQueue.main.async { UIApplication.shared.registerForRemoteNotifications()}

여기에서,당신은 확인authorizationStatus.authorizedUIApplication.shared.registerForRemoteNotifications()를 호출합니다. 주 스레드에서 이것을 호출해야하거나 런타임 경고가 표시됩니다.

에 다음을 추가 끝의AppDelegate

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)")}

이 메소드를 호출하여 iOS 할 때마다 전화를registerForRemoteNotifications()deviceToken를 가져 와서 문자열로 변환하는 것입니다. 장치 토큰은이 프로세스의 결실입니다. Apn 에서 제공하며이 특정 장치에서이 앱을 고유하게 식별합니다.

푸시 알림을 보낼 때 서버는 토큰을”주소”로 사용하여 올바른 장치에 전달합니다. 앱에서 이제이 토큰을 서버에 보내 저장하여 나중에 알림을 보내기 위해 사용할 것입니다.

이제 다음을 추가합니다:

func application( _ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { print("Failed to register: \(error)")}

이 메소드를 호출하여 iOS 는 경우에는registerForRemoteNotifications()실패합니다. 당신은 지금 오류를 인쇄하고 있습니다.

그게 다야! 빌드하고 실행하십시오. 시뮬레이터에 있기 때문에Failed to register오류가 표시됩니다. 당분간은 무시할 수 있습니다. 나중에 실제 장치에서 실행할 때 콘솔 출력에서 토큰을 받아야합니다. 예를 들어 다음과 같습니다.

장치의 한 예로 토큰

참고:몇 가지 이유가 있는 등록이 실패할 수 있습니다. 대부분의 경우 앱 ID 가 제대로 구성되지 않았기 때문입니다. 오류 메시지는 일반적으로 무엇이 잘못되었는지에 대한 좋은 힌트를 제공합니다.

시뮬레이션 된 푸시 알림 보내기

텍스트 편집기를 사용하여 먼저 호출 된 파일을 만듭니다.Xcode 의 simctl 유틸리티로 전달할 apn. 다음 JSON 텍스트에 붙여 넣고 파일을 저장하십시오.

{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}

이 JSON 의 구조는 다음 섹션에서 설명합니다. 인내심,메뚜기.시뮬레이터에서 앱을 빌드하고 다시 실행 한 다음 앱을 배경으로하거나 장치를 잠급니다. 앱이 아직 포 그라운드에있는 동안 푸시 알림을 처리 할 수 없습니다.

simctl 을 사용하려면 앱을 실행하는 시뮬레이터의 장치 식별자를 알아야합니다. 시뮬레이터에서 실행되는 장치가 하나만있는 경우 식별자 대신 부팅을 사용할 수 있습니다. 을 얻을 식별자,Xcode 에서 선택 Windows▸장치 및 시뮬레이터를 선택한 후 시뮬레이터 맨 위에 있는 탭을 선택 시뮬레이터를 사용하 목록에서 왼쪽에 있습니다. 식별자를 복사하려면 마우스를 사용합니다. 완전히 보려면 대화 상자를 넓혀야 할 수도 있습니다.

을 찾는 장치 식별자 Xcode 에서

터미널 앱을 열고 변화하는 디렉토리에 저장된 첫 번째.apn. 그런 다음 device_identifier 대신 Xcode 의 booted 또는 장치 식별자를 사용하여 다음 명령을 입력하십시오.xcrun simctl push device_identifier bundle_identifier first.apndevice_identifierbundle_identifier응용 프로그램의 번들을 식별자 하는 사용할 때 처음에 설정 프로젝트입니다. 예를 들어 다음과 같습니다.

를 사용하여 xcrun simctl 푸시 알림을 보내는 터미널에서

명령을 실행하고 당신이 볼 수 푸시 알림을 표시 시뮬레이터에!

푸시 알림이 시뮬레이터에 나타납니다

앱을 실행하려면 알림을 누릅니다.

푸시 알림에서 앱 출시

멋지지 않습니까? :]

을 보고 기본 푸시 알림

으로 이동하기 전에 처리하는 푸시 알림을 살펴보고,몸의 알림을 보낸다.

{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}

페이로드 JSON 사전을 포함하는 적어도 하나의 항목,aps,또한 사전입니다. 이 예제에서는apsalertsound,andlink_url. 장치가이 푸시 알림을 받으면”속보”라는 텍스트와 함께 경고보기가 표시됩니다!”그리고 표준 사운드 효과를 재생합니다.이 필드는 사용자 정의 필드입니다. 이와 같이 페이로드에 사용자 정의 필드를 추가 할 수 있으며 응용 프로그램에 전달됩니다. 아직 앱 내부에서 처리하지 않으므로이 키/값 쌍은 현재 아무 것도하지 않습니다.

보정: 기민한 독자는 지적 애플의 문서는 사용자 정의 컨텐츠 등의link_urlaps사전 항목보다는 그 안에. 그것은 여전히 작동하는 경우 당신은 장소 안에,하지만 우리는 항상 제안을 준수하는 애플의 문서와 올바른 것입니다 이것이 우리의 다음 업데이트를 이습니다.

가 내장된 키를 추가할 수 있는aps사전십시오(공식 페이로드를 참조해 더 많은 정보가):

  • 알림: 앞의 예에서와 같이 문자열이거나 사전 일 수 있습니다. 사전으로 텍스트를 현지화하거나 알림의 다른 측면을 변경할 수 있습니다.
  • 배지:앱 아이콘 모서리에 표시되는 숫자입니다. 이를 0 으로 설정하여 배지를 제거할 수 있습니다.
  • 사운드:응용 프로그램에있는 사용자 정의 알림 사운드의 파일의 이름입니다. 이들은 30 초보다 짧아야합니다.
  • thread-id:이 키를 사용하여 알림을 그룹화합니다.
  • 카테고리:이것은 알림에 사용자 지정 작업을 표시하는 데 사용되는 알림의 범주를 정의합니다. 당신은 곧 이것을 탐구 할 것입니다.
  • content-available:이 키를1로 설정하면 푸시 알림이 무음 상태가됩니다. 아래의 자동 푸시 알림 섹션에서 이에 대해 배우게됩니다.
  • mutable-content:이 키를1로 설정하면 앱이 알림을 표시하기 전에 수정할 수 있습니다.
  • target-content-id:이것은 앞으로 가져온 창의 식별자입니다.

이 외에도 페이로드가 4,096 바이트를 초과하지 않는 한 원하는만큼 사용자 정의 데이터를 추가 할 수 있습니다.

일단 당신이 충분히 재미있고 이러한 옵션에 푸시 알림을 보내는 귀하의 시뮬레이터,다음 섹션!

처리 푸시 알림을

이 섹션에서는 방법을 배우게 작업을 수행할 때 앱 알림을 받을 때 사용자가 누릅니다.

푸시 알림을받을 때 발생하는 이해

앱이 푸시 알림을 받으면 iOS 는UIApplicationDelegate에서 메소드를 호출합니다.

you’ll 를 처리하기 위해 필요한 알림 따라 다르게 어떤 상태에의 응용 프로그램은 때 통지를 받습니다.

  • 앱 실행되지 않았고 사용자 시작하여 그것을 눌러 푸시 알림,iOS 통과한 알림 응용 프로그램에는launchOptionsapplication(_:didFinishLaunchingWithOptions:).
  • 앱이 포 그라운드 또는 백그라운드에서 실행 된 경우 시스템은application(_:didReceiveRemoteNotification:fetchCompletionHandler:)를 호출하여 앱에 알립니다. 사용자가 푸시 알림을 탭하여 앱을 열면 iOS 가이 메소드를 다시 호출 할 수 있으므로 UI 를 업데이트하고 관련 정보를 표시 할 수 있습니다.

첫 번째 경우 WenderCast 는 뉴스 항목을 만들고 뉴스 탭으로 직접 열립니다. AppDelegate 에서.swift,다음 코드를 추가하여 최종의application(_:didFinishLaunchingWithOptions:)그냥 돌아오기 전에 성명:

// Check if launched from notificationlet notificationOption = launchOptions?// 1if let notification = notificationOption as? , let aps = notification as? { // 2 NewsItem.makeNewsItem(aps) // 3 (window?.rootViewController as? UITabBarController)?.selectedIndex = 1}

이것은 무슨 일을 하는지.

  1. 는지 여부를 확인에 대한 값UIApplication.LaunchOptionsKey.remoteNotificationlaunchOptions. 그럴 경우 알림에서 앱이 시작되었습니다. 여기에는 보낸 푸시 알림 페이로드가 포함됩니다.
  2. apsNewsItem를 만듭니다.
  3. 탭 컨트롤러의 선택한 탭을 뉴스 섹션으로 변경하십시오.

이를 테스트하려면 WenderCast 의 구성표를 편집해야합니다. 먼저 빌드하고 실행하여 시뮬레이터에 최신 코드를 설치하십시오. 그런 다음 WenderCast 구성표를 클릭하고 구성표 편집을 선택합니다…:

편집 Scheme

실행을 선택하 사이드 바에서는,다음에서 정보 탭 선택을 기다리는 실행 파일을 시작할 수:

선택하기 위한 실행파일을 시작

이 옵션이들에게 디버거를 기다리로 응용 프로그램을 처음 시작된 후 설치하여 연결합니다. 빌드하고 실행하십시오. 설치가 완료되면 이전과 같이xcrun simctl를 사용하여 더 많은 속보를 보냅니다. 알림을 탭하면 앱이 뉴스에 열립니다:

응용 프로그램 열 뉴스 탭

상황을 처리하기 위해 앱을 실행하는 경우 푸시 알림을 받은 다음을 추가AppDelegate:

func application( _ application: UIApplication, didReceiveRemoteNotification userInfo: , fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { guard let aps = userInfo as? else { completionHandler(.failed) return } NewsItem.makeNewsItem(aps)}

이 추출하려고 시도 ap 에서 공급userInfoNewsItem습니다.

문화 이 방법의 응용 프로그램이 실행 중일 때,당신은 필요한 변경 방식 다시 시작 응용 프로그램이 자동으로 테스트해야 합니다. 구성표 편집기의 실행 아래에서 자동으로 선택합니다.빌드하고 실행하십시오. 앱을 포 그라운드와 뉴스 탭에서 계속 실행하십시오. 보내는 다른 뉴스 푸시 알림을하고 시계에 나타나 피드:

두 번째는 푸시 알림을 표시된 뉴스에 tab

That’s it! 귀하의 앱은 이제 마술처럼 속보를받을 수 있습니다. :]

참고:푸시 알림이 도착하도록 보장되지 않습니다. 뉴스의 전체 목록을 갖는 것이이 응용 프로그램에 너무 중요하지 않기 때문에 이것은 WenderCast 에 대한 괜찮습니다. 하지만 일반적으로 푸시 알림을 콘텐츠를 전달하는 유일한 방법으로 사용해서는 안됩니다. 대신 푸시 알림은 사용 가능한 새로운 콘텐츠가 있다는 신호를 보내고 앱이 소스(예:REST API)에서 콘텐츠를 다운로드하도록해야합니다.

작동으로 실행 가능한 알림

실행 가능한 알림을 추가 버튼 사용자 지정 알림 자체입니다. 그 자리에서”답장”또는”즐겨 찾기”를 할 수있는 이메일 알림이나 트윗에서이 사실을 눈치 챘을 것입니다.앱에서 카테고리를 사용하여 알림에 등록할 때 실행 가능한 알림을 정의할 수 있습니다. 알림의 각 범주에는 몇 가지 사전 설정된 사용자 지정 작업이 있을 수 있습니다.

일단 등록하면 서버가 푸시 알림의 범주를 설정할 수 있습니다. 수신시 해당 작업이 사용자에게 제공됩니다.

WenderCast 의 경우 View 라는 사용자 지정 동작으로 뉴스 카테고리를 정의합니다. 이 작업을 수행하면 사용자가 선택한 경우 앱에서 뉴스 기사를 볼 수 있습니다.

에서는registerForPushNotifications()getNotificationSettings()

// 1let viewAction = UNNotificationAction( identifier: Identifiers.viewAction, title: "View", options: )// 2let newsCategory = UNNotificationCategory( identifier: Identifiers.newsCategory, actions: , intentIdentifiers: , options: )// 3UNUserNotificationCenter.current().setNotificationCategories()

가 이를 통해 단계별:

  1. 트리거 될 때 포 그라운드에서 앱을 여는 버튼의 제목보기와 함께 새 알림 작업을 만듭니다. 이 작업에는 ios 가 동일한 알림의 다른 작업을 구별하는 데 사용하는 고유 식별자가 있습니다.
  2. 보기 작업을 포함 할 뉴스 카테고리를 정의합니다. 또한 푸시 알림이 이 범주에 속하도록 지정하기 위해 페이로드가 포함해야 하는 고유 식별자가 있습니다.
  3. setNotificationCategories를 호출하여 새 실행 가능한 알림을 등록하십시오.

앱을 빌드하고 실행하여 새 알림 설정을 등록하십시오.

배경을 보면 다음 페이로드를 통해xcrun simctl유틸리티:

{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}

때 알림이 나타나면,아래로 당겨하는 데에 공개 보기 작업:

푸시 알림을 보 작업을 밝혔

좋은입니다! 보기를 탭하면 WenderCast 가 시작되지만 아직 흥미로운 것을하지 않습니다. 뉴스 항목을 표시하려면 대리자에서 좀 더 이벤트 처리를 수행해야합니다.

알림 작업 처리

알림 작업이 트리거 될 때마다UNUserNotificationCenter는 대리인에게 알립니다. AppDelegate 로 돌아 왔습니다.스위프트에 다음을 추가 확장 클래스의 하단 파일:

// MARK: - UNUserNotificationCenterDelegateextension AppDelegate: UNUserNotificationCenterDelegate { func userNotificationCenter( _ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void ) { // 1 let userInfo = response.notification.request.content.userInfo // 2 if let aps = userInfo as? , let newsItem = NewsItem.makeNewsItem(aps) { (window?.rootViewController as? UITabBarController)?.selectedIndex = 1 // 3 if response.actionIdentifier == Identifiers.viewAction, let url = URL(string: newsItem.link) { let safari = SFSafariViewController(url: url) window?.rootViewController? .present(safari, animated: true, completion: nil) } } // 4 completionHandler() }}

이것은 콜백을 얻을 때 응용 프로그램을 열기 때문에 사용자 지정 작업입니다. 많은 일이 진행되는 것처럼 보일지 모르지만 여기에는 새로운 것이 많지 않습니다.

  1. userInfo사전을 가져옵니다.
  2. NewsItemaps사전을 만들고 뉴스 탭으로 이동하십시오.
  3. actionIdentifier를 확인하십시오. “보기”작업이고 링크가 유효한 URL 인 경우SFSafariViewController에 링크가 표시됩니다.
  4. 시스템이 귀하에게 전달하는 완료 핸들러를 호출하십시오.

마지막 비트가 하나 있습니다.UNUserNotificationCenterapplication(_:didFinishLaunchingWithOptions:)

UNUserNotificationCenter.current().delegate = self

를 구축하고 실행합니다. 응용 프로그램을 닫고,다시 보내는 다른 뉴스와 함께 알림 다음 페이로드:

{ "aps": { "alert": "New Posts!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}

통지를 아래로 당겨기 작업,그리고 당신이 볼 수 WenderCast 현재 사파리보기 컨트롤러 후 바로 시작:

알림 링크 URL 을 열어 사파리에서 보기

축하합니다, 를 구현했는 실행 가능한 알림! 몇 가지 더 보내고 다른 방법으로 알림을 열어 작동 방식을 확인하십시오.

발송하는 실제 장치

을 원하지 않는 경우 푸시 알림을 보내는 실제 장치 또는 당신은 필요가 없는 침묵하는 푸시 알림을 아직,이 섹션을 건너뛸 수 있습고 어디를 갈까요?

하려는 경우,당신은 느낌을 얻을 수있는 방법에 대한 푸시 알림을 보내는 실제 장치려고 침묵 밀어,다음은 당신이해야 할 몇 가지 추가 설치됩니다. PushNotifications 유틸리티를 다운로드하십시오. 이 유틸리티 앱을 사용하여 실제 장치로 알림을 보낼 수 있습니다. 설치하려면 설치 방법 아래의 지침을 따르십시오. 이 유틸리티를 실행하려면 일부 설정을 변경해야하기 때문에 앱을 여는 방법에 특별한주의를 기울이십시오.

Apple 개발자 회원 센터로 가서 로그인하십시오.푸시 알림을 보내려면 인증 키가 필요합니다. 회원센터에서 인증서를 선택,식별자&프로파일을 찾을 키 왼쪽에있는 창입니다. 키 제목의 오른쪽에는+버튼이 있습니다. 그것을 클릭하여 새 키를 만듭니다.

푸시 알림 키와 같은 키에 이름을 지정하십시오. 주요 서비스에서 Apn(Apple Push Notifications service)을 선택합니다.

를 들어 푸시 알림을 키

계속을 클릭한 다음에 등록 다음을 생성하는 화면의 새로운 키입니다. 다운로드를 누릅니다. 다운로드 한 파일은 AuthKey_4SVKWF966R.p8 과 같은 이름을 갖습니다. 이 파일을 추적하십시오—알림을 보내려면 필요합니다! 파일 이름의 4svkwf966r 부분은 키 ID 입니다. 당신은 또한 이것을 필요로 할 것입니다.

당신이 필요로하는 마지막 작품은 당신의 팀 ID 입니다. 회원 센터의 회원 세부 정보 페이지로 이동하여 찾으십시오.

당신이 해냈어! 새 키를 사용하면 이제 첫 번째 푸시 알림을 보낼 준비가되었습니다! 한 가지만 더 필요합니다.실제 장치에서 앱을 실행하고 디버거 콘솔에서 장치 토큰을 복사하여 준비하십시오.

PushNotifications 를 시작하고 다음 단계를 완료하십시오.

  1. 인증에서 토큰을 선택하십시오.
  2. P8 선택 버튼을 클릭하고을 선택합니다.이전 섹션의 p8 파일.
  3. 관련 필드에 키 ID 와 팀 ID 를 입력하십시오.
  4. 본문 아래에 앱의 번들 ID 와 기기 토큰을 입력합니다.
  5. 변경을 요청하는 몸과 같습니다:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}

전송 버튼을 클릭에 PushNotifications.

푸시 알림 검사자

을 받아야 한다의 푸시 알림:

첫 번째는 푸시 알림

한 일반적인 문제 해결

여기에 몇 가지 문제가 발생할 수 있습니다:

  • 일부 알림이 도착 그러나 모든 경우:당신은 전송이 많은 푸시 알림을 동시에 하지만 당신은 받기만 몇 가지,두려워하지 않습니다! 즉 디자인에 의한 것입니다. Apn 은 QoS 를 유지(서비스의 품질)각 장치에 대한 큐. 이 대기열의 크기는 1 이므로 여러 알림을 보내면 마지막 알림이 재정의됩니다.
  • 푸시 알림 서비스에 연결하는 문제:한 가지 가능성은 Apn 에서 사용하는 포트를 차단하는 방화벽이있을 수 있습니다. 이러한 포트의 차단을 해제했는지 확인하십시오.

사용 침묵하는 푸시 알림을

침묵하는 푸시 알림을 수 있어 응용 프로그램이 자동으로 수행하는 몇 가지 작업에서 배경입니다. WenderCast 는이 기능을 사용하여 팟 캐스트 목록을 조용히 새로 고칠 수 있습니다.

적절한 서버 구성 요소를 사용하면 매우 효율적일 수 있습니다. 앱에서 데이터를 지속적으로 폴링할 필요가 없습니다. 새로운 데이터를 사용할 수있을 때마다 자동 푸시 알림을 보낼 수 있습니다.시작하려면 WenderCast 대상을 다시 선택하십시오. 이제 서명&기능 탭을 클릭하고 백그라운드 모드 기능을 추가하십시오. 그런 다음 원격 알림 옵션을 확인하십시오:

확인 원격지 알림을 위한 옵션을 배경 모드 권

이제 응용 프로그램이에 일어나 배경 때 받은 이들 중 하나입니다.AppDelegate 에서

.swift,findapplication(_:didReceiveRemoteNotification:fetchCompletionHandler:).

// 1if aps as? Int == 1 { let podcastStore = PodcastStore.sharedStore // 2 podcastStore.refreshItems { didLoadNewItems in // 3 completionHandler(didLoadNewItems ? .newData : .noData) }} else { // 4 NewsItem.makeNewsItem(aps) completionHandler(.newData)}

코드 위로 이동:

  1. content-available가 1 로 설정되어 있는지 확인합니다. 그렇다면 이것은 자동 알림입니다.
  2. 비동기 네트워크 호출 인 podcast 목록을 새로 고칩니다.
  3. 새로 고침이 완료되면,전화료 처리하는 시스템에 알리는 로드 어떤 새로운 데이터입니다.
  4. 자동 알림이 아닌 경우 뉴스 항목이므로 뉴스 항목을 만드십시오.

정직한 결과로 완료 핸들러를 호출해야합니다. 시스템은 앱이 백그라운드에서 사용하는 배터리 소모 및 시간을 측정하고 필요한 경우 앱을 스로틀 할 수 있습니다.그것이 전부입니다. 이를 테스트하려면 빌드 및 실행,앱 포 그라운드 및 PushNotifications 유틸리티를 통해 다음 페이로드를 푸시하십시오:

{ "aps": { "content-available": 1 }}

모두가 잘 어울리는 경우,아무것도 일어나지 않는 한,새로운 팟캐스트에 추가하여 원격 데이터베이스입니다. 코드가 예상대로 실행되었는지 확인하려면application(_:didReceiveRemoteNotification:fetchCompletionHandler:)에 중단 점을 설정하고 알림이 전송 된 후 단계별로 수행하십시오.

여기서 어디로 가야합니까?

축하합니다! 이 튜토리얼을 완료하고 WenderCast 를 푸시 알림이있는 완벽한 기능을 갖춘 앱으로 만들었습니다!

이 튜토리얼의 상단 또는 하단에있는 자료 다운로드 버튼을 사용하여 완성 된 프로젝트를 다운로드 할 수 있습니다.

로 모든 것을 할 수 있는 푸시 알림 등의 건물 사용자 정의 사용자 인터페이스 및 전송한 중요? 자습서 책에 의해 우리의 푸시 알림은 당신에게 푸시 알림의 고급 기능을 가르 칠 것입니다.

또 다른 리소스는 iOS 용 푸시 알림 자습서:리치 푸시 알림 자습서입니다.

도 푸시 알림을의 중요한 부분 현대 응용 프로그램,그것은 또한 매우 일반 사용자가 감소하는 권한을 응용할 경우 무리하고 알림. 그러나 사려 깊은 디자인으로 푸시 알림을 통해 사용자가 계속해서 앱으로 돌아올 수 있습니다!

귀여운 고양이 notification 벨

이 고양이는 푸시 알림을 수신하는 자신의 저녁 식사 준비되어 있었!

이 푸시 알림 자습서를 즐겼기를 바랍니다. 질문이 있으시면 아래의 토론 포럼에 남겨 주시기 바랍니다.

raywenderlich.com 주

raywenderlich.com 뉴스레터 가장 쉬운 방법입니다 그대로–날짜에 필요한 모든 것을 알고 있으로 모바일 개발자이다.

우리의 튜토리얼과 과정의 주간 다이제스트를 얻고,보너스로 무료 심층 이메일 과정을받을!

평균 평가

4.9/5

추가 평가에 대한 이 콘텐츠

등록에서 추가 평가

17 평

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다