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.RunModeExtension に設定されます。
  • WatchKit アプリは腕時計で実行されるので、a.AppID に名前が正しくレポートされます。
  • WatchOS2 アプリに対しては、ライフサイクルコールはトリガーされません。

このページ