Swiftプロジェクトへの導入方法
今回は、SwiftプロジェクトにiOS Growthbeat.frameworkを導入する方法をご紹介します。
提供しているソースコードは、Objective-Cベースで提供しておりますので、Swiftのバージョンによる不具合は2017年1月現在確認されておりません。
なお、Swift製のライブラリ管理ツールであるCarthage(カーセッジ)には対応しておりません。
まずは、下記ドキュメントを参考にCocoaPodsもしくは手動でSDKを配置してください。
http://support.growthbeat.com/sdk/ios/guide/#sdk導入
次に、Objective-Cのソースを、Swiftで使用するためのヘッダーを作成します。
${Project_name}-Bridging-Header.hというファイルを作成します。
File -> New -> File -> Headerを選択して、上記ファイル名で作成します。
このファイルにGrowthbeatのインポート文を追記します。
#import <Growthbeat/Growthbeat.h>
次に、作成したBridging-HeaderをSwiftのコンパイル時に、読み込まれるように設定します。
Build Settings -> Swift Compiler – Code Generation -> Objective-C Bridging Header
ここに作成した、${Project_name}-Bridging-Header.hを追記します。
$(SRCROOT)/$(PROJECT)/Hoge-Bridging-Header.h
アプリ起動時に GrowthPush の初期化クラスを AppDelegate.swift 内の、func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {} 部分に実装します。
"YOUR_APPLICATION_ID"、"YOUR_CREDENTIAL_ID"には、 Growthbeatで使用するID、キーまとめ をご参照ください。
GrowthPush.sharedInstance().initializeWithApplicationId("YOUR_APPLICATION_ID", credentialId: "YOUR_CREDENTIAL_ID", environment: kGPEnvironment)
Growth Pushをご利用になる場合、GrowthPush.h上の定数がSwiftプロジェクト上ですと参照されませんので、追加での実装が必要となります。
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? #if DEBUG let kGPEnvironment:GPEnvironment = GPEnvironment.Development #else let kGPEnvironment:GPEnvironment = GPEnvironment.Production #endif ---略---
ビルドごとに定数を変更していますが、こちらもSwiftプロジェクトですと表示で分岐されないため設定します。
Build Settings -> Swift Compiler – Custom Flag Other Swift Flags
ここのDebugというキーの値に下記を追記します。
-D DEBUG
これで、debug, releaseビルド時に定数が分岐されます。
GrowthPushの初期化後に下記メソッドを呼び出して、デバイストークンの取得を行います。
GrowthPush.sharedInstance().requestDeviceToken()
func application( application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData ) {} にて下記のように実装して、デバイストークンを送信します。
func application( application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData ) { GrowthPush.sharedInstance().setDeviceToken(deviceToken) }
以上の内容を実装したサンプルは下記のようになります。
import UIKit @UIApplicationMain class AppDelegte: UIResponder, UIApplicationDelegate { var window: UIWindow? #if DEBUG let kGPEnvironment:GPEnvironment = GPEnvironment.Development #else let kGPEnvironment:GPEnvironment = GPEnvironment.Production #endif func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { //初期化 GrowthPush.sharedInstance().initializeWithApplicationId("YOUR_APPLICATION_ID", credentialId: "YOUR_CREDENTIAL_ID", environment: kGPEnvironment) //デバイストークンの取得 アプリ起動時に、プッシュ通知の許可ダイアログを表示 GrowthPush.sharedInstance().requestDeviceToken() return true } func application( application: UIApplication, didRegisterForRemoteNoticationsWithDeviceToken: NSData ) { //デバイストークンの送信 GrowthPush.sharedInstance().setDeviceToken(deviceToken) } }
Growthbeat SDK を swift にて使用するための最低限の実装は以上となります。
登録されたデバイスは管理画面のデバイスページにて確認することができます。プッシュ通知ステータスが「アクティブ(Active)」で登録されていれば正常な動作となります。
その他のドキュメントに関しましては iOS APIリファレンス をご参照ください。
Xcode8での開発は 【Xcode8】CapabilitiesのPushNotificationsの設定について もご参照ください。