로딩중입니다
Live Operation ターゲティングプッシュ通知 : iOS
7/28/2015 3:42:20 PM

Live Operation:ターゲティングプッシュ通知


Live Operationのターゲティングプッシュ通知は、アプリユーザーをフィルターしてターゲティングしてプッシュ通知を送信することができるサービスです。
ターゲッティングプッシュ通知の連携により、アプリの運営担当者は高度なプッシュ通知システムを利用してより便利に運営することができます。

Live Operationサービスのご紹介


ご注意

    1. Live OperationのAdd-onを連携する前に、IGAWorks基本連携を完了してください。IGAW 基本連携 : iOS
    2. Live Operation連携のためには、 LiveOps~*.framework ファイルが Xcode プロジェクトに含まれる必要がございます。SDKインストール : iOS


    基本設定

    Live Operationのサービスをご利用するため、以下のステップを完了してください。


    APNS 証明書の登録
    Apple Developer centerで作成した APNS 証明書を、Live Operation管理画面の「設定→プッシュ設定→証明書」に登録してください。

    + 開発バージョンの場合は Development バージョンを、AppStoreの提出バージョンでは .p12 の形の Production 証明書を登録してください。


    Info.plist の修正

    開発環境の iOS SDK Targetが 7.0 以上の場合、 Info.plistに以下のようにNodeを追加してください。



    Live Operation API


    Live Operationサービスを利用するために LiveOps.h, IgaworksCore.h ファイルを Importして連携を進めます。
    Live Operationは、サーバープッシュ通知 クライアントプッシュ通知を対応します。
    サーバープッシュ通知は、Live Operationの管理画面で登録したプッシュ通知をサーバーを通じて送信することであり
    クライアントプッシュ通知は APIを利用してクライアント内でプッシュ通知を作ります。


    基本連携(サーバープッシュ通知)

    Live Operationサーバープッシュ通知は、基本連携のみで利用することができます。
    基本連携のために、AppDelegateの appliation: didFinishLaunchingWithOptions: application: didRegisterForRemoteNotificationWithiDeviceToken:  に、以下のコードを追加します。

    ユーザー識別値の入力

    ユーザー識別値は、ライブオペレーションでユーザーを判断するために利用する情報です。

       ご注意
    1. 1名のユーザーには1つの固有のユーザー識別値を持つことになります。可変値を利用しないでください。
    2. 個人情報(メールアドレス、電話番後、識別可能なユーザーIDなど)が含まれてはいけません。
    3. 日本語、特殊文字、空白などが含まれている場合、必ずURLインコーディング処理をしてから利用してください。
    4. 最大の長さは nvarchar(100) です。


    上記の注意事項をご確認の上、ユーザー識別値を入力してください。
    [IgaworksCore setUserId:@"user10001"];


    初期化 API の呼び出し

    1. + (void)setUserId:(NSString *)userId
    2. + (void)initPush
    3. + (void)handleAllNotificationFromLaunch:(NSDictionary*)launchOptions
    4. + (void)setDeviceToken:(NSData*)deviceToken
    #import <IgaworksCore/IgaworksCore.h>
    #import <LiveOps/LiveOps.h>
     
    @implementation AppDelegate
     
    -(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
    {
        //IGAWorks 基本連携API
        [IgaworksCore igaworksCoreWithAppKey:@"App Keyを設定してください。" andHashKey:@"Hash Keyを設定してください。"             andIsUseIgaworksRewardServer:NO];
     
        //LiveOpsPushを利用するために、必ず user idを設定してください。
        [IgaworksCore setUserId:@"user10001"];
     
        //LiveOpsPushを初期化します。
        [LiveOpsPush initPush];
     
        //LiveOps Push Notification Handlerを登録します。
        [LiveOpsPush handleAllNotificationFromLaunch:launchOptions]; 
        
        return YES;
    }
     
    - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    {
        //デバイストークンを登録します。
        [LiveOpsPush setDeviceToken:deviceToken];
    }
     
    - (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
    {
        //デバイストークン登録失敗のログの確認
        NSLog(@"Device Token Register Failed: %@", error);
    }


    ハンドラの登録

    プッシュ通知を管理するためのハンドラを登録します。
    #if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_7_0
    #warning "Remote push open tracking is counted only when user touches notification center under iOS SDK 7.0"
     
    // iOS version7 未満の場合,
    - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    {
        [LiveOpsPush handleRemoteNotification:userInfo fetchHandler:nil];
    }
    #else
    // iOS version7 以上の場合,
    - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
    {
        [LiveOpsPush handleRemoteNotification:userInfo fetchHandler:completionHandler];
    }
    #endif
    
    //Local Push Handler
    - (void)application:(UIApplication*)application didReceiveLocalNotification:(UILocalNotification *)notification
    {
    	[LiveOpsPush handleLocalNotification:notification];
    }
    + 上記のサンプルコードのように、ハンドラはiOS7を基準として、各OSバージョンに沿い登録してください。


    ディープリンクの連携(サーバープッシュ通知)


    Live Operationのサーバープッシュ通知は、ディープリンク機能を対応しています。
    ディープリンク機能は、ユーザーがプッシュ通知を受信して開封した際、ディープリンクデータで定義したアクションを起動するようにする機能です。
    ディープリンクデータは、Live Operationの管理画面の「設定>プッシュ設定」より作成・管理します。
    ウェブURL(http://~)タイプ、アプリスキームURL(myApp://deepLinkAction) タイプ Json({“url”:”deepLinkAction”}) タイプで登録することができます。


    Info.plist の修正

    ディープリンク機能を利用するために、以下のようにInfo.plistにnodeを追加してください。



    ディープリンクデータの確認


    ディープリンクに渡されたデータの確認は、ライブオペレーションリスナーを利用する方法と、AppDelegateを利用する方法があります。
    Jsonタイプのディープリンクを利用する場合、ライブオペレーションリスナーの方法のみ対応しています。

    • Live Operationリスナー
    • AppDelegate


    Live Operationリスナーの利用

    リスナーを利用するためには、必ずhandleAllNotificationFromLaunch: APIより先にリスナーを登録する必要があります。
    リスナーのpushInfosより、ディープリンクの情報を確認することができます。詳細情報は以下のようになります

      1. pushInfos.sentTime : 送信時刻
      2. pushInfos.bodyText : プッシュ通知内容
      3. pushInfos.deepLinkUrl : Apple Scheme Url タイプのディープリンク、デフォルトはnil
      4. pushInfos.deepLink : Jsonタイプのディープリンク、デフォルトはnil
      -(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
      {
      	// ディープリンクのためのリスナー登録
      	[LiveOpsPush setRemoteNotificationListener:^(NSArray* pushInfos, BOOL isForeGround) {
      		for(LiveOpsPushInfo *pushInfo in pushInfos){
      			/* pushInfos 客体 */
      			// pushInfo.sentTime : 送信時刻
      			// pushInfo.bodyText : プッシュ通知内容
      			// pushInfo.deepLinkUrl : ディープリンクURL、デフォルトは-nil 
      			// pushInfo.deepLink : ディープリンクJsonObject、デフォルトは-nil
      			
      			/* isForeGround */
      			// YES : appを起動した状態でプッシュ通知を受信
      			// NO : appを起動していない状態でプッシュ通知を受信
      		}       
      	}];
      	
      	//LiveOps Push Notification Handlerを登録します。
      	[LiveOpsPush handleAllNotificationFromLaunch:launchOptions];
      	
         return YES;
      }


      AppDelegateの利用

      Apple Scheme Url タイプのディープリンクを利用する場合、AppDelegateを利用してディープリンク情報を確認することができます。
      application: openUrl: sourceApplication: annotation: デリケートのURLパラメーターに渡される情報を利用して確認します。
      #import "AppDelegate.h"
      #import <IgaworksCore/IgaworksCore.h>
      #import <LiveOps/LiveOps.h>
       
      @implementation AppDelegate
       
      -(BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(idD)annotation
      {
          //ここにプッシュ通知のディープリンクが渡されます。
          //確認したディープリンク情報を利用して、利用するアクションを起動します。
          NSLog(@"LiveOps Deep Link Url Info : %@", [url absoluteString]);
       
          //ex. ディープリンクがliveOps://com.igaworks.test?view=myview&param=1 で渡された場合
          NSString* query = [url query];
          NSArray *queryPairs = [query componentsSeparatedByString:@"&"];
          NSMutableDictionary *pairs = [NSMutableDictionary dictionary];
          for(NSString* queryPair in queryPairs)
          {
              NSArray *bits = [queryPairs componentsSeparatedByString:@"="];
              NSString *key = [bits objectAtIndex:0];
              NSString *value = [bits objectAtIndex:1];
              [pairs setObject:value forKey:key];
          
              NSLog(@"LiveOps Deep Link Action~!! key: %@ , value: %@" , key, value);
          }
          return YES;
      }
      + AppDelegate方式では、Jsonタイプのディープリンクは利用できません。


      ローカルプッシュ通知(クライアントプッシュ通知)


      Live Operationは、クライアントでAPIを利用して直接生成して利用できるクライアントプッシュ通知機能を対応します。
      一般的に、クライアントプッシュ通知は、アプリ内で事前に指定した条件にユーザーが一致する場合、プッシュ通知を生成して表示するようになります。
      また、デベロッパーサーバーとアプリ間の通信が可能な場合、サーバーのイベントをキャッチしてプッシュ通知を生成するなどの方法で利用することができます。


      プッシュ通知の作成・表示

      以下のAPIを利用してプッシュ通知を作成・表示します。
      [LiveOpsPush registerLocalPushNotification:localPid  //ユニークな識別子
                                            date:dateObj   //日付
                                            body:@"hello"  //local pushに表示される文言
                                          button:@"go:     //local push確認ボタンもしくはロック解除ボタンのテキスト
                                       soundName:nil       //起動の際に再生されるサウンドファイル名、nil : iOS 基本サウンドを再生
                                     badgeNumber:0         //未確認の際、アプリのアイコンに表示される未確認メッセージのアラム数値
                                        customPayload:nil  //customPayloadを通じて登録したユーザー情報
      ];     

      プッシュ通知のキャンセル

      cancelLocalPush: APIを利用して作成したローカルプッシュ通知をキャンセルし、表示されないようにします。
      [LiveOpsPush cancelLocalPush:localPid]; //localPid : local pushを登録した時に入力したプッシュ通知ID


      リスナー

      リスナーを利用するためには、必ず handleAllNotificationFromLaunch: APIより先にリスナーを登録してください。

      詳細については、以下の内容をご参考ください。

      -(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
      {
      	[LiveOpsPush setLocalNotificationListener:^(NSInteger Id, NSDate* sentTime, NSString* bodyText, NSDictionary* customData, BOOL isForeGround) {
      			// Id : localPid : local pushを登録した時に入力したプッシュ通知ID
      			// sentTime : 送信時刻
      			// bodyText : プッシュ通知の内容
      			// customData : customPayloadを通じて登録したdata
      
      			
      			/* isForeGround */
      			// YES : appが起動中の時にプッシュ通知を受信
      			// NO : appが起動されていない時にプッシュ通知を受信      
      	}];
      	
      	//LiveOps Push Notification Handlerを登録します。
      	[LiveOpsPush handleAllNotificationFromLaunch:launchOptions];
      	
         return YES;
      }


      Live Operation:追加オプション


      ユーザーターゲティング

      ユーザーグループを設定して、ターゲットプッシュ通知の表示対象を直接選択することができます。
      ユーザーグループを設定するためのデータは直接設定することができます。


      ターゲティングデータの設定

      ターゲティングしたユーザーのみターゲットプッシュ通知を送信するために、カスタムユーザーデータを設定します。
      設定したカスタムユーザーデータは、ライブオペレーションの「設定→ユーザーグループの設定」より確認することができます。
      以下の例は、課金回数をカスタムをカスタムデータで取得する場合です。

      //[LiveOpsUser setTargetingData:(NSString*)customUserData withKey:(NSString*)customUserDataKey]
      [LiveOpsUser setTargetingData:purchaseCount withKey:"purchaseCount"];
      

      + customUserData : ターゲティングのためのユーザーデータを入力します。
      + customUserDataKey : ユーザーカスタムデータキーを設定します。


      ターゲティングデータの読み込み

      設定したターゲティングデータを読み込み、希望するアクションを実施します。
      NSNumber* ageNum = [LiveOpsPush getTargetingDataWithKey:@"age"];


      ターゲティングデータの同期化

      flush APIを呼び出し、設定したターゲティングデータをLive Operationサーバーと同期化します。
      [LiveOpsUser flush];



      プッシュ通知 on/off

      送信するプッシュ通知に対し、受信可否を設定することができます。通常では、ユーザーがプッシュ通知の受信可否を設定する時にAPIを呼び出します。
      また、受信可否のイベントに関するデリケートを提供します。イベントデリケートを利用して受信可否の処理結果を処理することができます。


      プッシュ通知の受信設定
      setRemotePushEnable APIを呼び出して利用します。パラメーターと利用の例は以下を確認してください。
      • true : プッシュ通知を受信する。
      • false : プッシュ通知を受信しない。
      [LiveOpsPush setRemotePushEnable:YES];


      デリケートの利用

      送信するプッシュ通知に対し、受信可否イベントに関するデリケートを提供します。
      setRemotePushEnable APIを呼び出して利用します。パラメーターと利用の例は以下を確認してください。
      [LiveOpsPush setRemotePushEnable:NO completion:^(BOOL result) {
       //result数値がtrueではない場合、サーバーの反映に問題がある状況です。
       //(ネットワーク問題もしくはデバイストークンの登録が出来ていない場合)
       if (result) {
        //受信された情報を利用して希望するアクションを実施します。
       }
      }];