コンテンツにスキップ

ユーザ属性

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: メソッドを利用します。

  1. 属性キー 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))")
    }
    
  2. 属性キー 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))")
    }
    
  3. 属性キー 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))")
    }
    

ユーザーの属性を取得する

  1. 現在設定されているユーザーの属性を取得する例です。

    [[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"]))")
        }
    }
    
  2. ユーザーが設定していない属性も含め全ての属性を取得する例です。

    [[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"]))")
        }
    }