iOS 개발자는 멋진 앱을 지속적으로 사용하는 사람들을 상상하는 것을 좋아합니다. 그러나 물론 사용자는 때때로 앱을 닫고 다른 활동을 수행해야합니다. 세탁은 스스로 접히지 않습니다. 행복,푸시 알림을 수 있는 개발자가 사용자에게 도달 및 작은 작업을 수행할 때도 사용자가 사용하지 않을 수 있습니다. 이 자습서에서는 다음과 같은 방법을 배웁니다.
- 푸시 알림을 받도록 앱을 구성합니다.
- 사용자에게 표시하거나 다른 작업을 수행합니다.
시작하기
푸시 알림이란 무엇입니까? 앱이 실행 중이 아니거나 전화가 잠자는 경우에도 Apn(Apple Push Notification service)을 통해 앱으로 전송되는 메시지입니다. 당신은 무엇을 위해 푸시 알림을 사용할 수 있습니까?
- 앱의 새로운 것에주의를 환기시키는 경고라는 짧은 문자 메시지를 표시합니다.
- 알림 소리를 재생합니다.
- 앱의 아이콘에 배지 번호를 설정하여 사용자가 새 항목이 있음을 알립니다.
- 사용자가 응용 프로그램을 열지 않고 취할 수있는 조치를 제공합니다.
- 미디어 첨부 파일을 표시합니다.
- 앱이 백그라운드에서 작업을 수행 할 수 있도록 침묵하십시오.
- 알림을 스레드로 그룹화합니다.
- 전달 된 알림을 편집하거나 제거합니다.
- 를 표시하기 전에 알림을 변경하려면 코드를 실행하십시오.
- 알림에 대한 사용자 정의 대화 형 UI 를 표시합니다.그리고 아마 더.
이 튜토리얼은 앱에서 푸시 알림을 만들기 시작하는 데 도움이되는 이러한 용도의 많은 부분을 다룹니다. 이 자습서를 완료하려면 다음이 필요합니다.
- Xcode11.4 이상. 이전 버전의 Xcode 는 시뮬레이터를 사용하여 푸시 알림을 지원하지 않습니다.
- 애플 개발자 프로그램 멤버쉽은 푸시 알림 자격으로 앱을 컴파일 할 수 있도록.
를 보내고 푸시 알림을 받을 수행해야 합니다의 세 가지 주요 작업이 수행됩니다:
- 앱을 구성하고 그것을 등록 APNs.
- Apn 을 통해 서버에서 특정 장치로 푸시 알림을 보냅니다. Xcode 로 시뮬레이션 할 것입니다.
- 앱에서 콜백을 사용하여 푸시 알림을 수신하고 처리합니다.
푸시 알림을 보내는 것은 앱의 서버 구성 요소의 책임입니다. 많은 앱이 제 3 자를 사용하여 푸시 알림을 보냅니다. 다른 사람들은 사용자 정의 솔루션이나 인기있는 라이브러리(예:휴스턴)를 사용합니다. 이 튜토리얼에서는 푸시 메시지 전송 만 터치 할 것이므로 여기에서 어디로 가야하는지 반드시 확인하십시오. 섹션 푸시 알림에 대한 지식을 구축 할 수 있습니다.
시작하려면이 자습서의 상단 또는 하단에있는 자료 다운로드 버튼을 사용하여 WenderCast starter project 를 다운로드하십시오. WenderCast 에 대한 모든 사람의 이동-투 소스입니다 raywenderlich.com 팟 캐스트 및 속보. starter 폴더에서 WenderCast 를 엽니다.xcodeproj. 프로젝트 네비게이터에서 WenderCast 를 선택한 다음 WenderCast 대상을 선택합니다. 일반&기능 탭에서 개발 팀을 선택합니다. 시뮬레이터에서 빌드하고 실행하십시오.
WenderCast 의 목록을 표시합니다 raywenderlich.com 팟캐스트와 사용자는 재생할 수 있습니다. 그러나 새로운 팟 캐스트를 사용할 수 있고 뉴스 탭이 비어있을 때 사용자에게 알려주지 않습니다! 곧 푸시 알림의 힘으로 이러한 문제를 해결할 것입니다.
푸시 알림 송수신
앱 구성
보안은 푸시 알림에 매우 중요합니다. 다른 사람이 앱을 통해 사용자에게 푸시 알림을 보내는 것을 원하지 않습니다. 푸시 알림을 안전하게 수신하도록 앱을 구성하려면 몇 가지 작업을 수행해야합니다.
푸시 알림 서비스 활성화
먼저 번들 식별자를 변경해야합니다. Xcode 에서 프로젝트 네비게이터에서 WenderCast 를 강조 표시 한 다음 WenderCast 대상을 선택하십시오. 일반을 선택한 다음 번들 식별자를 고유 한 것으로 변경하여 Apple 의 푸시 알림 서버가이 앱으로 직접 푸시 할 수 있도록하십시오.
다음에,당신은 당신을 만들 필요가 있는 응용 프로그램 ID 에서 당신의 개발자 계정 사용하는 푸시 알림시기 바랍니다. Xcode 에는 간단한 방법이 WenderCast 대상은 여전히 선택 클릭하인&기능 탭을 클릭합+기능 버튼입니다. 필터 필드에”push”를 입력하고 Enter 키를 누릅니다.
추가한 후에 푸시 알림을 권리,프로젝트에 다음과 같아야 합니다:
뒤에서 앱 ID 를 만든 다음 푸시 알림 권한을 추가합니다. 로그인할 수 있습으로 애플은 개발자 센터 이를 확인하려면:
의 모든 구성해야 합니다. 당신은 응용 프로그램 강화를 시작할 준비가되었습니다.
사용자 알림 권한 요청
푸시 알림에 등록하기 위해 수행하는 두 단계가 있습니다. 먼저 알림을 표시 할 수있는 사용자의 권한을 얻어야합니다. 그런 다음 원격(푸시)알림을받을 장치를 등록 할 수 있습니다. 모든 것이 잘되면 시스템은 장치 토큰을 제공합니다.이 토큰은이 장치에”주소”라고 생각할 수 있습니다.
WenderCast 에서는 앱 실행 후 즉시 푸시 알림에 등록합니다. 먼저 사용자 권한을 요청하십시오.나는 이것을 할 수 없다.스위프트하고 파일 상단에 다음을 추가하십시오:
import UserNotifications
다음에 다음을 추가하는 방법의 말AppDelegate
func registerForPushNotifications() { //1 UNUserNotificationCenter.current() //2 .requestAuthorization(options: ) { granted, _ in //3 print("Permission granted: \(granted)") }}
이 코드:
-
UNUserNotificationCenter
핸들이 모두 알림 관련 활동,응용 프로그램에서 푸시 알림을 포함하여. - 당신은
requestAuthorization(options:completionHandler:)
options
는 앱에서 사용하려는 알림 유형을 나타냅니다. - 완료 핸들러는 권한 부여 성공 여부를 나타내는 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
.authorized
UIApplication.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
오류가 표시됩니다. 당분간은 무시할 수 있습니다. 나중에 실제 장치에서 실행할 때 콘솔 출력에서 토큰을 받아야합니다. 예를 들어 다음과 같습니다.
시뮬레이션 된 푸시 알림 보내기
텍스트 편집기를 사용하여 먼저 호출 된 파일을 만듭니다.Xcode 의 simctl 유틸리티로 전달할 apn. 다음 JSON 텍스트에 붙여 넣고 파일을 저장하십시오.
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
이 JSON 의 구조는 다음 섹션에서 설명합니다. 인내심,메뚜기.시뮬레이터에서 앱을 빌드하고 다시 실행 한 다음 앱을 배경으로하거나 장치를 잠급니다. 앱이 아직 포 그라운드에있는 동안 푸시 알림을 처리 할 수 없습니다.
simctl 을 사용하려면 앱을 실행하는 시뮬레이터의 장치 식별자를 알아야합니다. 시뮬레이터에서 실행되는 장치가 하나만있는 경우 식별자 대신 부팅을 사용할 수 있습니다. 을 얻을 식별자,Xcode 에서 선택 Windows▸장치 및 시뮬레이터를 선택한 후 시뮬레이터 맨 위에 있는 탭을 선택 시뮬레이터를 사용하 목록에서 왼쪽에 있습니다. 식별자를 복사하려면 마우스를 사용합니다. 완전히 보려면 대화 상자를 넓혀야 할 수도 있습니다.
터미널 앱을 열고 변화하는 디렉토리에 저장된 첫 번째.apn. 그런 다음 device_identifier 대신 Xcode 의 booted 또는 장치 식별자를 사용하여 다음 명령을 입력하십시오.xcrun simctl push device_identifier bundle_identifier first.apn
device_identifier
bundle_identifier
응용 프로그램의 번들을 식별자 하는 사용할 때 처음에 설정 프로젝트입니다. 예를 들어 다음과 같습니다.
명령을 실행하고 당신이 볼 수 푸시 알림을 표시 시뮬레이터에!
앱을 실행하려면 알림을 누릅니다.
멋지지 않습니까? :]
을 보고 기본 푸시 알림
으로 이동하기 전에 처리하는 푸시 알림을 살펴보고,몸의 알림을 보낸다.
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
페이로드 JSON 사전을 포함하는 적어도 하나의 항목,aps,또한 사전입니다. 이 예제에서는aps
alert
sound
,andlink_url
. 장치가이 푸시 알림을 받으면”속보”라는 텍스트와 함께 경고보기가 표시됩니다!”그리고 표준 사운드 효과를 재생합니다.이 필드는 사용자 정의 필드입니다. 이와 같이 페이로드에 사용자 정의 필드를 추가 할 수 있으며 응용 프로그램에 전달됩니다. 아직 앱 내부에서 처리하지 않으므로이 키/값 쌍은 현재 아무 것도하지 않습니다.
link_url
aps
사전 항목보다는 그 안에. 그것은 여전히 작동하는 경우 당신은 장소 안에,하지만 우리는 항상 제안을 준수하는 애플의 문서와 올바른 것입니다 이것이 우리의 다음 업데이트를 이습니다.가 내장된 키를 추가할 수 있는aps
사전십시오(공식 페이로드를 참조해 더 많은 정보가):
- 알림: 앞의 예에서와 같이 문자열이거나 사전 일 수 있습니다. 사전으로 텍스트를 현지화하거나 알림의 다른 측면을 변경할 수 있습니다.
- 배지:앱 아이콘 모서리에 표시되는 숫자입니다. 이를 0 으로 설정하여 배지를 제거할 수 있습니다.
- 사운드:응용 프로그램에있는 사용자 정의 알림 사운드의 파일의 이름입니다. 이들은 30 초보다 짧아야합니다.
- thread-id:이 키를 사용하여 알림을 그룹화합니다.
- 카테고리:이것은 알림에 사용자 지정 작업을 표시하는 데 사용되는 알림의 범주를 정의합니다. 당신은 곧 이것을 탐구 할 것입니다.
- content-available:이 키를
1
로 설정하면 푸시 알림이 무음 상태가됩니다. 아래의 자동 푸시 알림 섹션에서 이에 대해 배우게됩니다. - mutable-content:이 키를
1
로 설정하면 앱이 알림을 표시하기 전에 수정할 수 있습니다. - target-content-id:이것은 앞으로 가져온 창의 식별자입니다.
이 외에도 페이로드가 4,096 바이트를 초과하지 않는 한 원하는만큼 사용자 정의 데이터를 추가 할 수 있습니다.
일단 당신이 충분히 재미있고 이러한 옵션에 푸시 알림을 보내는 귀하의 시뮬레이터,다음 섹션!
처리 푸시 알림을
이 섹션에서는 방법을 배우게 작업을 수행할 때 앱 알림을 받을 때 사용자가 누릅니다.
푸시 알림을받을 때 발생하는 이해
앱이 푸시 알림을 받으면 iOS 는UIApplicationDelegate
에서 메소드를 호출합니다.
you’ll 를 처리하기 위해 필요한 알림 따라 다르게 어떤 상태에의 응용 프로그램은 때 통지를 받습니다.
- 앱 실행되지 않았고 사용자 시작하여 그것을 눌러 푸시 알림,iOS 통과한 알림 응용 프로그램에는
launchOptions
application(_: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}
이것은 무슨 일을 하는지.
- 는지 여부를 확인에 대한 값
UIApplication.LaunchOptionsKey.remoteNotification
launchOptions
. 그럴 경우 알림에서 앱이 시작되었습니다. 여기에는 보낸 푸시 알림 페이로드가 포함됩니다. -
aps
NewsItem
를 만듭니다. - 탭 컨트롤러의 선택한 탭을 뉴스 섹션으로 변경하십시오.
이를 테스트하려면 WenderCast 의 구성표를 편집해야합니다. 먼저 빌드하고 실행하여 시뮬레이터에 최신 코드를 설치하십시오. 그런 다음 WenderCast 구성표를 클릭하고 구성표 편집을 선택합니다…:
실행을 선택하 사이드 바에서는,다음에서 정보 탭 선택을 기다리는 실행 파일을 시작할 수:
이 옵션이들에게 디버거를 기다리로 응용 프로그램을 처음 시작된 후 설치하여 연결합니다. 빌드하고 실행하십시오. 설치가 완료되면 이전과 같이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 에서 공급userInfo
NewsItem
습니다.
문화 이 방법의 응용 프로그램이 실행 중일 때,당신은 필요한 변경 방식 다시 시작 응용 프로그램이 자동으로 테스트해야 합니다. 구성표 편집기의 실행 아래에서 자동으로 선택합니다.빌드하고 실행하십시오. 앱을 포 그라운드와 뉴스 탭에서 계속 실행하십시오. 보내는 다른 뉴스 푸시 알림을하고 시계에 나타나 피드:
That’s it! 귀하의 앱은 이제 마술처럼 속보를받을 수 있습니다. :]
작동으로 실행 가능한 알림
실행 가능한 알림을 추가 버튼 사용자 지정 알림 자체입니다. 그 자리에서”답장”또는”즐겨 찾기”를 할 수있는 이메일 알림이나 트윗에서이 사실을 눈치 챘을 것입니다.앱에서 카테고리를 사용하여 알림에 등록할 때 실행 가능한 알림을 정의할 수 있습니다. 알림의 각 범주에는 몇 가지 사전 설정된 사용자 지정 작업이 있을 수 있습니다.
일단 등록하면 서버가 푸시 알림의 범주를 설정할 수 있습니다. 수신시 해당 작업이 사용자에게 제공됩니다.
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()
가 이를 통해 단계별:
- 트리거 될 때 포 그라운드에서 앱을 여는 버튼의 제목보기와 함께 새 알림 작업을 만듭니다. 이 작업에는 ios 가 동일한 알림의 다른 작업을 구별하는 데 사용하는 고유 식별자가 있습니다.
- 보기 작업을 포함 할 뉴스 카테고리를 정의합니다. 또한 푸시 알림이 이 범주에 속하도록 지정하기 위해 페이로드가 포함해야 하는 고유 식별자가 있습니다.
-
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() }}
이것은 콜백을 얻을 때 응용 프로그램을 열기 때문에 사용자 지정 작업입니다. 많은 일이 진행되는 것처럼 보일지 모르지만 여기에는 새로운 것이 많지 않습니다.
-
userInfo
사전을 가져옵니다. -
NewsItem
aps
사전을 만들고 뉴스 탭으로 이동하십시오. -
actionIdentifier
를 확인하십시오. “보기”작업이고 링크가 유효한 URL 인 경우SFSafariViewController
에 링크가 표시됩니다. - 시스템이 귀하에게 전달하는 완료 핸들러를 호출하십시오.
마지막 비트가 하나 있습니다.UNUserNotificationCenter
application(_:didFinishLaunchingWithOptions:)
UNUserNotificationCenter.current().delegate = self
를 구축하고 실행합니다. 응용 프로그램을 닫고,다시 보내는 다른 뉴스와 함께 알림 다음 페이로드:
{ "aps": { "alert": "New Posts!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}
통지를 아래로 당겨기 작업,그리고 당신이 볼 수 WenderCast 현재 사파리보기 컨트롤러 후 바로 시작:
축하합니다, 를 구현했는 실행 가능한 알림! 몇 가지 더 보내고 다른 방법으로 알림을 열어 작동 방식을 확인하십시오.
발송하는 실제 장치
을 원하지 않는 경우 푸시 알림을 보내는 실제 장치 또는 당신은 필요가 없는 침묵하는 푸시 알림을 아직,이 섹션을 건너뛸 수 있습고 어디를 갈까요?
하려는 경우,당신은 느낌을 얻을 수있는 방법에 대한 푸시 알림을 보내는 실제 장치려고 침묵 밀어,다음은 당신이해야 할 몇 가지 추가 설치됩니다. PushNotifications 유틸리티를 다운로드하십시오. 이 유틸리티 앱을 사용하여 실제 장치로 알림을 보낼 수 있습니다. 설치하려면 설치 방법 아래의 지침을 따르십시오. 이 유틸리티를 실행하려면 일부 설정을 변경해야하기 때문에 앱을 여는 방법에 특별한주의를 기울이십시오.
Apple 개발자 회원 센터로 가서 로그인하십시오.푸시 알림을 보내려면 인증 키가 필요합니다. 회원센터에서 인증서를 선택,식별자&프로파일을 찾을 키 왼쪽에있는 창입니다. 키 제목의 오른쪽에는+버튼이 있습니다. 그것을 클릭하여 새 키를 만듭니다.
푸시 알림 키와 같은 키에 이름을 지정하십시오. 주요 서비스에서 Apn(Apple Push Notifications service)을 선택합니다.
계속을 클릭한 다음에 등록 다음을 생성하는 화면의 새로운 키입니다. 다운로드를 누릅니다. 다운로드 한 파일은 AuthKey_4SVKWF966R.p8 과 같은 이름을 갖습니다. 이 파일을 추적하십시오—알림을 보내려면 필요합니다! 파일 이름의 4svkwf966r 부분은 키 ID 입니다. 당신은 또한 이것을 필요로 할 것입니다.
당신이 필요로하는 마지막 작품은 당신의 팀 ID 입니다. 회원 센터의 회원 세부 정보 페이지로 이동하여 찾으십시오.
당신이 해냈어! 새 키를 사용하면 이제 첫 번째 푸시 알림을 보낼 준비가되었습니다! 한 가지만 더 필요합니다.실제 장치에서 앱을 실행하고 디버거 콘솔에서 장치 토큰을 복사하여 준비하십시오.
PushNotifications 를 시작하고 다음 단계를 완료하십시오.
- 인증에서 토큰을 선택하십시오.
- P8 선택 버튼을 클릭하고을 선택합니다.이전 섹션의 p8 파일.
- 관련 필드에 키 ID 와 팀 ID 를 입력하십시오.
- 본문 아래에 앱의 번들 ID 와 기기 토큰을 입력합니다.
- 변경을 요청하는 몸과 같습니다:
{ "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)}
코드 위로 이동:
-
content-available
가 1 로 설정되어 있는지 확인합니다. 그렇다면 이것은 자동 알림입니다. - 비동기 네트워크 호출 인 podcast 목록을 새로 고칩니다.
- 새로 고침이 완료되면,전화료 처리하는 시스템에 알리는 로드 어떤 새로운 데이터입니다.
- 자동 알림이 아닌 경우 뉴스 항목이므로 뉴스 항목을 만드십시오.
정직한 결과로 완료 핸들러를 호출해야합니다. 시스템은 앱이 백그라운드에서 사용하는 배터리 소모 및 시간을 측정하고 필요한 경우 앱을 스로틀 할 수 있습니다.그것이 전부입니다. 이를 테스트하려면 빌드 및 실행,앱 포 그라운드 및 PushNotifications 유틸리티를 통해 다음 페이로드를 푸시하십시오:
{ "aps": { "content-available": 1 }}
모두가 잘 어울리는 경우,아무것도 일어나지 않는 한,새로운 팟캐스트에 추가하여 원격 데이터베이스입니다. 코드가 예상대로 실행되었는지 확인하려면application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
에 중단 점을 설정하고 알림이 전송 된 후 단계별로 수행하십시오.
여기서 어디로 가야합니까?
축하합니다! 이 튜토리얼을 완료하고 WenderCast 를 푸시 알림이있는 완벽한 기능을 갖춘 앱으로 만들었습니다!
이 튜토리얼의 상단 또는 하단에있는 자료 다운로드 버튼을 사용하여 완성 된 프로젝트를 다운로드 할 수 있습니다.
로 모든 것을 할 수 있는 푸시 알림 등의 건물 사용자 정의 사용자 인터페이스 및 전송한 중요? 자습서 책에 의해 우리의 푸시 알림은 당신에게 푸시 알림의 고급 기능을 가르 칠 것입니다.
또 다른 리소스는 iOS 용 푸시 알림 자습서:리치 푸시 알림 자습서입니다.
도 푸시 알림을의 중요한 부분 현대 응용 프로그램,그것은 또한 매우 일반 사용자가 감소하는 권한을 응용할 경우 무리하고 알림. 그러나 사려 깊은 디자인으로 푸시 알림을 통해 사용자가 계속해서 앱으로 돌아올 수 있습니다!
이 고양이는 푸시 알림을 수신하는 자신의 저녁 식사 준비되어 있었!
이 푸시 알림 자습서를 즐겼기를 바랍니다. 질문이 있으시면 아래의 토론 포럼에 남겨 주시기 바랍니다.
raywenderlich.com 주
raywenderlich.com 뉴스레터 가장 쉬운 방법입니다 그대로–날짜에 필요한 모든 것을 알고 있으로 모바일 개발자이다.
우리의 튜토리얼과 과정의 주간 다이제스트를 얻고,보너스로 무료 심층 이메일 과정을받을!
평균 평가
4.9/5
추가 평가에 대한 이 콘텐츠
등록에서 추가 평가