Show Menu
トピック×

WatchOS 2 を使用した Apple Watch 実装

WatchOS 2 以降、WatchKit エクステンションを Apple Watch で実行できます。この環境で動作するアプリケーションが iOS 本体アプリとデータを共有するには、 WatchConnectivity フレームワークが必要です。
AdobeMobileLibrary v4.6.0 以降、 WatchConnectivity がサポートされます。

新しい Adobe Experience Platform Mobile SDK リリース

Adobe Experience Platform Mobile SDK に関する情報やドキュメントをお探しの場合、最新のドキュメントについては、 こちら をクリックしてください。
2018 年 9 月に、SDK の新しいメジャーバージョンをリリースしました。これらの新しい Adobe Experience Platform Mobile SDK は、 Experience Platform Launch から設定できます。
  • 開始するには、Adobe Experience Platform Launch に移動します。
  • Experience Platform SDK リポジトリの内容については、 Github: Adobe Experience Platform SDK を参照してください。

はじめに

少なくとも以下のターゲットを持つプロジェクトがあることを確認します。
  • 本体アプリ
  • WatchKit アプリ
  • WatchKit エクステンション
WatchKit アプリの開発について詳しくは、 Watch App のアーキテクチャ を参照してください。

含まれるアプリの設定

次の手順を Xcode プロジェクトで実行します。
  1. AdobeMobileLibrary フォルダーをプロジェクトにドラッグします。
  2. ADBMobileConfig.json ファイルが本体アプリのターゲットのメンバーであることを確認します。
  3. 本体アプリのターゲットの​ Build Phases ​タブで、 Link Binary with Libraries ​セクションを展開して、以下のライブラリを追加します。
    • AdobeMobileLibrary.a
    • libsqlite3.tbd
    • SystemConfiguration.framework
  4. UIApplicationDelegate プロトコルを実装するクラスで、 WCSessionDelegate プロトコルを追加します。
    #import <WatchConnectivity/WatchConnectivity.h> 
    @interface AppDelegate : UIResponder <UIApplicationDelegate, WCSessionDelegate>
    
    
  5. AppDelegate クラスの実装ファイル内で、 AdobeMobileLibrary をインポートします。
    #import “ADBMobile.h”
    
    
  6. ADBMobile ライブラリを呼び出す前に、AppDelegate の application:didFinishLaunchingWithOptions: で、 WCSession を設定します。
    // check for session availability 
    if ([WCSession isSupported]) { 
        WCSession *session = [WCSession defaultSession]; 
        session.delegate = self; 
        [session activateSession]; 
    }
    
    
  7. AppDelegate で、 session:didReceiveMessage: session:didReceiveUserInfo: メソッドを実装します。
    syncSettings: ADBMobile ライブラリ内で呼び出され、 ADBMobile ライブラリが使用する目的で辞書が作成されたかどうかを示すブール値を返します。 No を返す場合、メッセージは Adobe SDK から開始されたものではありません。
    - (void) session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message { 
        // pass message to ADBMobile 
        if (![ADBMobile syncSettings:message]) { 
            // handle your own custom messages 
        } 
    } 
    - (void) session:(WCSession *)session didReceiveUserInfo:(NSDictionary<NSString *,id> *)userInfo { 
        // pass userInfo to ADBMobile 
        if (![ADBMobile syncSettings:userInfo]) { 
            // handle your own custom messages 
        } 
    } 
    
    

WatchKit エクステンションの設定

  1. ADBMobileConfig.json ファイルが WatchKit エクステンションのターゲットのメンバーであることを確認します。
  2. WatchKit エクステンションのターゲットの​ Build Phases ​タブで、 Link Binary with Libraries ​セクションを展開して、以下のライブラリを追加します。
    • AdobeMobileLibrary_Watch.a
    • libsqlite3.tbd
  3. WKExtensionDelegate プロトコルを実装するクラスで、 WatchConnectivity をインポートし、 WCSessionDelegate プロトコルを追加します。
    #import <WatchConnectivity/WatchConnectivity.h> 
    @interface ExtensionDelegate : NSObject <WKExtensionDelegate, WCSessionDelegate>
    
    
  4. ExtensionDelegate クラスの実装ファイル内で、 AdobeMobileLibrary をインポートします。
    #import “ADBMobile.h”
    
    
  5. applicationDidFinishLaunching ライブラリへのコールをおこなう前に、ExtensionDelegate の WCSession で、 ADBMobile を設定します。
    // check for session availability 
    if ([WCSession isSupported]) { 
        WCSession *session = [WCSession defaultSession]; 
        session.delegate = self; 
        [session activateSession]; 
    }
    
    
  6. ExtensionDelegate の applicationDidFinishLaunching で、SDK 用に Watch App を初期化します。
    [ADBMobile initializeWatch];
    
    
  7. ExtensionDelegate で、 session:didReceiveMessage: メソッドと session:didReceiveUserInfo: メソッドを実装します。
    syncSettings: ADBMobile ライブラリ内で呼び出され、 ADBMobile ライブラリが使用する目的で辞書が作成されたかどうかを示すブール値を返します。 NO を返す場合、メッセージは Adobe SDK から開始されたものではありません。
    - (void) session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message { 
        // pass message to ADBMobile 
        if (![ADBMobile syncSettings:message]) { 
            // handle your own custom messages 
        } 
    } 
    - (void) session:(WCSession *)session didReceiveUserInfo:(NSDictionary<NSString *,id> *)userInfo { 
        // pass userInfo to ADBMobile 
        if (![ADBMobile syncSettings:userInfo]) { 
            // handle your own custom messages 
        } 
    } 
    
    

追加情報

次の情報に留意してください。
  • WatchKit アプリの場合、 a.RunMode Extension に設定されます。
  • WatchKit アプリは腕時計で実行されるので、 a.AppID に名前が正しくレポートされます。
  • WatchOS2 アプリに対しては、ライフサイクルコールはトリガーされません。