ユーザ属性
FANSHIP では、性別や年齢層、趣味などといった属性をエンドユーザーに設定することができます。
設定された属性は、「 属性絞り込み配信 」などで利用することができます。
エンドユーザーに提示する属性および選択肢は、利用開始時に申請 する必要があり、SDK側から変更することはできません。
属性を設定する方法は2通りあり、エンドユーザーが属性設定画面から視覚的に設定する方法と、API を経由して設定する方法があります。
画面からユーザ属性を設定する
PopinfoSegmentSettingsViewController を使い、エンドユーザーの属性を設定することができます。
ViewControllerの初期化方法は以下の通りです。
PopinfoSegmentSettingsViewController *segmentVC = [[PopinfoSegmentSettingsViewController alloc] initWithNibName:@"PopinfoSegmentSettingsViewController" bundle:[NSBundle mainBundle]];
segmentVC.delegate = self;
let segmentVC = PopinfoSegmentSettingsViewController(nibName:"PopinfoSegmentSettingsViewController", bundle:Bundle.main)
segmentVC.delegate = self
APIからユーザ属性を設定する
ユーザーの属性を設定する場合、PopinfoReceiver クラスの setSegments:forKey:completion: メソッドを利用します。
-
属性キー 200 に属性値 4 をセットする例です。
NSDictionary<NSString *, NSArray<NSString *> *> *dict = @{ @"200": @[@"4"] }; [[PopinfoReceiver sharedReceiver]setSegmentsWithParameters:dict completion:^(BOOL isOk, NSString * _Nullable errorCode) { // 設定の結果をダンプ NSLog(@"setSegments isOk = %d, errorCode = %@", isOk, errorCode); }];PopinfoReceiver.shared.setSegments(parameters: ["200": ["4"]]) { isOk, errorCode in // 設定の結果をダンプ print("setSegments isOk = \(String(describing: isOk)), errorCode = \(String(describing: errorCode))") } -
属性キー 800 に属性値 218 と 219 をセットする例です。
NSDictionary<NSString *, NSArray<NSString *> *> *dict = @{ @"800": @[@"218", @"219"] }; [[PopinfoReceiver sharedReceiver]setSegmentsWithParameters:dict completion:^(BOOL isOk, NSString * _Nullable errorCode) { // 設定の結果をダンプ NSLog(@"setSegments isOk = %d, errorCode = %@", isOk, errorCode); }];PopinfoReceiver.shared.setSegments(parameters: ["800": ["218", "219"]]) { isOk, errorCode in // 設定の結果をダンプ print("setSegments isOk = \(String(describing: isOk)), errorCode = \(String(describing: errorCode))") } -
属性キー 200 の属性値をクリアする例です。
NSDictionary<NSString *, NSArray<NSString *> *> *dict = @{ @"200": @[] }; [[PopinfoReceiver sharedReceiver]setSegmentsWithParameters:dict completion:^(BOOL isOk, NSString * _Nullable errorCode) { // 設定の結果をダンプ NSLog(@"setSegments isOk = %d, errorCode = %@", isOk, errorCode); }];PopinfoReceiver.shared.setSegments(parameters: ["200": []]) { isOk, errorCode in // 設定の結果をダンプ print("setSegments isOk = \(String(describing: isOk)), errorCode = \(String(describing: errorCode))") }
ユーザーの属性を取得する
-
現在設定されているユーザーの属性を取得する例です。
[[PopinfoReceiver sharedReceiver]getSegmentsWithCompletion:^(BOOL isOk, NSString * _Nullable errorCode, NSArray<NSDictionary *> * _Nullable segmentArray) { // segmentArray 内に取得した属性が入っている。取得した属性をダンプ for (NSDictionary *segment in segmentArray) { NSLog(@"is_default=%@", [segment objectForKey:@"is_default"]); NSLog(@"value_name=%@", [segment objectForKey:@"value_name"]); NSLog(@"is_multiple=%@", [segment objectForKey:@"is_multiple"]); NSLog(@"value_id=%@", [segment objectForKey:@"value_id"]); NSLog(@"key_id=%@", [segment objectForKey:@"key_id"]); NSLog(@"key_name=%@", [segment objectForKey:@"key_name"]); NSLog(@"is_set=%@", [segment objectForKey:@"is_set"]); } }];PopinfoReceiver.shared.getSegmentsWithCompletion { isOk, errorCode, segmentAry in guard let segmentArray: [[AnyHashable: Any]] = segmentAry else { return } // segmentArray 内に取得した属性が入っている。取得した属性をダンプ for segment in segmentArray { print("is_default=\(String(describing: segment["is_default"]))") print("value_name=\(String(describing: segment["value_name"]))") print("is_multiple=\(String(describing: segment["is_multiple"]))") print("value_id=\(String(describing: segment["value_id"]))") print("key_id=\(String(describing: segment["key_id"]))") print("key_name=\(String(describing: segment["key_name"]))") print("is_set=\(String(describing: segment["is_set"]))") } } -
ユーザーが設定していない属性も含め全ての属性を取得する例です。
[[PopinfoReceiver sharedReceiver]getSegmentsAllWithCompletion:^(BOOL isOk, NSString * _Nullable errorCode, NSArray<NSDictionary *> * _Nullable segmentArray) { // segmentArray 内に取得した属性が入っている。取得した属性をダンプ for (NSDictionary *segment in segmentArray) { NSLog(@"is_default=%@", [segment objectForKey:@"is_default"]); NSLog(@"value_name=%@", [segment objectForKey:@"value_name"]); NSLog(@"is_multiple=%@", [segment objectForKey:@"is_multiple"]); NSLog(@"value_id=%@", [segment objectForKey:@"value_id"]); NSLog(@"key_id=%@", [segment objectForKey:@"key_id"]); NSLog(@"key_name=%@", [segment objectForKey:@"key_name"]); NSLog(@"is_set=%@", [segment objectForKey:@"is_set"]); } }];PopinfoReceiver.shared.getSegmentsAll { isOk, errorCode, segmentAry in guard let segmentArray: [[AnyHashable: Any]] = segmentAry else { return } // segmentArray 内に取得した属性が入っている。取得した属性をダンプ for segment in segmentArray { print("is_default=\(String(describing: segment["is_default"]))") print("value_name=\(String(describing: segment["value_name"]))") print("is_multiple=\(String(describing: segment["is_multiple"]))") print("value_id=\(String(describing: segment["value_id"]))") print("key_id=\(String(describing: segment["key_id"]))") print("key_name=\(String(describing: segment["key_name"]))") print("is_set=\(String(describing: segment["is_set"]))") } }