warning:
AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK.
コンテンツカードの統合
コンテンツカードデータモデル
コンテンツカードデータモデルは iOS SDK で使用できます。
データを取得する
コンテンツカードデータモデルにアクセスするには、コンテンツカード更新イベントを購読してください。
1
2
3
4
5
6
| // Subscribe to Content Cards updates
// Note: you should remove the observer where appropriate
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(contentCardsUpdated:)
name:ABKContentCardsProcessedNotification
object:nil];
|
1
2
3
4
5
6
7
| // Called when Content Cards are refreshed (via `requestContentCardsRefresh`)
- (void)contentCardsUpdated:(NSNotification *)notification {
BOOL updateIsSuccessful = [notification.userInfo[ABKContentCardsProcessedIsSuccessfulKey] boolValue];
if (updateIsSuccessful) {
// get the cards using [[Appboy sharedInstance].contentCardsController getContentCards];
}
}
|
1
2
3
4
5
| // Subscribe to content card updates
// Note: you should remove the observer where appropriate
NotificationCenter.default.addObserver(self, selector:
#selector(contentCardsUpdated),
name:NSNotification.Name.ABKContentCardsProcessed, object: nil)
|
1
2
3
4
5
6
7
8
| // Called when the Content Cards are refreshed (via `requestContentCardsRefresh`)
@objc private func contentCardsUpdated(_ notification: Notification) {
if let updateIsSuccessful = notification.userInfo?[ABKContentCardsProcessedIsSuccessfulKey] as? Bool {
if (updateIsSuccessful) {
// get the cards using Appboy.sharedInstance()?.contentCardsController.contentCards
}
}
}
|
Braze から送信された後にカードデータを変更したい場合は、カードデータのディープコピーをローカルに保存し、データを更新してから自分で表示することをおすすめします。カードには ABKContentCardsController
経由でアクセスできます。
コンテンツカードモデル
Braze には、バナー、キャプション付き画像、クラシックの3種類のコンテンツカードが用意されています。各タイプはベース ABKContentCard
クラスから共通のプロパティを継承し、次の追加プロパティがあります。
ベースコンテンツカードモデルプロパティ - ABKContentCard
プロパティ |
説明 |
|
idString |
(参照のみ) Brazeで設定されたカードのID。 |
|
viewed |
このプロパティは、ユーザがカードを閲覧したかどうかを反映する。 |
|
created |
(参照のみ) このプロパティは、Braze からのカードの作成時刻のUNIX タイムスタンプです。 |
|
expiresAt |
(参照のみ)このプロパティは、カードの有効期限のUNIX タイムスタンプです。 |
|
dismissible |
このプロパティは、ユーザーがカードを削除できるかどうかを反映します。 |
|
pinned |
このプロパティは、カードがダッシュボードで「ピン留め」されているかどうかを反映する。 |
|
dismissed |
このプロパティは、ユーザーがカードを削除したかどうかを反映します。 |
|
url |
カードをクリックした後に開封されるURL。HTTP (S) URL でもプロトコル URL でもかまいません。 |
|
openURLInWebView |
このプロパティは、URL をアプリ内で開封するか、外部Web ブラウザーで開封するかを決定します。 |
|
extras |
NSString 値のオプションの NSDictionary 。 |
|
バナーコンテンツカードのプロパティ - ABKBannerContentCard
プロパティ |
説明 |
image |
このプロパティはカードの画像の URL です。 |
imageAspectRatio |
このプロパティはカードの画像の縦横比であり、画像の読み込みが完了する前のヒントとして機能します。ただし、場合によってはプロパティが供給されないことがあります。 |
キャプション付き画像コンテンツカードのプロパティ-ABKCaptionedImageCard
プロパティ |
説明 |
image |
このプロパティはカードの画像の URL です。 |
imageAspectRatio |
このプロパティはカードの画像の縦横比です。 |
title |
カードのタイトルテキスト。 |
cardDescription |
カードの本文。 |
domain |
@”blog.braze.com” のようなプロパティ URL のリンクテキスト。カードの UI に表示され、カードをクリックした時の動作/方向を示すことができます。 |
クラシックコンテンツカードのプロパティ - ABKClassicContentCard
プロパティ |
説明 |
|
image |
(オプション) このプロパティはカードの画像の URL です。 |
|
title |
カードのタイトルテキスト。 |
|
cardDescription |
カードの本文。 |
|
domain |
@”blog.braze.com” のようなプロパティ URL のリンクテキスト。カードの UI に表示して、カードをクリックしたときのアクションと方向を示すことができます。 |
|
カードメソッド
方法 |
説明 |
logContentCardImpression |
特定のカードのインプレッションを手動でBrazeに記録する。 |
logContentCardClicked |
特定のカードのクリックを Braze に手動で記録します。SDK は、カードに有効な値の url プロパティがある場合にのみカードクリックを記録します。 |
logContentCardDismissed |
特定のカードの消去を手動で Braze に記録します。カードのdismissed プロパティがまだtrue に設定されていない場合にのみ、SDKはカードの削除を記録します。 |
isControlCard |
カードが A/B テストのコントロールカードであるかどうかを判断します。 |
詳細については、クラスリファレンスドキュメントを参照してください。
コンテンツカードビューコントローラーの統合
コンテンツカードは、ナビゲーションまたはモーダルという2つのビューコントローラコンテキストと統合できます。
ナビゲーションコンテキスト
ナビゲーションコントローラーに ABKContentCardsTableViewController
インスタンスをプッシュする例:
1
2
3
4
| ABKContentCardsTableViewController *contentCards = [[ABKContentCardsTableViewController alloc] init];
contentCards.title = @"Content Cards Title";
contentCards.disableUnreadIndicator = YES;
[self.navigationController pushViewController:contentCards animated:YES];
|
1
2
3
4
| let contentCards = ABKContentCardsTableViewController()
contentCards.title = "Content Cards Title"
contentCards.disableUnreadIndicator = true
navigationController?.pushViewController(contentCards, animated: true)
|
note:
ナビゲーションバーのタイトルをカスタマイズするには、ABKContentCardsTableViewController
インスタンスの navigationItem
のプロパティを設定します。
モーダルコンテキスト
このモーダルは、ビューコントローラをモーダルビューに表示するために使用され、上部にナビゲーションバー、バーの横に [完了] ボタンが表示されます。
1
2
3
4
| ABKContentCardsViewController *contentCards = [[ABKContentCardsViewController alloc] init];
contentCards.contentCardsViewController.title = @"Content Cards Title";
contentCards.contentCardsViewController.disableUnreadIndicator = YES;
[self.navigationController presentViewController:contentCards animated:YES completion:nil];
|
1
2
3
4
| let contentCards = ABKContentCardsViewController()
contentCards.contentCardsViewController.title = "Content Cards Title"
contentCards.contentCardsViewController.disableUnreadIndicator = true
self.present(contentCards, animated: true, completion: nil)
|
ビューコントローラーの例については、コンテンツカードのサンプルアプリをご覧ください。
note:
ヘッダーをカスタマイズするには、親 ABKContentCardsViewController
インスタンスに埋め込まれている ABKContentCardsTableViewController
インスタンスに属する navigationItem
のタイトルプロパティを設定します。