お知らせ管理

お知らせ管理機能はアプリケーションでお知らせ情報を管理する基本的な仕組みを提供します。

お知らせは管理画面から登録や編集をすることができます。また、お知らせの公開・非公開を制御したり、配信対象のユーザーを絞り込むことができます。

このページでは、お知らせ管理機能を利⽤する実装例を紹介します。

ヒント

作成したお知らせはプッシュ通知することができます。詳細はプッシュ通知管理を参照してください。

注意

お知らせ管理機能はライトプラン、ベーシックプランではご利用いただけません。利用したい場合は、製品サイトopen in new windowよりお問い合わせください。

お知らせを登録する

管理画面の「お知らせ管理」→「お知らせ一覧」を開くと、お知らせの一覧を確認できます。また、同画面の「新規登録」よりお知らせの新規作成をすることができます。


配信対象のユーザーを絞り込みたい場合は「配信先設定を確認」を開いてください。「配信先条件を設定する」、「配信先にのみ公開する」にチェックを付けて、配信条件を入力または配信条件ファイルを選択することで、条件に一致するユーザーにだけお知らせを配信することができます。この機能のことをセグメント配信といいます。

アプリケーションから条件に一致するユーザーにだけお知らせを表示するには、セグメント配信されたお知らせを検索するを参照してください。

お知らせを1件取得する

お知らせの1件取得はgetNewsメソッドで⾏います。

登録したお知らせIDを条件に1件データを取得します。お知らせIDは管理画面でお知らせを登録した後に一覧で確認できます。

let newsId = "1" // お知らせID

RKZService.sharedInstance().getNews(newsId) { news, responseStatus in
    if responseStatus.isSuccess, let news = news {
        // 成功時
        print("news_id:", news.news_id ?? "")
        print("title:", news.title ?? "")
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}
NSString *newsId = @"1"; // お知らせID

[[RKZService sharedInstance] getNews:newsId withBlock:^(RKZNewsData * _Nullable news, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        NSLog(@"news_id: %@", news.news_id);
        NSLog(@"title: %@", news.title);
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];
val newsId = "1" // お知らせID

RKZClient.getInstance().getNews(newsId) { news, rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        // 成功時
        Log.d(TAG, "newsId: ${news.newsId}")
        Log.d(TAG, "title: ${news.title}")
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}
String newsId = "1"; // お知らせID

RKZClient.getInstance().getNews(newsId, new OnGetNewsListener() {
    @Override
    public void onGetNews(News news, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            // 成功時
            Log.d(TAG, "newsId: " + news.getNewsId());
            Log.d(TAG, "title: " + news.getTitle());
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});
var params = {
  news_id: '1' // お知らせID
}

RKZClient.getNews(params, function (news) {
  // 成功時
  console.debug('news_id:', news.news_id)
  console.debug('title:', news.title)
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})
const newsId = '1' // お知らせID

const news = await RKZ.News.get(newsId)

console.debug('news_id:', news.news_id)
console.debug('title:', news.title)
final newsId = '1'; // お知らせID

final news = await RKZClient.instance.getNews(newsId);

print('newsId: ${news.newsId}');
print('title: ${news.title}');

注意

このメソッドは未公開のお知らせも返却します。

お知らせを検索する

未公開のお知らせも含めてすべてのお知らせを検索するにはgetNewsListメソッド(JavaScript・FlutterはNewsQuery.allメソッド)を使用します。

検索条件、ソート条件を指定することができます。指定可能な条件については検索条件ソート条件を参照してください。

let limit: NSNumber = 10 // お知らせの取得件数(nilの場合は全件取得)

// 検索条件
let searchConditions = [
    // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
    RKZSearchCondition(RKZSearchConditionEqual, searchColumn: "category", searchValueArray: ["0001"])
]
// ソート条件
let sortConditions = [
    // date(作成日付)の降順にソート
    RKZSortCondition(RKZSortTypeDesc, sortColumn: "date")
]

RKZService.sharedInstance().getNewsList(limit, searchConditionArray: searchConditions, sortConditionArray: sortConditions) { newsList, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        newsList.forEach { item in
            print("news_id:", item.news_id ?? "")
            print("title:", item.title ?? "")
        }
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}
NSNumber *limit = @10; // お知らせの取得件数(nilの場合は全件取得)

// 検索条件
NSArray<RKZSearchCondition *> *searchConditions = @[
    // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
    [[RKZSearchCondition alloc] initWithSearchConditionType:RKZSearchConditionEqual searchColumn:@"category" searchValueArray:@[@"0001"]]
];
// ソート条件
NSArray<RKZSortCondition *> *sortConditions = @[
    // date(作成日付)の降順にソート
    [[RKZSortCondition alloc] initWithSortType:RKZSortTypeDesc sortColumn:@"date"]
];

[[RKZService sharedInstance] getNewsList:limit searchConditionArray:searchConditions sortConditionArray:sortConditions withBlock:^(NSArray<RKZNewsData *> * _Nonnull newsList, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        for (RKZNewsData *item in newsList) {
            NSLog(@"news_id: %@", item.news_id);
            NSLog(@"title: %@", item.title);
        }
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];
val limit = 10 // お知らせの取得件数(nullの場合は全件取得)

// 検索条件
val searchConditions = listOf(
    // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
    RKZSearchCondition(RKZSearchCondition.EQUAL, "category", listOf("0001"))
)
// ソート条件
val sortConditions = listOf(
    // date(作成日付)の降順にソート
    RKZSortCondition(RKZSortCondition.DESC, "date")
)

RKZClient.getInstance().getNewsList(limit, searchConditions, sortConditions) { newsList, rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        // 成功時
        newsList.forEach {
            Log.d(TAG, "newsId: ${it.newsId}")
            Log.d(TAG, "title: ${it.title}")
        }
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}
Integer limit = 10; // お知らせの取得件数(nullの場合は全件取得)

// 検索条件
List<RKZSearchCondition> searchConditions = Arrays.asList(
    // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
    new RKZSearchCondition(RKZSearchCondition.EQUAL, "category", Arrays.asList("0001"))
);
// ソート条件
List<RKZSortCondition> sortConditions = Arrays.asList(
    // date(作成日付)の降順にソート
    new RKZSortCondition(RKZSortCondition.DESC, "date")
);

RKZClient.getInstance().getNewsList(limit, searchConditions, sortConditions, new OnGetNewsListListener() {
    @Override
    public void onGetNewsList(List<News> newsList, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            // 成功時
            for (News item : newsList) {
                Log.d(TAG, "newsId: " + item.getNewsId());
                Log.d(TAG, "title: " + item.getTitle());
            }
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});
var limit = 10 // お知らせの取得件数(未設定の場合は全件取得)

// 検索条件
var searchConditions = [
  // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
  RKZSearchCondition.equal('category', '0001')
]
// ソート条件
var sortConditions = [
  // date(作成日付)の降順にソート
  RKZSortCondition.desc('date')
]

RKZClient.getNewsList(limit, searchConditions, sortConditions, function (newsList) {
  // 成功時
  newsList.forEach(function (item) {
    console.debug('news_id:', item.news_id)
    console.debug('title:', item.title)
  })
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})
const result = await RKZ.News.query()
    .equalTo('category', '0001') // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
    .desc('date') // date(作成日付)の降順にソート
    .limit(10) // お知らせの取得件数(未設定の場合は全件取得)
    .all()

result.data.forEach(item => {
  console.debug('news_id:', item.news_id)
  console.debug('title:', item.title)
})
final query = RKZClient.instance.newsQuery()
  ..equalTo('category', '0001') // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
  ..desc('date') // date(作成日付)の降順にソート
  ..limit = 10; // お知らせの取得件数(未設定の場合は全件取得)
final result = await query.all();

result.data.forEach((item) {
  print('newsId: ${item.newsId}');
  print('title: ${item.title}');
});

公開されているお知らせのみ検索するにはgetReleasedNewsListメソッド(JavaScript・FlutterはNewsQuery.releasedメソッド)を使用します。

let limit: NSNumber = 10 // お知らせの取得件数(nilの場合は全件取得)

// 検索条件
let searchConditions = [
    // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
    RKZSearchCondition(RKZSearchConditionEqual, searchColumn: "category", searchValueArray: ["0001"])
]
// ソート条件
let sortConditions = [
    // date(作成日付)の降順にソート
    RKZSortCondition(RKZSortTypeDesc, sortColumn: "date")
]

RKZService.sharedInstance().getReleasedNewsList(limit, searchConditionArray: searchConditions, sortConditionArray: sortConditions) { newsList, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        newsList.forEach { item in
            print("news_id:", item.news_id ?? "")
            print("title:", item.title ?? "")
        }
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}













 












NSNumber *limit = @10; // お知らせの取得件数(nilの場合は全件取得)

// 検索条件
NSArray<RKZSearchCondition *> *searchConditions = @[
    // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
    [[RKZSearchCondition alloc] initWithSearchConditionType:RKZSearchConditionEqual searchColumn:@"category" searchValueArray:@[@"0001"]]
];
// ソート条件
NSArray<RKZSortCondition *> *sortConditions = @[
    // date(作成日付)の降順にソート
    [[RKZSortCondition alloc] initWithSortType:RKZSortTypeDesc sortColumn:@"date"]
];

[[RKZService sharedInstance] getReleasedNewsList:limit searchConditionArray:searchConditions sortConditionArray:sortConditions withBlock:^(NSArray<RKZNewsData *> * _Nonnull newsList, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        for (RKZNewsData *item in newsList) {
            NSLog(@"news_id: %@", item.news_id);
            NSLog(@"title: %@", item.title);
        }
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];













 












val limit = 10 // お知らせの取得件数(nullの場合は全件取得)

// 検索条件
val searchConditions = listOf(
    // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
    RKZSearchCondition(RKZSearchCondition.EQUAL, "category", listOf("0001"))
)
// ソート条件
val sortConditions = listOf(
    // date(作成日付)の降順にソート
    RKZSortCondition(RKZSortCondition.DESC, "date")
)

RKZClient.getInstance().getReleasedNewsList(limit, searchConditions, sortConditions) { newsList, rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        // 成功時
        newsList.forEach {
            Log.d(TAG, "newsId: ${it.newsId}")
            Log.d(TAG, "title: ${it.title}")
        }
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}













 












Integer limit = 10; // お知らせの取得件数(nullの場合は全件取得)

// 検索条件
List<RKZSearchCondition> searchConditions = Arrays.asList(
    // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
    new RKZSearchCondition(RKZSearchCondition.EQUAL, "category", Arrays.asList("0001"))
);
// ソート条件
List<RKZSortCondition> sortConditions = Arrays.asList(
    // date(作成日付)の降順にソート
    new RKZSortCondition(RKZSortCondition.DESC, "date")
);

RKZClient.getInstance().getReleasedNewsList(limit, searchConditions, sortConditions, new OnGetReleasedNewsListListener() {
    @Override
    public void onGetReleasedNewsListListener(List<News> newsList, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            // 成功時
            for (News item : newsList) {
                Log.d(TAG, "newsId: " + item.getNewsId());
                Log.d(TAG, "title: " + item.getTitle());
            }
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});













 















var limit = 10 // お知らせの取得件数(未設定の場合は全件取得)

// 検索条件
var searchConditions = [
  // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
  RKZSearchCondition.equal('category', '0001')
]
// ソート条件
var sortConditions = [
  // date(作成日付)の降順にソート
  RKZSortCondition.desc('date')
]

RKZClient.getReleasedNewsList(limit, searchConditions, sortConditions, function (newsList) {
  // 成功時
  newsList.forEach(function (item) {
    console.debug('news_id:', item.news_id)
    console.debug('title:', item.title)
  })
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})













 










const result = await RKZ.News.query()
    .equalTo('category', '0001') // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
    .desc('date') // date(作成日付)の降順にソート
    .limit(10) // お知らせの取得件数(未設定の場合は全件取得)
    .released()

result.data.forEach(item => {
  console.debug('news_id:', item.news_id)
  console.debug('title:', item.title)
})




 





final query = RKZClient.instance.newsQuery()
  ..equalTo('category', '0001') // category(お知らせカテゴリ)が"0001"のレコードに絞り込む
  ..desc('date') // date(作成日付)の降順にソート
  ..limit = 10; // お知らせの取得件数(未設定の場合は全件取得)
final result = await query.released();

result.data.forEach((item) {
  print('newsId: ${item.newsId}');
  print('title: ${item.title}');
});




 





ヒント

お知らせの公開設定は管理画面より行えます。「公開する」がONになっており、システム日付が公開期間内の場合、公開されていると見なされます。

注意

getNewsListgetReleasedNewsListメソッドはlimit(取得件数)のみ指定することができます。併せてoffset(取得位置)を指定したい場合は、ページング機能を使用してください。

セグメント配信されたお知らせを検索する

セグメント配信されているお知らせを検索するにはgetSegmentNewsListメソッド(JavaScript・FlutterはNewsQuery.allメソッド)を使用します。

セグメント配信条件に一致するお知らせのみ取得したい場合は、segmentMatchOnlytrueにしてください。falseにすると、一致しないお知らせも合わせて取得します。

let limit: NSNumber = 10
let userAccessToken = "xxx" // セグメント配信されているお知らせを検索するには必須
let segmentMatchOnly = true // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)

RKZService.sharedInstance().getSegmentNewsList(limit, userAccessToken: userAccessToken, onlyMatchSegment: segmentMatchOnly, searchConditionArray: nil, sortConditionArray: nil) { newsList, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        newsList.forEach { item in
            print("news_id:", item.news_id ?? "")
            print("title:", item.title ?? "")
        }
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}
NSNumber *limit = @10;
NSString *userAccessToken = @"xxx"; // セグメント配信されているお知らせを検索するには必須
BOOL segmentMatchOnly = YES; // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)

[[RKZService sharedInstance] getSegmentNewsList:limit userAccessToken:userAccessToken onlyMatchSegment:segmentMatchOnly searchConditionArray:nil sortConditionArray:nil withBlock:^(NSArray<RKZNewsData *> * _Nonnull newsList, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        for (RKZNewsData *item in newsList) {
            NSLog(@"news_id: %@", item.news_id);
            NSLog(@"title: %@", item.title);
        }
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];
val limit = 10
val userAccessToken = "xxx" // セグメント配信されているお知らせを検索するには必須
val segmentMatchOnly = true // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)

RKZClient.getInstance().getSegmentNewsList(limit, userAccessToken, segmentMatchOnly, null, null) { newsList, rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        // 成功時
        newsList.forEach {
            Log.d(TAG, "newsId: ${it.newsId}")
            Log.d(TAG, "title: ${it.title}")
        }
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}
Integer limit = 10;
String userAccessToken = "xxx"; // セグメント配信されているお知らせを検索するには必須
Boolean segmentMatchOnly = true; // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)

RKZClient.getInstance().getSegmentNewsList(limit, userAccessToken, segmentMatchOnly, null, null, new OnGetNewsListListener() {
    @Override
    public void onGetNewsList(List<News> newsList, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            // 成功時
            for (News item : newsList) {
                Log.d(TAG, "newsId: " + item.getNewsId());
                Log.d(TAG, "title: " + item.getTitle());
            }
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});
var limit = 10
var userAccessToken = 'xxx' // セグメント配信されているお知らせを検索するには必須
var segmentMatchOnly = true // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)

RKZClient.getSegmentNewsList(limit, userAccessToken, segmentMatchOnly, null, null, function (newsList) {
  // 成功時
  newsList.forEach(function (item) {
    console.debug('news_id:', item.news_id)
    console.debug('title:', item.title)
  })
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})
const userAccessToken = 'xxx' // セグメント配信されているお知らせを検索するには必須

const result = await RKZ.News.query(userAccessToken)
    .limit(10)
    .segmentMatchOnly() // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)
    .all()

result.data.forEach(item => {
  console.debug('news_id:', item.news_id)
  console.debug('title:', item.title)
})
final userAccessToken = 'xxx'; // セグメント配信されているお知らせを検索するには必須

final query = RKZClient.instance.newsQuery(userAccessToken: userAccessToken)
  ..limit = 10
  ..segmentMatchOnly(); // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)
final result = await query.all();

result.data.forEach((item) {
  print('newsId: ${item.newsId}');
  print('title: ${item.title}');
});

ヒント

JavaScript・Flutterはセグメント配信するための専用のメソッドは用意していません。クエリオブジェクトを生成する際にユーザーアクセストークンを指定することで、セグメント配信されているお知らせを検索することができるようになります。


公開およびセグメント配信されているお知らせのみ検索するにはgetReleasedSegmentNewsListメソッド(JavaScript・FlutterはNewsQuery.releasedメソッド)で⾏います。

let limit: NSNumber = 10
let userAccessToken = "xxx" // セグメント配信されているお知らせを検索するには必須
let segmentMatchOnly = true // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)

RKZService.sharedInstance().getReleasedSegmentNewsList(limit, userAccessToken: userAccessToken, onlyMatchSegment: segmentMatchOnly, searchConditionArray: nil, sortConditionArray: nil) { newsList, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        newsList.forEach { item in
            print("news_id:", item.news_id ?? "")
            print("title:", item.title ?? "")
        }
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}




 












NSNumber *limit = @10;
NSString *userAccessToken = @"xxx"; // セグメント配信されているお知らせを検索するには必須
BOOL segmentMatchOnly = YES; // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)

[[RKZService sharedInstance] getReleasedSegmentNewsList:limit userAccessToken:userAccessToken onlyMatchSegment:segmentMatchOnly searchConditionArray:nil sortConditionArray:nil withBlock:^(NSArray<RKZNewsData *> * _Nonnull newsList, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        for (RKZNewsData *item in newsList) {
            NSLog(@"news_id: %@", item.news_id);
            NSLog(@"title: %@", item.title);
        }
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];




 












val limit = 10
val userAccessToken = "xxx" // セグメント配信されているお知らせを検索するには必須
val segmentMatchOnly = true // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)

RKZClient.getInstance().getReleasedSegmentNewsList(limit, userAccessToken, segmentMatchOnly, null, null) { newsList, rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        // 成功時
        newsList.forEach {
            Log.d(TAG, "newsId: ${it.newsId}")
            Log.d(TAG, "title: ${it.title}")
        }
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}




 












Integer limit = 10;
String userAccessToken = "xxx"; // セグメント配信されているお知らせを検索するには必須
Boolean segmentMatchOnly = true; // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)

RKZClient.getInstance().getReleasedSegmentNewsList(limit, userAccessToken, segmentMatchOnly, null, null, new OnGetReleasedNewsListListener() {
    @Override
    public void onGetReleasedNewsListListener(List<News> newsList, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            // 成功時
            for (News item : newsList) {
                Log.d(TAG, "newsId: " + item.getNewsId());
                Log.d(TAG, "title: " + item.getTitle());
            }
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});




 















var limit = 10
var userAccessToken = 'xxx' // セグメント配信されているお知らせを検索するには必須
var segmentMatchOnly = true // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)

RKZClient.getReleasedSegmentNewsList(limit, userAccessToken, segmentMatchOnly, null, null, function (newsList) {
  // 成功時
  newsList.forEach(function (item) {
    console.debug('news_id:', item.news_id)
    console.debug('title:', item.title)
  })
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})




 










const userAccessToken = 'xxx' // セグメント配信されているお知らせを検索するには必須

const result = await RKZ.News.query(userAccessToken)
    .limit(10)
    .segmentMatchOnly() // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)
    .released()

result.data.forEach(item => {
  console.debug('news_id:', item.news_id)
  console.debug('title:', item.title)
})





 





final userAccessToken = 'xxx'; // セグメント配信されているお知らせを検索するには必須

final query = RKZClient.instance.newsQuery(userAccessToken: userAccessToken)
  ..limit = 10
  ..segmentMatchOnly(); // セグメント配信条件に一致するお知らせのみ取得(呼び出さない場合は一致しないお知らせも取得する)
final result = await query.released();

result.data.forEach((item) {
  print('newsId: ${item.newsId}');
  print('title: ${item.title}');
});





 





ページング機能を利⽤してお知らせを検索する

お知らせからレコードを取得するときに、ページング機能を利⽤すると「取得するレコードの開始位置」、「取得するレコードの件数」といったレコードを分割して取得するための条件を指定することができます。

取得結果には条件に該当したレコードのほかに、指定された条件に該当したデータの総件数も取得することができます。

ページングを利⽤してレコードを取得する場合は、getPaginateNewsListgetPaginateReleasedNewsListgetPaginateSegmentNewsListgetPaginateReleasedSegmentNewsListメソッド(JavaScript・FlutterはNewsQuery.allNewsQuery.releasedメソッド)を使用します。目的に応じて、ページング用のメソッドを使用してください。

let limit: NSNumber = 10 // 取得するデータの件数を指定します
let offset: NSNumber = 0 // データの取得位置を指定します

RKZService.sharedInstance().getPaginateReleasedNewsList(limit, offset: offset, searchConditionArray: nil, sortConditionArray: nil) { pagingData, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        print("result_cnt:", pagingData.result_cnt)
        print("data:", pagingData.datas)
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}
NSNumber *limit = @10; // 取得するデータの件数を指定します
NSNumber *offset = @0; // データの取得位置を指定します

[[RKZService sharedInstance] getPaginateReleasedNewsList:limit offset:offset searchConditionArray:nil sortConditionArray:nil withBlock:^(RKZPagingData<RKZNewsData *> * _Nonnull pagingData, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        NSLog(@"result_cnt: %@", pagingData.result_cnt);
        NSLog(@"data: %@", pagingData.datas);
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];
val limit = 10 // 取得するデータの件数を指定します
val offset = 0 // データの取得位置を指定します

RKZClient.getInstance().getPaginateReleasedNewsList(limit, offset, null, null) { pagingData, rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        // 成功時
        Log.d(TAG, "resultCnt: ${pagingData.resultCnt}")
        Log.d(TAG, "data: ${pagingData.datas}")
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}
Integer limit = 10; // 取得するデータの件数を指定します
Integer offset = 0; // データの取得位置を指定します

RKZClient.getInstance().getPaginateReleasedNewsList(limit, offset, null, null, new OnGetPagingDataListener<News>() {
    @Override
    public void onGetPagingData(PagingData<News> pagingData, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            // 成功時
            Log.d(TAG, "resultCnt: " + pagingData.getResultCnt());
            Log.d(TAG, "data: " + pagingData.getDatas());
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});
var limit = 10 // 取得するデータの件数を指定します
var offset = 0 // データの取得位置を指定します

RKZClient.getPaginateReleasedNewsList(limit, offset, null, null, function (pagingData) {
  // 成功時
  console.debug('result_cnt:', pagingData.result_cnt)
  console.debug('data:', pagingData.datas)
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})
const result = await RKZ.News.query()
    .offset(0) // データの取得位置を指定します
    .limit(10) // 取得するデータの件数を指定します
    .released() // 検索を実行

console.debug('result_cnt:', result.result_cnt)
console.debug('data:', result.data)
final query = RKZClient.instance.newsQuery()
  ..offset = 0 // データの取得位置を指定します
  ..limit = 10; // 取得するデータの件数を指定します
final result = await query.released(); // 検索を実行

print('resultCnt: ${result.resultCnt}');
print('data: ${result.data}');

お知らせの既読情報を登録する

お知らせをアプリケーションの利用者が閲覧したかどうかを既読情報として記録することができます。記録した既読情報は管理画面から確認することができます。

既読情報の登録はreadNewsメソッドで行います。

let newsId = "1" // 閲覧したお知らせのID
let userAccessToken = "xxx"

RKZService.sharedInstance().readNews(newsId, userAccessToken: userAccessToken) { statusCode, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        print("登録完了")
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}
NSString *newsId = @"1"; // 閲覧したお知らせのID
NSString *userAccessToken = @"xxx";

[[RKZService sharedInstance] readNews:newsId userAccessToken:userAccessToken withBlock:^(RKZApiStatusCode statusCode, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        NSLog(@"登録完了");
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];
val newsId = "1" // 閲覧したお知らせのID
val userAccessToken = "xxx"

RKZClient.getInstance().readNews(newsId, userAccessToken) { statusCode, rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        // 成功時
        Log.d(TAG, "登録完了")
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}
String newsId = "1"; // 閲覧したお知らせのID
String userAccessToken = "xxx";

RKZClient.getInstance().readNews(newsId, userAccessToken, new OnReadNewsListener() {
    @Override
    public void onReadNews(String s, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            // 成功時
            Log.d(TAG, "登録完了");
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});
var params = {
  news_id: '1' // 閲覧したお知らせのID
}
var userAccessToken = 'xxx'

RKZClient.readNews(params, userAccessToken, function (statusCode) {
  // 成功時
  console.debug('登録完了')
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})
const userAccessToken = 'xxx'
const newsId = '1' // 閲覧したお知らせのID

const readDate = await RKZ.News.readNews(userAccessToken, newsId)

console.debug('readDate: ', readDate) // 既読にした日時
final userAccessToken = 'xxx';
final newsId = '1'; // 閲覧したお知らせのID

await RKZClient.instance.readNews(userAccessToken, newsId);

お知らせを検索する際に既読情報を一緒に取得するには、ユーザーアクセストークンを指定します。

返却された各レコードのreaded_flg(既読フラグ)とreaded_dte(既読にした日時)を参照してください。

let limit: NSNumber = 10

let extensionAttribute = RKZNewsExtensionAttribute()
extensionAttribute.user_access_token = "xxx"

RKZService.sharedInstance().getReleasedNewsList(limit, searchConditionArray: nil, sortConditionArray: nil, extensionAttribute: extensionAttribute) { newsList, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        newsList.forEach { item in
            print("news_id:", item.news_id ?? "")
            print("title:", item.title ?? "")
            print("readed_flg:", item.readed_flg) // 既読の場合はtrueになる
            print("readed_dte:", item.readed_dte ?? "") // 既読にした日時
        }
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}



 
















NSNumber *limit = @10;

RKZNewsExtensionAttribute *extensionAttribute = [[RKZNewsExtensionAttribute alloc] init];
extensionAttribute.user_access_token = @"xxx";

[[RKZService sharedInstance] getReleasedNewsList:limit searchConditionArray:nil sortConditionArray:nil withBlock:^(NSArray<RKZNewsData *> * _Nonnull newsList, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        for (RKZNewsData *item in newsList) {
            NSLog(@"news_id: %@", item.news_id);
            NSLog(@"title: %@", item.title);
            NSLog(@"readed_flg: %d", item.readed_flg); // 既読の場合はtrueになる
            NSLog(@"readed_dte: %@", item.readed_dte); // 既読にした日時
        }
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];



 
















val limit = 10

val extensionAttribute = NewsExtensionAttribute()
extensionAttribute.setUserAccessToken("xxx")

RKZClient.getInstance().getReleasedNewsList(limit, null, null, extensionAttribute) { newsList, rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        // 成功時
        newsList.forEach {
            Log.d(TAG, "newsId: ${it.newsId}")
            Log.d(TAG, "title: ${it.title}")
            Log.d(TAG, "readedFlg: ${it.readedFlg}") // 既読の場合はtrueになる
            Log.d(TAG, "readedDte: ${it.readedDte}") // 既読にした日時
        }
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}



 
















Integer limit = 10;

NewsExtensionAttribute extensionAttribute = new NewsExtensionAttribute();
extensionAttribute.setUserAccessToken("xxx");

RKZClient.getInstance().getReleasedNewsList(limit, null, null, extensionAttribute, new OnGetReleasedNewsListListener() {
    @Override
    public void onGetReleasedNewsListListener(List<News> newsList, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            // 成功時
            for (News news : newsList) {
                Log.d(TAG, "newsId: " + news.getNewsId());
                Log.d(TAG, "title: " + news.getTitle());
                Log.d(TAG, "readedFlg: " + news.getReadedFlg()); // 既読の場合はtrueになる
                Log.d(TAG, "readedDte: " + news.getReadedDte()); // 既読にした日時
            }
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});



 



















var limit = 10

var extensionAttribute = {
  user_access_token: 'xxx'
}

RKZClient.getReleasedNewsList(limit, null, null, extensionAttribute, function (newsList) {
  // 成功時
  newsList.forEach(function (item) {
    console.debug('news_id:', item.news_id)
    console.debug('title:', item.title)
    console.debug('readed_flg:', item.readed_flg) // 既読の場合はtrueになる
    console.debug('readed_dte:', item.readed_dte) // 既読にした日時
  })
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})



 















const userAccessToken = 'xxx'

const result = await RKZ.News.query(userAccessToken).released()

result.data.forEach(item => {
  console.debug('news_id:', item.news_id)
  console.debug('title:', item.title)
  console.debug('readed_flg:', item.readed_flg) // 既読の場合はtrueになる
  console.debug('readed_dte:', item.readed_dte) // 既読にした日時
})
 









final userAccessToken = 'xxx';

final result = await RKZClient.instance.newsQuery(userAccessToken: userAccessToken)
    .released();

result.data.forEach((item) {
  print('newsId: ${item.newsId}');
  print('title: ${item.title}');
  print('readedFlg: ${item.readedFlg}'); // 既読の場合はtrueになる
  print('readedDte: ${item.readedDte}'); // 既読にした日時
});
 











また、既読のみ、未読のみのお知らせに絞り込むことができます。

既読のみ:

let searchConditions = [
    RKZSearchCondition(readedNewsType: AlreadyReadForReadedNews)
]

let extensionAttribute = RKZNewsExtensionAttribute()
extensionAttribute.user_access_token = "xxx"

RKZService.sharedInstance().getReleasedNewsList(nil, searchConditionArray: searchConditions, sortConditionArray: nil, extensionAttribute: extensionAttribute) { newsList, responseStatus in
    // ...
}

 








NSArray<RKZSearchCondition *> *searchConditions = @[
    [[RKZSearchCondition alloc] initWithReadedNewsType:AlreadyReadForReadedNews]
];

RKZNewsExtensionAttribute *extensionAttribute = [[RKZNewsExtensionAttribute alloc] init];
extensionAttribute.user_access_token = @"xxx";

[[RKZService sharedInstance] getReleasedNewsList:limit searchConditionArray:searchConditions sortConditionArray:nil withBlock:^(NSArray<RKZNewsData *> * _Nonnull newsList, RKZResponseStatus * _Nonnull responseStatus) {
    // ...
}];

 








val searchConditions = listOf(
    RKZSearchCondition.initWithReadedNewsType(RKZSearchCondition.ReadedNewsType.AlreadyRead)
)

val extensionAttribute = NewsExtensionAttribute()
extensionAttribute.setUserAccessToken("xxx")

RKZClient.getInstance().getReleasedNewsList(null, searchConditions, null, extensionAttribute) { newsList, rkzResponseStatus ->
    // ...
}

 








List<RKZSearchCondition> searchConditions = Arrays.asList(
    RKZSearchCondition.initWithReadedNewsType(RKZSearchCondition.ReadedNewsType.AlreadyRead)
);

NewsExtensionAttribute extensionAttribute = new NewsExtensionAttribute();
extensionAttribute.setUserAccessToken("xxx");

RKZClient.getInstance().getReleasedNewsList(null, searchConditions, null, extensionAttribute, new OnGetReleasedNewsListListener() {
    @Override
    public void onGetReleasedNewsListListener(List<News> newsList, RKZResponseStatus rkzResponseStatus) {
        // ...
    }
});

 











var searchConditions = [
  RKZSearchCondition.readedNews.alreadyRead()
]

var extensionAttribute = {
  user_access_token: 'xxx'
}

RKZClient.getReleasedNewsList(null, searchConditions, null, extensionAttribute, function (newsList) {
  // ...
}, function (error) {
  // ...
})

 











const userAccessToken = 'xxx'

const result = await RKZ.News.query(userAccessToken)
    .alreadyRead()
    .released()



 

final userAccessToken = 'xxx';

final query = RKZClient.instance.newsQuery(userAccessToken: userAccessToken)
    ..alreadyRead();
final result = await query.released();



 

未読のみ:

let searchConditions = [
    RKZSearchCondition(readedNewsType: NonreadForReadedNews)
]

let extensionAttribute = RKZNewsExtensionAttribute()
extensionAttribute.user_access_token = "xxx"

RKZService.sharedInstance().getReleasedNewsList(nil, searchConditionArray: searchConditions, sortConditionArray: nil, extensionAttribute: extensionAttribute) { newsList, responseStatus in
    // ...
}

 








NSArray<RKZSearchCondition *> *searchConditions = @[
    [[RKZSearchCondition alloc] initWithReadedNewsType:NonreadForReadedNews]
];

RKZNewsExtensionAttribute *extensionAttribute = [[RKZNewsExtensionAttribute alloc] init];
extensionAttribute.user_access_token = @"xxx";

[[RKZService sharedInstance] getReleasedNewsList:limit searchConditionArray:searchConditions sortConditionArray:nil withBlock:^(NSArray<RKZNewsData *> * _Nonnull newsList, RKZResponseStatus * _Nonnull responseStatus) {
    // ...
}];

 








val searchConditions = listOf(
    RKZSearchCondition.initWithReadedNewsType(RKZSearchCondition.ReadedNewsType.Nonread)
)

val extensionAttribute = NewsExtensionAttribute()
extensionAttribute.setUserAccessToken("xxx")

RKZClient.getInstance().getReleasedNewsList(null, searchConditions, null, extensionAttribute) { newsList, rkzResponseStatus ->
    // ...
}

 








List<RKZSearchCondition> searchConditions = Arrays.asList(
    RKZSearchCondition.initWithReadedNewsType(RKZSearchCondition.ReadedNewsType.Nonread)
);

NewsExtensionAttribute extensionAttribute = new NewsExtensionAttribute();
extensionAttribute.setUserAccessToken("xxx");

RKZClient.getInstance().getReleasedNewsList(null, searchConditions, null, extensionAttribute, new OnGetReleasedNewsListListener() {
    @Override
    public void onGetReleasedNewsListListener(List<News> newsList, RKZResponseStatus rkzResponseStatus) {
        // ...
    }
});

 











var searchConditions = [
  RKZSearchCondition.readedNews.nonread()
]

var extensionAttribute = {
  user_access_token: 'xxx'
}

RKZClient.getReleasedNewsList(null, searchConditions, null, extensionAttribute, function (newsList) {
  // ...
}, function (error) {
  // ...
})

 











const userAccessToken = 'xxx'

const result = await RKZ.News.query(userAccessToken)
    .unread()
    .released()



 

final userAccessToken = 'xxx';

final query = RKZClient.instance.newsQuery(userAccessToken: userAccessToken)
    ..unread();
final result = await query.released();



 


注意

iOS・Android・Cordovaでは既読情報の扱いに関連した他のメソッド(registNewsReadHistorygetNewsReadHistorygetNewsReadHistoryList)がありますが、これらは非推奨のメソッドです。

registNewsReadHistoryで登録した既読情報はgetReleasedNewsListなどのメソッドで取得することはできません。registNewsReadHistoryで登録した既読情報を取得するには、getNewsReadHistorygetNewsReadHistoryListを使用してください。

また、逆にreadNewsで登録した既読情報はgetNewsReadHistorygetNewsReadHistoryListで取得することはできません。

非推奨のメソッドを使って既読情報を登録した場合、管理画面にも既読情報は表示されません。そのため、新規で作成するアプリケーションでは非推奨のメソッドは使用しないようにしてください。

お知らせをお気に入りに追加する

「お気に入り」とはユーザーごとに特定のお知らせをマーク付けする機能です。

この機能を使用することで、ユーザーが保存したお知らせをマイページに表示したり、お知らせごとにお気に入り追加したユーザー数を表示することができます。

お気に入りに追加するにはaddNewsToFavoriteメソッドを使用します。

let userAccessToken = "xxx"

let news = RKZNewsData()
news.news_id = "1" // お気に入りに追加するお知らせID

RKZService.sharedInstance().addNewsToFavorite(news, userAccessToken: userAccessToken) { statusCode, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        print("追加完了")
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}
NSString *userAccessToken = @"xxx";

RKZNewsData *news = [[RKZNewsData alloc] init];
news.news_id = @"1"; // お気に入りに追加するお知らせID

[[RKZService sharedInstance] addNewsToFavorite:news userAccessToken:userAccessToken withBlock:^(RKZApiStatusCode statusCode, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        NSLog(@"追加完了");
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];
val userAccessToken = "xxx"

val news = News()
news.newsId = "1" // お気に入りに追加するお知らせID

RKZClient.getInstance().addNewsToFavorite(news, userAccessToken) { rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        // 成功時
        Log.d(TAG, "追加完了")
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}
String userAccessToken = "xxx";

News news = new News();
news.setNewsId("1"); // お気に入りに追加するお知らせID

RKZClient.getInstance().addNewsToFavorite(news, userAccessToken, new OnAddFavoriteListener() {
    @Override
    public void onAddFavorite(RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            // 成功時
            Log.d(TAG, "追加完了");
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});
var userAccessToken = 'xxx'

var news = {
  news_id: '1' // お気に入りに追加するお知らせID
}

RKZClient.addNewsToFavorite(news, userAccessToken, function (statusCode) {
  // 成功時
  console.debug('追加完了')
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})
const userAccessToken = 'xxx'
const newsId = '1' // お気に入りに追加するお知らせID

await RKZ.News.addToFavorite(userAccessToken, newsId)
final userAccessToken = 'xxx';
final newsId = '1'; // お気に入りに追加するお知らせID

await RKZClient.instance.addNewsToFavorite(userAccessToken, newsId);

お知らせをお気に入りから削除する

お気に入りから削除するにはdeleteNewsFromFavoriteメソッドを使用します。

let userAccessToken = "xxx"

let news = RKZNewsData()
news.news_id = "1" // お気に入りから削除するお知らせID

RKZService.sharedInstance().deleteNewsFromFavorite(news, userAccessToken: userAccessToken) { statusCode, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        print("削除完了")
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}
NSString *userAccessToken = @"xxx";

RKZNewsData *news = [[RKZNewsData alloc] init];
news.news_id = @"1"; // お気に入りから削除するお知らせID

[[RKZService sharedInstance] deleteNewsFromFavorite:news userAccessToken:userAccessToken withBlock:^(RKZApiStatusCode statusCode, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        NSLog(@"削除完了");
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];
val userAccessToken = "xxx"

val news = News()
news.newsId = "1" // お気に入りから削除するお知らせID

RKZClient.getInstance().deleteNewsFromFavorite(news, userAccessToken) { rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        // 成功時
        Log.d(TAG, "削除完了")
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}
String userAccessToken = "xxx";

News news = new News();
news.setNewsId("1"); // お気に入りから削除するお知らせID

RKZClient.getInstance().deleteNewsFromFavorite(news, userAccessToken, new OnDeleteFavoriteListener() {
    @Override
    public void onDeleteFavorite(RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            // 成功時
            Log.d(TAG, "削除完了");
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});
var userAccessToken = 'xxx'

var news = {
  news_id: '1' // お気に入りから削除するお知らせID
}

RKZClient.deleteNewsFromFavorite(news, userAccessToken, function (statusCode) {
  // 成功時
  console.debug('削除完了')
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})
const userAccessToken = 'xxx'
const newsId = '1' // お気に入りから削除するお知らせID

await RKZ.News.deleteFromFavorite(userAccessToken, newsId)
final userAccessToken = 'xxx';
final newsId = '1'; // お気に入りから削除するお知らせID

await RKZClient.instance.deleteNewsFromFavorite(userAccessToken, newsId);

お気に⼊り追加したお知らせを検索する

お知らせを検索する際にお気に⼊り情報を一緒に取得するには、ユーザーアクセストークンを指定して、show_favoritetrueにします。(JavaScript・FlutterはNewsQuery.withFavoriteメソッドを呼び出してください)

返却された各レコードのsys_favorite.is_favorite(ユーザーがお気に入り追加しているか?)とsys_favorite.favorite_date(最後にお気に入り追加した日時)を参照してください。

let limit: NSNumber = 10

let extensionAttribute = RKZNewsExtensionAttribute()
extensionAttribute.user_access_token = "xxx"
extensionAttribute.show_favorite = true

RKZService.sharedInstance().getNewsList(limit, searchConditionArray: nil, sortConditionArray: nil, extensionAttribute: extensionAttribute) { newsList, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        newsList.forEach { item in
            print("news_id:", item.news_id ?? "")
            print("title:", item.title ?? "")
            print("is_favorite:", item.is_favorite) // ユーザーがお気に入り追加している場合true
            print("favorite_date:", item.favorite_date ?? "") // 最後にお気に入り追加した日時
        }
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}



 
 







 
 







NSNumber *limit = @10;

RKZNewsExtensionAttribute *extensionAttribute = [[RKZNewsExtensionAttribute alloc] init];
extensionAttribute.user_access_token = @"xxx";
extensionAttribute.show_favorite = YES;

[[RKZService sharedInstance] getNewsList:limit searchConditionArray:nil sortConditionArray:nil withBlock:^(NSArray<RKZNewsData *> * _Nonnull newsList, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        for (RKZNewsData *item in newsList) {
            NSLog(@"news_id: %@", item.news_id);
            NSLog(@"title: %@", item.title);
            NSLog(@"is_favorite: %d", item.is_favorite); // ユーザーがお気に入り追加している場合true
            NSLog(@"favorite_date: %@", item.favorite_date); // 最後にお気に入り追加した日時
        }
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];



 
 







 
 







val limit = 10

val extensionAttribute = NewsExtensionAttribute()
extensionAttribute.setUserAccessToken("xxx")
extensionAttribute.setShowFavorite(true)

RKZClient.getInstance().getNewsList(limit, null, null, extensionAttribute) { newsList, rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        // 成功時
        newsList.forEach {
            Log.d(TAG, "newsId: ${it.newsId}")
            Log.d(TAG, "title: ${it.title}")
            Log.d(TAG, "isFavorite: ${it.isFavorite}") // ユーザーがお気に入り追加している場合true
            Log.d(TAG, "favoriteDate: ${it.favoriteDate}") // 最後にお気に入り追加した日時
        }
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}



 
 







 
 







Integer limit = 10;

NewsExtensionAttribute extensionAttribute = new NewsExtensionAttribute();
extensionAttribute.setUserAccessToken("xxx");
extensionAttribute.setShowFavorite(true);

RKZClient.getInstance().getNewsList(limit, null, null, extensionAttribute, new OnGetNewsListListener() {
    @Override
    public void onGetNewsList(List<News> newsList, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            // 成功時
            for (News item : newsList) {
                Log.d(TAG, "newsId: " + item.getNewsId());
                Log.d(TAG, "title: " + item.getTitle());
                Log.d(TAG, "isFavorite: " + item.getIsFavorite()); // ユーザーがお気に入り追加している場合true
                Log.d(TAG, "favoriteDate: " + item.getFavoriteDate()); // 最後にお気に入り追加した日時
            }
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});



 
 









 
 








var limit = 10

var extensionAttribute = {
  user_access_token: 'xxx',
  show_favorite: true
}

RKZClient.getNewsList(limit, null, null, extensionAttribute, function (newsList) {
  // 成功時
  newsList.forEach(function (item) {
    console.debug('news_id:', item.news_id)
    console.debug('title:', item.title)
    console.debug('is_favorite:', item.is_favorite) // ユーザーがお気に入り追加している場合true
    console.debug('favorite_date:', item.favorite_date) // 最後にお気に入り追加した日時
  })
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})



 
 







 
 






const userAccessToken = 'xxx'

const result = await RKZ.News.query(userAccessToken)
    .withFavorite()
    .all()
result.data.forEach(item => {
  console.debug('news_id:', item.news_id)
  console.debug('title:', item.title)
  console.debug('is_favorite:', item.is_favorite) // ユーザーがお気に入り追加している場合true
  console.debug('favorite_date:', item.favorite_date) // 最後にお気に入り追加した日時
})
 


 




 
 

final userAccessToken = 'xxx';

final query = RKZClient.instance.newsQuery(userAccessToken: userAccessToken)
    ..withFavorite();
final result = await query.all();

result.data.forEach((item) {
  print('newsId: ${item.newsId}');
  print('title: ${item.title}');
  print('isFavorite: ${item.isFavorite}'); // ユーザーがお気に入り追加している場合true
  print('favoriteDate: ${item.favoriteDate}'); // 最後にお気に入り追加した日時
});
 


 





 
 


show_favorite_summarytrueにすることで、お気に入りに追加されている件数を取得することができます。(JavaScript・FlutterはNewsQuery.withFavoriteSummaryメソッドを呼び出してください)

let limit: NSNumber = 10

let extensionAttribute = RKZNewsExtensionAttribute()
extensionAttribute.user_access_token = "xxx"
extensionAttribute.show_favorite = true
extensionAttribute.show_favorite_summary = true

RKZService.sharedInstance().getNewsList(limit, searchConditionArray: nil, sortConditionArray: nil, extensionAttribute: extensionAttribute) { newsList, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        newsList.forEach { item in
            print("news_id:", item.news_id ?? "")
            print("title:", item.title ?? "")
            print("favorite_count:", item.favorite_count ?? "") // お気に入りに追加されている件数
        }
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}





 







 







NSNumber *limit = @10;

RKZNewsExtensionAttribute *extensionAttribute = [[RKZNewsExtensionAttribute alloc] init];
extensionAttribute.user_access_token = @"xxx";
extensionAttribute.show_favorite = YES;
extensionAttribute.show_favorite_summary = YES;

[[RKZService sharedInstance] getNewsList:limit searchConditionArray:nil sortConditionArray:nil withBlock:^(NSArray<RKZNewsData *> * _Nonnull newsList, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        for (RKZNewsData *item in newsList) {
            NSLog(@"news_id: %@", item.news_id);
            NSLog(@"title: %@", item.title);
            NSLog(@"favorite_count: %@", item.favorite_count); // お気に入りに追加されている件数
        }
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];





 







 







val limit = 10

val extensionAttribute = NewsExtensionAttribute()
extensionAttribute.setUserAccessToken("xxx")
extensionAttribute.setShowFavorite(true)
extensionAttribute.setShowFavoriteSummary(true)

RKZClient.getInstance().getNewsList(limit, null, null, extensionAttribute) { newsList, rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        // 成功時
        newsList.forEach {
            Log.d(TAG, "newsId: ${it.newsId}")
            Log.d(TAG, "title: ${it.title}")
            Log.d(TAG, "favoriteCount: ${it.favoriteCount}") // お気に入りに追加されている件数
        }
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}





 







 







Integer limit = 10;

NewsExtensionAttribute extensionAttribute = new NewsExtensionAttribute();
extensionAttribute.setUserAccessToken("xxx");
extensionAttribute.setShowFavorite(true);
extensionAttribute.setShowFavoriteSummary(true);

RKZClient.getInstance().getNewsList(limit, null, null, extensionAttribute, new OnGetNewsListListener() {
    @Override
    public void onGetNewsList(List<News> newsList, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            // 成功時
            for (News item : newsList) {
                Log.d(TAG, "newsId: " + item.getNewsId());
                Log.d(TAG, "title: " + item.getTitle());
                Log.d(TAG, "favoriteCount: " + item.getFavoriteCount()); // お気に入りに追加されている件数
            }
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});





 









 








var limit = 10

var extensionAttribute = {
  user_access_token: 'xxx',
  show_favorite: true,
  show_favorite_summary: true
}

RKZClient.getNewsList(limit, null, null, extensionAttribute, function (newsList) {
  // 成功時
  newsList.forEach(function (item) {
    console.debug('news_id:', item.news_id)
    console.debug('title:', item.title)
    console.debug('favorite_count:', item.sys_favorite_sum.favorite_count) // お気に入りに追加されている件数
  })
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})





 







 






const userAccessToken = 'xxx'

const result = await RKZ.News.query(userAccessToken)
    .withFavorite()
    .withFavoriteSummary()
    .all()
result.data.forEach(item => {
  console.debug('news_id:', item.news_id)
  console.debug('title:', item.title)
  console.debug('favorite_count:', item.sys_favorite_sum.favorite_count) // お気に入りに追加されている件数
})




 




 

final userAccessToken = 'xxx';

final query = RKZClient.instance.newsQuery(userAccessToken: userAccessToken)
    ..withFavorite()
    ..withFavoriteSummary();
final result = await query.all();

result.data.forEach((item) {
  print('newsId: ${item.newsId}');
  print('title: ${item.title}');
  print('favoriteCount: ${item.favoriteCount}'); // お気に入りに追加されている件数
});