Customization (사용자화)
이 문서는 채널톡 iOS SDK (이하 SDK)의 커스텀 옵션에 대해서 설명합니다.
채널 버튼
이 단락은 채널 버튼의 커스텀 옵션에 대해서 설명합니다.
1. 채널 버튼 위치
ChannelButtonOption
을 통해서 채널 버튼의 위치를 조절할 수 있습니다.
이 옵션을 수정 한 뒤, BootConfig
의 속성값에 대입하여 적용합니다. 예시는 다음과 같습니다.
let config = BootConfig()
config.channelButtonOption = ChannelButtonOption(
position: .left,
xMargin: 100,
yMargin: 200
)
ChannelIO.boot(with: config) {
...
}
BootConfig *config = [BootConfig alloc] init];
ChannelButtonOption* option = [ChannelButtonOption alloc] initWithPosition: ChannelButtonPositionLeft xMargin:20 yMargin: 20];
[config setChannelButtonOption: option];
2. 커스텀 채널 버튼
채널 버튼 모양 수정을 원한다면, 본인만의 버튼을 만들어 사용해야 합니다.
- 이전의 기본 채널 버튼은 보이지 않아야 하므로,
ChannelIO.hideChannelButton
함수를 호출합니다. - 버튼을 만들어 원하는 위치에 띄운 뒤, 해당 버튼의 터치 이벤트에
ChannelIO.showMessenger
이벤트를 연결합니다.
3. 읽지 않은 메시지 숫자
채널 버튼을 커스텀한 경우, 유저의 읽지 않은 메시지 숫자가 노출되지 않습니다. 이 경우에는 onBadgeChanged
를 이용하여 읽지 않은 메시지 숫자를 보여줄 것을 권장합니다.
이 onBadgeChanged
를 구현하기 위해 ChannelPluginDelegate
를 채택하여야 합니다.
예시는 다음과 같습니다.
class MyAwesomeApp: UIViewController {
func viewDidLoad() {
super.viewDidLoad()
ChannelIO.delegate = self
}
}
extension MyAwesomeApp: ChannelPluginDelegate {
func onBadgeChanged(count: Int) {
//do something with count
}
}
//in MyAwesomeApp.h
@interface MyAwesomeApp : UIViewController<ChannelPluginDelegate>
//your properties..
@end
//in MyAwesomeApp.m
@implementation MyAwesomeApp
- (void)viewDidLoad {
[super viewDidLoad];
ChannelIO.delegate = self;
}
- (void)onBadgeChangedWithCount:(NSInteger)count {
//do something with count
}
인앱 푸시 알림
이 단락은 인앱 푸시 알림 커스텀에 대해서 설명합니다.
SDK는 기본적으로 사용자의 앱으로 다음과 같은 인앱 푸시 알림(사진)을 보냅니다. 이는 유저가 앱을 사용중인 온라인 상태에서 유효합니다.
1. 인앱 푸시 알림 정보
인앱 푸시알림 정보를 받기 위해서는, ChannelPluginDelegate
를 채택하고, onPopupDataRecevied
메소드를 구현합니다. 예시는 다음과 같습니다.
class MyAwesomeApp: UIViewController {
func viewDidLoad() {
super.viewDidLoad()
ChannelIO.delegate = self
}
}
extension MyAwesomeApp: ChannelPluginDelegate {
func onPopupDataReceived(event: PopupData) {
...
}
}
//in MyAwesomeApp.h
@interface MyAwesomeApp : UIViewController<ChannelPluginDelegate>
//your properties..
@end
//in MyAwesomeApp.m
@implementation MyAwesomeApp
- (void)viewDidLoad {
[super viewDidLoad];
ChannelIO.delegate = self;
}
- (void)onPopupDataReceivedWithEvent:(PopupData *)event {
//configure your view with push event data
//and display
}
onPopupDataReceived
의 메소드 파라미터의 명세는 PopupData
를 참고합니다.
2. 커스텀 인앱 푸시 알림
인앱 푸시 화면을 수정하려면, 본인만의 인앱 푸시 알림 화면을 만들어 사용해야 합니다.
- 이전의 기존 인앱 푸시 알림 뷰는 보이지 않아야 하므로,
BootConfig
의hidePopup
옵션을true
로 설정합니다. - 위
BootConfig
를 담아 새로boot
합니다. - 1번에서 구현한
onPopupDataReceivced
메소드를 이용하여 본인만의 인앱 푸시 알림 화면을 채웁니다.
이벤트 트래킹
이 단락에서는 SDK의 커스텀 이벤트 트래킹에 대해서 설명합니다.
1. 커스텀 이벤트 트래킹
유저의 특정 동작을 트래킹 하기 위해서 track
메소드를 사용합니다.
다음은, SDK를 사용하는 유저가 특정 뷰 컨트롤러에 접근했을때의 이벤트를 로깅하는 예제입니다.
class MyAwesomeAppViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
ChannelIO.track(
eventName:"awesome_visited",
eventProperty: [
"visitedAt": "1521232131",
"hasClickedButtonA": true,
"otherMeta": "etc",
]
)
}
}
//in MyAwesomeApp.h
@interface MyAwesomeApp : UIViewController
//your properties..
@end
//in MyAwesomeApp.m
@implementation MyAwesomeApp
- (void)viewDidLoad {
[super viewDidLoad];
[ChannelIO trackWithEventName:@"awesome_visited" eventProperty:{
@"visitedAt": @"",
@"hasClickedButtonA": @(YES),
@"otherMeta": @"etc"
}];
}