<aside> 💡 Channel Talk SDKはSwiftUIを公式的にサポートしていないため、SwiftUIに最適化していません。
こちらのガイドは公式の開発ドキュメントではないため最新バージョンと内容が異なる場合があります。 こちらのガイドは以下の環境で作成しています。
Xcode : 13.0 (13A233) CocoaPod : 1.10.1 Swift Package Manager : available Channel SDK - iOS : 9.1.2
</aside>
基本的にネイティブと同様で、こちらのガイドではCocoaPodsを使用しています。
XcodeバージョンとCocoaPodsバージョンによっては設定方法が異なる場合があります。
詳しくはこちらをご確認ください。
iOS 14以上でAppDelegateとSceneDelegateが自動的に生成されない場合
AppDelegate
classを生成し、以下のコードを作成します。import ChannelIOFront
class AppDelegate: NSObject, UIApplicationDelegate {
var window: UIWindow?
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
ChannelIO.initialize(application)
return true
}
}
class ChannelIOFrontManager {
static let shared: ChannelIOFrontManager = ChannelIOFrontManager()
private var channelWindow: UIWindow?
func initChannelWindow() {
if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
channelWindow = ChannelIO.initializeWindow(with: scene)
}
}
}
@main
annotationとApp
protocolを採用したApp構造体でwindowをinitializeします。
例では、SwiftUISampleApp
です。// initialize window
**@main**
struct SwiftUISampleApp: **App** {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
RootView()
.onAppear(perform: ChannelIOFrontManager.shared.initChannelWindow) // *最初の一度だけ実行する必要があります*
}
}
}
Boot
.ChannelIOのBootはbootが必要なところで使用しました。
例では、SomeView
(使いたい箇所)のonAppear
でbootしました。// boot ChannelIO
struct SomeView : View {
...
var body: some View {
ContentView()
...
.onAppear(perform: runChannelIO)
}
}
private func runChannelIO() {
// bootOption 例
let config = BootConfig()
config.pluginKey = "your plugin key"
ChannelIO.boot(with: config) { (status, user) in
switch status {
case .success:
ChannelIO.showChannelButton()
ChannelIO.showMessenger()
default:
print(status.rawValue)
}
}
}
<aside> 🚨 ChannelIO SDKを使用するためにはwindowのinitializeとbootが必要です。
</aside>