로딩중입니다
Live Operation ターゲティングプッシュ通知:Unity iOS
8/19/2015 7:01:08 PM

Live Operation : ターゲットプッシュ通知

Live Operationターゲットプッシュ通知は、アプリユーザーをフィルタしてターゲティングしたプッシュ通知を送信することができるサービスです。
ターゲットプッシュ通知の連携で、より便利にプッシュ通知による運営を行うことができます。
Live Operationに関する紹介


ご注意
  1. Live Operation add-onを連携する前に、IGAW基本連携を完了してください。IGAW基本連携:Unity iOS
  2. Live Operationの連携のために、Igaworks_unity_ios~*.unitypackage ファイルがUnityプロジェクトに追加してください。SDKインストール:Unity



基本設定

Live Operationの利用の前に、以下のステップを完了してください。


APNS証明書の登録

Apple Developer Cneterより作成したAPNS証明書を,Live Operatipon管理画面の「設定→プッシュ通知・ポップアップメッセージ設定→証明書」に登録してください。

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


Info.plist の修正

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



Live Operation API

Live Operationサービスを利用するために、Xcode内のClassesグループ内で位置したUnityAppController.mmを直接修正して連携してください。
Live Operationは、サーバープッシュ通知とクライアントプッシュ通知を対応します。
サーバープッシュ通知は、ライブオペレーションの管理画面で登録したプッシュ通知をサーバーを通じて送信することであり、クライアントプッシュ通知は APIを利用してクライアント内でプッシュ通知を生成します。


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

Live Operationサーバープッシュ通知は、Live Operationの基本連携で利用することができます。 


ユーザー識別値の入力

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

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

IgaworksADPluginIOS.IgaworksADSetUserId("player10001");


初期化APIの呼び出し

  1. IgaworksADSetUserId
  2. LiveOpsInitPush
  3. setDeviceToken : Xcodeプロジェクトの UntiyAppController.mm ファイルに登録します。
// Unity Project
public class MySampleScene : MonoBehavior {
 
    void Start () {
        //ユーザー識別値を入力します。
        IgaworksADPluginIOS.IgaworksADSetUserId("player10001");

        //Live Operationを初期化します。
        IgaworksADPluginIOS.LiveOpsInitPush();
    }       
}
// Xcode Project
#import <IgaworksAD/LiveOps.h>

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
 AppController_SendNotificationWithArg(kUnityDidRegisterForRemoteNotificationsWithDeviceToken, deviceToken);
 UnitySendDeviceToken(deviceToken);
 //デバイストークンの登録
 [LiveOpsPush setDeviceToken:deviceToken];
}
+ IgaworksADSetUserId, LiveOpsInitPush apiは、Unityプロジェクトで呼び出します。
+ setDeviceToken apiは、Unityプロジェクトで Xcodeでビルドした後に UnityAppController.mm ファイルで呼び出します。
+ ユーザー識別値では、個人情報(メールアドレス、名前、電話番後、識別できるユーザーIDなど)が含まれてはいけません。
+ ユーザー識別値に日本語、特殊文字、空白が含まれる場合、必ずインコード処理を行てください。


ハンドラの登録

サーバープッシュ通知とクライアントプッシュ通知を管理するためのハンドラを登録します。
ハンドラの登録はUnityから Xcodeでビルドした後、Xcodeの Classes グループ内の UnityAppController.mm ファイルで LiveOps.h をimportして行います。
//LiveOps header 追加
#include <IgaworksAD/LiveOps.h>

- (void)application:(UIApplication*)application didReceiveNotification:(UILocalNotification*)notification
{
 AppController_SendNotificationWithArg(kUnityDidReceiveLocalNotification, notification);
 UnitySendLocalNotification(notification);
 [LiveOpsPush handleLocalNotification:notification];
}
#if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_7_0
#warning “Remote push open tracking is counted only when user touched notification center under iOS SDK 7.0”

// iOS version 7 未満の場合、
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
 AppController_SendNotificationWithArg(kUnityDidReceiveRemoteNotification, userInfo);
 UnitySendRemoteNotification(userInfo);
 [LiveOpsPush handleRemoteNotification:userInfo fetchHandler:nil];
}
#else
// iOS version 7 以上の場合、
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo fetchCompletionHandler:(void
(^)(UIBackgroundFetchResult))completionHandler
{
 AppController_SendNotificationWithArg(kUnityDidReceiveRemoteNotification, userInfo);
 UnitySendRemoteNotification(userInfo);
 [LiveOpsPush handleRemoteNotification:userInfo fetchHandler:completionHandler];
}
#endif
+ 上記のサンプルコードのように、ハンドラ-は iOS 7を基準に、各OSバージョンに合わせて登録してください。



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

Live Operationのサーバープッシュ通知は、ディープリンク機能を提供しています。
ディープリンクは、ユーザーがプッシュ通知を受信してオープンした際、ディープリンクデータで定義したアクションを実施するようにする機能です。
ディープリンクデータは、Live Operation管理画面で生成・管理することができます。登録はアプリスキームURL(myApp://deepLinkAction) タイプや Json({“url”:”deepLinkAction”}) タイプで登録することができます。 


Info.plist の修正

ディープリンク機能を提供するため、次のようにお Info.plist에にnodeを追加してください。



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

ディープリンクで渡されたデータの確認は、Live Operation listenerを利用する方法と、AppDelegateを利用する方法があります。
Json タイプのディープリンクを利用する場合、Live Operation listenerのみ利用することができます。
  • Live Operation Listener
  • AppDelegate


Live Operation Listenerの場合
Listenerを利用するためには、必ず handleAllNotificationFromLaunch: APIより前にListenerを登録してください。
Listenerの 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
{
	// ディープリンクのためのListener登録
	[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 <IgaworksAD/IgaworksAD.h>
#import <IgaworksAD/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



追加オプション

ユーザーターゲティング

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

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

ターゲティングしたユーザーのみターゲティングプッシュ通知を送信するためのカスタムユーザーデータを設定します。
設定したカスタムユーザーデータは、「Live Operation > 設定 > ユーザーブラウザの設定」より確認することができます。
以下の例は、ユーザーの年齢をカスタムデータとして取得する場合です。
//LiveOpsSetTargetingNumberData(int customUserData, string customUserDataKey);
//LiveOpsSetTargetingStringData(string customUserData, string customUserDataKey);

LiveOpsPluginIOS.LiveOpsSetTargetingNumberData(86, "age");
customUserData : ターゲティングのためのユーザーデータを入力します。 
customUserDataKey : ユーザーカスタムデータキーを設定します。

プッシュ通知受信on/off

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

プッシュ通知の受信設定

LiveOpsSetRemotePushEnable APIを利用します。パラメータの利用例の以下となります。 
  • true : プッシュ通知を受信する
  • false : プッシュ通知を受信しない

    LiveOpsPluginIOS.LiveOpsSetRemotePushEnable(false);