コンテンツにスキップ

セグメントの登録

利用者の属性にあわせてグループ分けし、セグメントとして登録すると、特定のグループに対して通知を配信することができるようになります。

セグメントは任意の名前と値を登録できます。
値は、文字列、数値、日時を登録できます。

(RichFlyer SDK for Swift v3.5.0未満/RichFlyer SDK for Objective-C v1.4.0未満をご利用の場合)
数値は文字列に、日時はUnixtime(10桁)を文字列に変換して登録してください。

利用できないセグメント名

次の単語はセグメント名に利用できません。
"device_id", "endpoint", "customer_id", "service_id", "subscription_arn", "created_at", "updated_at", "domain", "p256dh", "disabled", "ABtestReferenceValue"

// Class RFApp
static func registSegments(stringSegments: [String: String],
                              intSegments: [String: Int],
                             boolSegments: [String: Bool],
                             dateSegments: [String: Date],
                               completion: @escaping (_ result: RFResult) -> Void)
// Class RFApp
+ (void)registSegments:(nullable NSDictionary<NSString*, NSString*>*)stringSegments
           intSegments:(nullable NSDictionary<NSString*, NSNumber*>*)intSegments
          boolSegments:(nullable NSDictionary<NSString*, NSNumber*>*)boolSegments
          dateSegments:(nullable NSDictionary<NSString*, NSDate*>*)dateSegments
            completion:(nullable void (^)(RFResult* _Nonnull result))completion;
パラメータ 内容
stringSegments 値が文字列のセグメントの情報。セグメントと値のDictionaryセット。
intSegments 値が数値のセグメントの情報。セグメントと値のDictionaryセット。
boolSegments 値が真偽値のセグメントの情報。セグメントと値のDictionaryセット。※管理サイトには"true"/"false"の文字列として登録されます。
dateSegments 値が日時のセグメントの情報。セグメントと値のDictionaryセット。※管理サイトにはUnixtimeが登録されます。
completion 処理完了時に呼び出されるハンドラ


実装例

Swift

// セグメント値を取得する
let stringSegments : [String : String] = [ "country" : "japan" ]
let intSegments : [String : Int] = [ "age" : 30]
let boolSegments : [String : Bool] = [ "registered" : true ]
let dateSegments : [String : Date] = [ "launchDate" : Date() ]

// セグメントを登録する
RFApp.registSegments(stringSegments: stringSegments, intSegments: intSegments,
                         boolSegments: boolSegments, dateSegments: dateSegments, completion:{ (result: RFResult) in
    var message = ""
    if result.result {
        // 成功
        print("Segmentの登録に成功")
    } else {
        // 失敗
        print(result.message + "(code:\(result.code))")
    }
})

Objective-C

// セグメント値を取得する
NSDictionary<NSString*, NSString*>* stringSegments = @{ @"country" : @"japan" };
NSDictionary<NSString*, NSNumber*>* intSegments = @{ @"age" : [NSNumber numberWithInt:30] };
NSDictionary<NSString*, NSNumber*>* boolSegments = @{ @"registered" : [NSNumber numberWithBool:YES]};
NSDictionary<NSString*, NSDate*>* dateSegments = @{ @"launchDate" : [NSDate new]};

// セグメントを登録する
[RFApp registSegments:stringSegments intSegments:intSegments
         boolSegments:boolSegments dateSegments:dateSegments completion:^(RFResult * _Nonnull result) {
    if (result.result) {
        NSLog(@"Segmentの登録に成功");
    } else {
        NSLog(@"%@(code:%ld)", result.message, (long)result.code);
    }
}];


旧バージョンのSDKをご利用の場合(RichFlyer SDK for Swift v3.5.0未満 / RichFlyer SDK for Objectice-C v1.4.0未満)

// Class RFApp
static func registSegments(segments: [String: String], completion: @escaping (_ result: RFResult) -> Void)
// Class RFApp
+ (void)registSegments:(nonnull NSDictionary<NSString*, NSString*>*)segments completion:(nullable void (^)(RFResult* _Nonnull result))completion;
パラメータ 内容
segments セグメントの情報。セグメントと値のDictionaryセット
completion 処理完了時に呼び出されるハンドラ


実装例

Swift

// セグメント値を取得する
let segments : [String : String] = [ "country" : "japan" , "age" : "30" ];

// セグメントを登録する
RFApp.registSegments(segments: model.dictionary, completion: { (result: RFResult) in
    var message = ""
    if result.result {
        // 成功
        print("Segmentの登録に成功")
    } else {
        // 失敗
        print(result.message + "(code:\(result.code))")
    }
})

Objective-C

// セグメント値を取得する
NSMutableDictionary* segments = [NSMutableDictionary dictionary];
[segments setObject:@"japan" forKey:@"country"];
[segments setObject:@"30-39" forKey:@"age"];

// セグメントを登録する
[RFApp registSegments:segments completion:^(RFResult* result) {
    if (result.result) {
        NSLog(@"Segmentの登録に成功");
    } else {
        NSLog(@"%@(code:%ld)", result.message, (long)result.code);
    }
}];


登録済みセグメントの取得

過去に登録したセグメントの情報を取得します。

取得するセグメントは、登録時に端末で記憶したものです。アプリがアンインストールされると端末内に記憶した情報は削除されます。

RFApp.getSegments()
[RFApp getSegments]
Swift

// セグメントを取得する
if let savedSegments = RFApp.getSegments() {
    for (key, value) in savedSegments {
    print("key:" + key + " value:" + value);
    }
}

Objective-C

// セグメントを取得する
NSDictionary* savedSegments = [RFApp getSegments];
for (NSString* key in [savedSegments keyEnumerator]) {
    NSString* value = [savedSegments objectForKey:key];
    NSLog(@"Key:%@ Value:%@", key, value);
}