セグメントの登録¶
利用者の属性にあわせてグループ分けし、セグメントとして登録すると、特定のグループに対して通知を配信することができるようになります。
セグメントは任意の名前と値を登録できます。
値は、文字列、数値、日時を登録できます。
(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);
}