AppboyKit(Objective-C SDK라고도 함)은 더 이상 지원되지 않으며 Swift SDK. 새로운 기능, 버그 수정, 보안 업데이트 또는 기술 지원은 더 이상 제공되지 않지만 메시징 및 분석 기능은 계속 정상적으로 작동합니다. 자세한 내용은 새로운 Braze Swift SDK 소개.를 참고하세요
푸시 통합
1단계: 푸시 알림 구성
Braze를 사용하여 iOS 푸시 알림을 보내려면 먼저 Apple에서 제공하는 .p8
푸시 알림 파일을 제공해야 합니다. Apple 개발자 설명서에서 설명합니다.
- Apple 개발자 계정에서 인증서, 식별자 및 프로필로 이동합니다.
- 키에서 모두를 선택하고 오른쪽 상단에 있는 추가 버튼(+)을 클릭합니다.
- 키 설명에 서명 키의 고유한 이름을 입력합니다.
- 주요 서비스에서 Apple 푸시 알림 서비스(APN) 확인란을 선택한 다음 계속을 클릭합니다. 확인을 클릭합니다.
- 키 ID를 기록해 두세요. 다운로드를 클릭하여 키를 생성하고 다운로드합니다. 다운로드한 파일은 두 번 이상 다운로드할 수 없으므로 안전한 곳에 저장하세요.
- Braze에서 설정 > 앱 설정으로 이동하여 Apple 푸시 인증서 아래에
.p8
파일을 업로드합니다. 개발 또는 프로덕션 푸시 인증서를 업로드할 수 있습니다. 앱이 App Store에 출시된 후 푸시 알림을 테스트하려면 앱의 개발 버전을 위한 별도의 워크스페이스를 설정하는 것이 좋습니다. - 프롬프트가 표시되면 앱의 번들 ID, 키 ID 및 팀 ID를 입력한 다음, 저장을 클릭합니다.
이전 탐색을 사용하는 경우 설정 관리 > 설정에서 .p8
파일을 업로드할 수 있습니다.
2단계: 푸시 기능 사용
프로젝트 설정의 기능 탭에서 푸시 알림 기능이 켜져 있는지 확인합니다.
개발 및 프로덕션 푸시 인증서가 따로 있는 경우 일반 탭에서 서명을 자동으로 관리 확인란을 선택 취소해야 합니다. Xcode의 자동 코드 서명 기능은 개발 서명만 수행하므로 각 빌드 구성에 대해 서로 다른 프로비저닝 프로필을 선택할 수 있습니다.
3단계: 푸시 알림 등록하기
앱의 application:didFinishLaunchingWithOptions:
델리게이트 메서드에 적절한 코드 샘플을 포함해야 사용자 디바이스가 APN에 등록할 수 있습니다. 애플리케이션의 메인 스레드에서 모든 푸시 연동 코드를 호출해야 합니다.
Braze는 푸시 액션 버튼 지원을 위한 기본 푸시 카테고리도 제공하며, 이 카테고리는 푸시 등록 코드에 수동으로 추가해야 합니다. 추가 통합 단계는 푸시 작업 버튼을 참조하세요.
푸시 모범 사례에서 설명한 대로 커스텀 푸시 프롬프트를 구현한 경우 앱에 푸시 권한을 부여한 후 앱을 실행할 때마다 다음 코드를 호출하고 있는지 확인합니다. 기기 토큰은 임의로 변경될 수 있으므로 앱을 APN에 다시 등록해야 합니다.
UserNotification 프레임워크 사용(iOS 10 이상)
iOS 10에 도입된 UserNotifications
프레임워크(권장)를 사용하는 경우 앱 위임의 application:didFinishLaunchingWithOptions:
메서드에 다음 코드를 추가합니다.
다음 코드 샘플에는 임시 푸시 인증(5번째 줄 및 6번째 줄)을 위한 통합 기능이 포함되어 있습니다. 앱에서 프로비전 권한 부여를 사용하지 않으려면 requestAuthorization
옵션에 UNAuthorizationOptionProvisional
을 추가하는 코드 줄을 제거할 수 있습니다.
푸시 프로비전 인증에 대한 자세한 내용은 iOS 알림 옵션을 참조하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_9_x_Max) {
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
UNAuthorizationOptions options = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
if (@available(iOS 12.0, *)) {
options = options | UNAuthorizationOptionProvisional;
}
[center requestAuthorizationWithOptions:options
completionHandler:^(BOOL granted, NSError * _Nullable error) {
[[Appboy sharedInstance] pushAuthorizationFromUserNotificationCenter:granted];
}];
[[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound) categories:nil];
[[UIApplication sharedApplication] registerForRemoteNotifications];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if #available(iOS 10, *) {
let center = UNUserNotificationCenter.current()
center.delegate = self as? UNUserNotificationCenterDelegate
var options: UNAuthorizationOptions = [.alert, .sound, .badge]
if #available(iOS 12.0, *) {
options = UNAuthorizationOptions(rawValue: options.rawValue | UNAuthorizationOptions.provisional.rawValue)
}
center.requestAuthorization(options: options) { (granted, error) in
Appboy.sharedInstance()?.pushAuthorization(fromUserNotificationCenter: granted)
}
UIApplication.shared.registerForRemoteNotifications()
} else {
let types : UIUserNotificationType = [.alert, .badge, .sound]
let setting : UIUserNotificationSettings = UIUserNotificationSettings(types:types, categories:nil)
UIApplication.shared.registerUserNotificationSettings(setting)
UIApplication.shared.registerForRemoteNotifications()
}
앱 실행이 완료되기 전에 center.delegate = self
를 사용하여 위임 오브젝트를 동기적으로 할당해야 합니다(가급적이면 application:didFinishLaunchingWithOptions:
에서 할당). 그렇게 하지 않으면 앱에서 수신 푸시 알림을 놓칠 수 있습니다. Apple의 UNUserNotificationCenterDelegate
문서를 참조하세요.
사용자 알림 프레임워크가 없는 경우
UserNotifications
프레임워크를 사용하지 않는 경우 앱 델리게이트의 application:didFinishLaunchingWithOptions:
메소드에 다음 코드를 추가하세요:
1
2
3
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound) categories:nil];
[[UIApplication sharedApplication] registerForRemoteNotifications];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
1
2
3
4
let types : UIUserNotificationType = UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert
var setting : UIUserNotificationSettings = UIUserNotificationSettings(forTypes: types, categories: nil)
UIApplication.shared.registerUserNotificationSettings(setting)
UIApplication.shared.registerForRemoteNotifications()
4단계: Braze에 푸시 토큰 등록
APN 등록이 완료되면 푸시 알림에 대해 사용자를 활성화하도록 결과 deviceToken
을 Braze에 전달하기 위해 다음 메서드를 변경해야 합니다.
application:didRegisterForRemoteNotificationsWithDeviceToken:
메소드에 다음 코드를 추가합니다:
1
[[Appboy sharedInstance] registerDeviceToken:deviceToken];
앱의 application(_:didRegisterForRemoteNotificationsWithDeviceToken:)
메소드에 다음 코드를 추가합니다:
1
Appboy.sharedInstance()?.registerDeviceToken(deviceToken)
application:didRegisterForRemoteNotificationsWithDeviceToken:
위임 메서드는 [[UIApplication sharedApplication] registerForRemoteNotifications]
호출 후 항상 호출됩니다. 다른 푸시 서비스에서 Braze로 마이그레이션하고 사용자 기기가 이미 APN에 등록되어 있는 경우, 이 메서드는 다음에 메서드를 호출할 때 기존 등록에서 토큰을 수집하며, 사용자는 푸시에 다시 옵트인하지 않아도 됩니다.
5단계: 푸시 처리 사용
다음 코드는 수신된 푸시 알림을 Braze에 전달하며, 푸시 분석 및 링크 처리를 로깅하는 데 필요합니다. 애플리케이션의 메인 스레드에서 모든 푸시 연동 코드를 호출해야 합니다.
iOS 10+
iOS 10 이상을 대상으로 빌드할 때는 UserNotifications
프레임워크를 통합하고 다음을 수행하는 것이 좋습니다:
애플리케이션의 application:didReceiveRemoteNotification:fetchCompletionHandler:
메소드에 다음 코드를 추가합니다:
1
2
3
[[Appboy sharedInstance] registerApplication:application
didReceiveRemoteNotification:userInfo
fetchCompletionHandler:completionHandler];
다음으로 앱의 (void)userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
메소드에 다음 코드를 추가합니다:
1
2
3
[[Appboy sharedInstance] userNotificationCenter:center
didReceiveNotificationResponse:response
withCompletionHandler:completionHandler];
포그라운드 푸시 처리
앱이 포그라운드에 있는 동안 푸시 알림을 표시하려면 userNotificationCenter:willPresentNotification:withCompletionHandler:
를 구현합니다.
1
2
3
4
5
6
7
8
9
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
if (@available(iOS 14.0, *)) {
completionHandler(UNNotificationPresentationOptionList | UNNotificationPresentationOptionBanner);
} else {
completionHandler(UNNotificationPresentationOptionAlert);
}
}
포그라운드 알림을 클릭하면 iOS 10 푸시 위임(userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
)이 호출되고 Braze는 푸시 클릭 이벤트를 기록합니다.
앱의 application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
메소드에 다음 코드를 추가합니다:
1
2
3
Appboy.sharedInstance()?.register(application,
didReceiveRemoteNotification: userInfo,
fetchCompletionHandler: completionHandler)
다음으로 앱의 userNotificationCenter(_:didReceive:withCompletionHandler:)
메소드에 다음 코드를 추가합니다:
1
2
3
Appboy.sharedInstance()?.userNotificationCenter(center,
didReceive: response,
withCompletionHandler: completionHandler)
포그라운드 푸시 처리
앱이 포그라운드에 있는 동안 푸시 알림을 표시하려면 userNotificationCenter(_:willPresent:withCompletionHandler:)
를 구현합니다.
1
2
3
4
5
6
7
8
9
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
if #available(iOS 14.0, *) {
completionHandler([.list, .banner]);
} else {
completionHandler([.alert]);
}
}
포그라운드 알림을 클릭하면 iOS 10 푸시 위임(userNotificationCenter(_:didReceive:withCompletionHandler:)
)이 호출되고 Braze는 푸시 클릭 이벤트를 기록합니다.
iOS 10 이전 버전
iOS 10에서는 푸시를 클릭하면 더 이상 application:didReceiveRemoteNotification:fetchCompletionHandler:
를 호출하지 않도록 동작이 업데이트되었습니다. 따라서 iOS 10 이상에 대한 빌드로 업데이트하지 않고 UserNotifications
프레임워크를 사용하는 경우 이전 통합과 달리 이전 스타일의 위임 모두에서 Braze를 호출해야 합니다.
iOS 10 이전 버전의 SDK에 대해 빌드된 앱의 경우 다음 지침을 사용합니다.
푸시 알림에서 열람 추적을 활성화하려면 앱의 application:didReceiveRemoteNotification:fetchCompletionHandler:
메서드에 다음 코드를 추가합니다.
1
2
3
[[Appboy sharedInstance] registerApplication:application
didReceiveRemoteNotification:userInfo
fetchCompletionHandler:completionHandler];
iOS 10에서 푸시 분석을 지원하려면 앱의 application:didReceiveRemoteNotification:
위임 메서드에 다음 코드도 추가해야 합니다.
1
2
[[Appboy sharedInstance] registerApplication:application
didReceiveRemoteNotification:userInfo];
푸시 알림에서 열람 추적을 활성화하려면 앱의 application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
메서드에 다음 코드를 추가합니다.
1
2
3
Appboy.sharedInstance()?.register(application,
didReceiveRemoteNotification: userInfo,
fetchCompletionHandler: completionHandler)
iOS 10에서 푸시 분석을 지원하려면 앱의 application(_:didReceiveRemoteNotification:)
위임 메서드에 다음 코드도 추가해야 합니다.
1
2
Appboy.sharedInstance()?.register(application,
didReceiveRemoteNotification: userInfo)
6단계: 딥링킹
푸시에서 앱으로의 딥링킹은 표준 푸시 통합 설명서를 통해 자동으로 처리됩니다. 앱의 특정 위치에 딥링크를 추가하는 방법에 대해 자세히 알아보려면 고급 사용 사례를 참조하세요.
7단계: 단위 테스트(선택 사항)
방금 수행한 통합 단계에 대한 테스트 범위를 추가하려면 푸시 단위 테스트를 구현하세요.