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
}
}
class YourUIView: UIView {
init(frame: CGRect) {
super.init(frame: frame)
let uiview = nativebrik
.experiment
.embeddingUIView("<EXPERIMENT_ID> or <EXPERIMENT_CUSTOME_ID>")
uiview.frame = CGRect(x: 0, y: 0, width: 200, height: 200) // recommended: set the frmae
self.addSubview(uiview)
}
}
.embedding an embedding experiment adding an event handler
埋め込みタイプのエクスペリメントに、イベントハンドラーを追加することができます:
nativebrik
.experiment
.embedding("<EXPERIMENT_ID> or <EXPERIMENT_CUSTOME_ID>") { event in
print(event)
}
.frame(height: 200)
let uiview = nativebrik
.experiment
.embeddingUIView("<EXPERIMENT_ID> or <EXPERIMENT_CUSTOME_ID>") { event in
print(event)
}
.embedding an embedding experiment with AsyncComponentPhase/ComponentPhase
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)
}
}
@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)
}
}