Growth Messageのボタン押下時のアクションについて

Growth Messageでは、ボタン押下後の挙動(アクション)を管理画面から設定することができます。

アクションの追加は下記リンクを参照 

http://support.growthbeat.com/manual/growthmessage/#アクション追加

  • URLを開く
  • 何もしない
  • カスタム設定

この中の、カスタム設定を利用すると、アプリ独自の挙動を定義することが可能です。たとえば、アプリ内の画面遷移を引き起こすことができます。

カスタム設定の方法

カスタム設定では、管理画面でカスタムのJSONを設定し、それをアプリで受け取ってさまざまな処理をおこなうことができます。

例えば、下記のようなカスタムJSONを指定し、アプリ側にこのJSONにひもづく処理を実装すれば、「ボタンを押したときにショップ画面を開く」というようなことが可能です。

{"action":"open_view","view":"shop"}

アプリの実装

SDKには、GBIntentHandler (Androidでは、IntentHandler)というプロトコルが定義されており、この実装でカスタム設定の挙動を実装することができます。

たとえば下記のような形で実装できます。

@interface MyCustomIntentHandler : NSObject 
@end
@implementation MyCustomIntentHandler
- (BOOL)handleIntent:(GBIntent *)intent {
    if (intent.type != GBIntentTypeCustom)
        return false;

    GBCustomIntent *customIntent = (GBCustomIntent *)intent;
    NSString *action = [customIntent.extra objectForKey:@"action"];
    if(![action isEqualToString:@"open_view"])
        return false;

    NSString *view = [customIntent.extra objectForKey:@"view"];
    // TODO viewに対応する画面を開く処理
    return true;
}
@end

こうして定義したクラスを GrowthbeatCore クラスの setIntentHandlers: に設定することで、利用可能となります。

NSMutableArray *intentHandlers = [NSMutableArray array];
[intentHandlers addObject:[[GBUrlIntentHandler alloc] init]];
[intentHandlers addObject:[[GBNoopIntentHandler alloc] init]];
[intentHandlers addObject:[[MyCustomIntentHandler alloc] init]];
[[GrowthbeatCore sharedInstance] setIntentHandlers:intentHandlers];

管理画面の設定

管理画面の「アクション一覧」では、特定の画面を開くアクションを追加します。

管理画面からは、下記のように設定することで特定の画面を開くことができます。

キー
action open_view
view view_x