NativebrikExperiment
定義
public class NativebrikExperiment {
// dispatching an event to the experiment
public func dispatch(_ event: NativebrikEvent)
// embedding a component for swiftui and uikit
public func embedding(
_ id: String,
arguments: Any? = nil,
onEvent: ((_ event: ComponentEvent) -> Void)? = nil
) -> some View
public func embedding<V: View>(
_ id: String,
arguments: Any? = nil,
onEvent: ((_ event: ComponentEvent) -> Void)? = nil,
@ViewBuilder content: (@escaping (_ phase: AsyncEmbeddingPhase) -> V)
) -> some View
public func embeddingUIView(
_ id: String,
arguments: Any? = nil,
onEvent: ((_ event: ComponentEvent) -> Void)? = nil
) -> UIView
public func embeddingUIView(
_ id: String,
arguments: Any? = nil,
onEvent: ((_ event: ComponentEvent) -> Void)?,
content: @escaping (_ phase: EmbeddingPhase) -> UIView
) -> UIView
// remote config
public func remoteConfig(_ id: String, phase: @escaping ((_ phase: RemoteConfigPhase) -> Void)) -> RemoteConfig
// remote config as view
public func remoteConfigAsView<V: View>(_ id: String, @ViewBuilder phase: @escaping ((_ phase: RemoteConfigPhase) -> V)) -> some View
// overlay
public func overlay() -> some View
public func overlayViewController() -> UIViewController
}
.dispatch
NativebrikEvent
をディスパッチして、エクスペリメントをトリガーしたり、アプリのKPIを追跡できます:
nativebrik
.experiment
.dispatch(NativebrikEvent("your_custom_event_name"))
NativebrikEvent について
.embedding an embedding experiment
Nativebrik
のエディタで作成されたエクスペリメントを、特定の場所に埋め込むことができます:
struct YourView: View {
@EnvironmentObject var nativebrik: NativebrikClient
var body: some View {
nativebrik
.experiment
.embedding("<EXPERIMENT_ID> or <EXPERIMENT_CUSTOME_ID>")
.frame(height: 200) // recommended: set the frmae size
}
}
.embedding an embedding experiment adding an event handler
埋め込みタイプのエクスペリメントに、イベントハンドラーを追加することができます:
nativebrik
.experiment
.embedding("<EXPERIMENT_ID> or <EXPERIMENT_CUSTOME_ID>") { event in
print(event)
}
.frame(height: 200)
.embedding an embedding experiment with AsyncComponentPhase/ComponentPhase
swiftui
SwiftUI では、AsyncEmbeddingPhase を使って、読み込み中、失敗、完了の各フェーズでビューをカスタマイズできます:
nativebrik
.experiment
.embedding("<EXPERIMENT_ID> or <EXPERIMENT_CUSTOME_ID>", onEvent: nil) { phase in
switch phase {
case .loading:
Text("loading")
case .notFound:
Text("not found")
case .failed:
Text("error")
case .completed(let component):
component.frame(height: 200)
}
}
uikit
UIKit では、EmbeddingPhase を使って、読み込み中、失敗、完了の各フェーズでビューをカスタマイズできます:
let uiview = nativebrik
.experiment
.embeddingUIView("<EXPERIMENT_ID> or <EXPERIMENT_CUSTOME_ID>", onEvent: nil) { phase in
switch phase {
case .loading:
return UILabel(text: "loading")
case .notFound:
return UILabel(text: "not found")
case .failed:
return UILabel(text: "error")
case .completed(let component):
return component
}
}
.remoteConfigAsView (for SwiftUI)
RemoteConfigVariant
を SwiftUI のビルダーコンテキスト内で取得するために .remoteConfigAsView
を使用できます:
struct YourView: View {
@EnvironmentObject var nativebrik: NativebrikClient
var body: some View {
nativebrik
.experiment
.remoteConfigAsView("<EXPERIMENT_ID> or <EXPERIMENT_CUSTOME_ID>") { phase in
switch phase {
case .completed(let configVariant):
Text(configVariant.getAsString("<KEY_IN_VARIANT_CONFIG>"))
default:
Text("loading")
}
}
}
}
RemoteConfigPhase について
.remoteConfig
.remoteConfig
を使用し、どの場面でも RemoteConfigVariant
を取得できます。
nativebrik
.experiment
.remoteConfig("<EXPERIMENT_ID> or <EXPERIMENT_CUSTOME_ID>") { phase in
switch phase {
case .completed(let variantConfig):
print(variantConfig.getAsString("<KEY_IN_VARIANT_CONFIG>"))
default:
print("loading or error")
}
}
RemoteConfigPhase について
アドバンス設定
オーバーレイの登録
これは、Nativebrik
アプリで作成されたポップアップエクスペリメントを管理するオーバーレイビューです。ポップアップを表示するには、アプリケーションにオーバーレイビューを追加する必要があります。
SwiftUI
NativebrikProvider
をアプリケーションに追加すると、オーバーレイビューが自動的に追加されます。ただし、NativebrikProvider
を使用したくない場合は、オーバーレイビューを手動で追加することもできます。
SwiftUI アプリケーションにオーバーレイビューを追加:
@main
struct YourApp: App {
let nativebrikClientContext: NativebrikClient = NativebrikClient(projectId: "<YOUR_PROJECT_ID>")
var body: some Scene {
WindowGroup {
ZStack(alignment: .top) {
// the overlay should be top to show popups in front
self.nativebrikClientContext.experiment.overlay()
// to access to the nativebrik client from child views
ContentView().environmentObject(self.nativebrikClientContext)
}
}
}
}
UIKit
UIKit アプリケーションにオーバーレイコントローラービューを追加:
// singleton
let nativebrik = {
return NativebrikClient(projectId: "<YOUR_NATIVEBRIK_PROJECT_ID>")
}()
class YourViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let overlay = nativebrik.experiment.overlayViewController()
self.addChild(overlay)
self.view.addSubview(overlay.view)
}
}
Last updated