ニュースフィード¶
ニュースフィードを利用することで、プッシュ通知(スタンダード形式で作成されたもの)、アプリ内メッセージ および Webメッセージの履歴の取得が可能です。
ニュースフィードの仕様について¶
一度に取得可能なキャンペーン数¶
最新のキャンペーンから遡って最大で 200 通まで一度に取得可能です。200を超えて取得したい場合は、レスポンスの末尾の要素のIDを オフセットを利用して取得 のパラメータとして利用し、再度取得をしてください。
警告
プッシュ通知のキャンペーンの履歴をニュースフィード機能で取得するためには、以下のいずれかの SDK を利用する必要があります。
Android SDK 5.0.1 以上
iOS SDK 4.8.0 以上
Unity SDK 6.0.0 以上
React Native SDK 3.0.0 以上
Cordova Plugin 6.0.0 以上
Cocos2d-x SDK 5.0.0 以上
Flutter Package 1.0.0 以上
また、アプリ内メッセージおよびWebメッセージの履歴を取得するためには、以下のいずれかの SDK が必要です。
Android SDK 5.6.0 以上
iOS SDK 5.8.0 以上
Unity SDK 6.7.0 以上
React Native SDK 3.7.0 以上
Cordova Plugin 6.7.0 以上
Cocos2d-x SDK 5.7.0 以上
Flutter Package 2.0.0 以上
警告
ニュースフィードの機能を利用するには、以下の通りにキャンペーンが作成されている必要があります。
当該のキャンペーンはスタンダード形式で作成されている。(プッシュ通知の場合)
キャンペーンの作成時に「通知をニュースフィードとして使う」のチェックボックスにチェックしてある。
警告
カスタム JSON や PUSH API が指定されているキャンペーンはニュースフィードとして利用することができません。ご注意ください。
遡ることの出来るキャンペーン期間¶
リクエスト日を起点にして、 30日以内 に配信されたキャンペーンが取得可能です。
ニュースフィードインターフェース¶
データ形式¶
ニュースフィードは以下のようなデータ形式になっています。
public class NewsFeedEntry {
public final long id;
public final NewsFeedCampaignType campaignType;
public final String deviceID;
public final String title;
public final String summary;
public final String body;
public final Uri linkUrl; // Deprecated
public final String linkUrlString;
public final Uri imageUrl; // Deprecated
public final String imageUrlString;
public final Date deliveredAt;
public boolean shown;
public boolean read;
public NewsFeed(JSONObject json);
}
@interface RPRNewsFeedEntry : NSObject
@property (nonatomic, readonly) uint64_t ID;
@property (nonatomic, readonly) NSString *deviceID;
@property (nonatomic, readonly) NSString *title;
@property (nonatomic, readonly) NSString *summary;
@property (nonatomic, readonly) NSString *body;
@property (nonatomic, readonly) RPRCampaignType campaignType;
@property (nonatomic, readonly, nullable) NSURL *linkUrl; // Deprecated
@property (nonatomic, readonly) NSString *linkUrlString;
@property (nonatomic, readonly, nullable) NSURL *imageUrl; // Deprecated
@property (nonatomic, readonly) NSString *imageUrlString;
@property (nonatomic, readonly) NSDate *deliveredAt;
@property (nonatomic) BOOL shown;
@property (nonatomic) BOOL read;
@end
class RPRNewsFeedEntry: NSObject {
private(set) var ID: UInt64
private(set) var deviceID: String?
private(set) var title: String?
private(set) var summary: String?
private(set) var body: String?
private(set) var campaignType: RPRCampaignType
private(set) var linkUrl: URL? // Deprecated
private(set) var linkUrlString: String?
private(set) var imageUrl: URL? // Deprecated
private(set) var imageUrlString: String?
private(set) var deliveredAt: Date?
var shown = false
var read = false
}
class ReproCpp {
public:
class NewsFeedEntry {
public:
uint64_t getID();
const char * getDeviceID();
const char * getTitle();
const char * getSummary();
const char * getBody();
ReproCpp::CampaignType getCampaignType();
const char * getLinkUrl(); // Deprecated
const char * getLinkUrlString();
const char * getImageUrl(); // Deprecated
const char * getImageUrlString();
time_t getDeliveredAt();
bool getShown();
bool getRead();
void setShown(bool value);
void setRead(bool value);
};
};
public class NewsFeedEntry
{
public long Id { get; }
public NewsFeedCampaignType CampaignType { get; }
public string DeviceID { get; }
public string Title { get; }
public string Summary { get; }
public string Body { get; }
public Uri LinkUrl { get; } // Deprecated
public string LinkUrlString { get; }
public Uri ImageUrl { get; } // Deprecated
public string ImageUrlString { get; }
public DateTime DeliveredAt { get; }
public bool Shown { get; set; }
public bool Read { get; set; }
public Dictionary<string, string> Extras { get; }
}
class NewsFeedEntry {
constructor(value) {
this.id; // number
this.deviceID; // string
this.title; // string
this.summary; // string
this.body; // string
this.campaignType; // integer
this.deliveredAt; // string
this.linkUrl; // Deprecated
this.linkUrlString; // string
this.imageUrl; // Deprecated
this.imageUrlString; // string
this.shown; // boolean
this.read; // boolean
}
}
/**
* @property {number} newsfeed_id - The newsfeed id
* @property {string} device_id - The end user's device id
* @property {string} title - The campaign's title
* @property {string} summary - The campaign's summary
* @property {string} body - The campaign's body
* @property {string} delivered_at - The campaign's delivered date time
* @property {string} link_url - Deprecated
* @property {string} link_url_string - The campaign's link url
* @property {string} image_url - Deprecated
* @property {string} image_url_string - The campaign's image url
* @property {string} campaign_type - The campaign's type("in_app_message" or "web_message" or "push_notification" or "all")
* @property {boolean} shown - Indicate whether the newsfeed has been shown to end user
* @property {boolean} read - Indicate whether the newsfeed has been read by end user
*/
{
"newsfeed_id": 1,
"device_id": "123456789",
"title": "The title",
"summary": "The summary",
"body": "The body",
"delivered_at": "XXXX-XX-XXTXX:XX:XX+XX:XXXX",
"link_url": "https://example.com",
"link_url_string": "https://example.com",
"image_url": "https://example.com/example.jpeg",
"image_url_string": "https://example.com/example.jpeg",
"campaign_type": "in_app_message",
"shown": true,
"read": false
}
// For Flutter Package below version 3.0.0
class NewsFeedEntry {
int get id;
NewsFeedCampaignType get campaignType;
String get deviceID;
String get title;
String get summary;
String get body;
String get linkUrl; // Deprecated
String get linkUrlString;
String get imageUrl; // Deprecated
String get imageUrlString;
DateTime get deliveredAt; // UTC Date
String get rawDeliveredAt;
// For Flutter Package version 3.0.0 and above
class NewsFeedEntry {
int get id;
NewsFeedCampaignType get campaignType;
String get deviceID;
String get title;
String get summary;
String get body;
String? get linkUrl; // Deprecated
String? get linkUrlString;
String? get imageUrl; // Deprecated
String? get imageUrlString;
DateTime? get deliveredAt; // UTC Date
String? get rawDeliveredAt;
bool shown;
bool read;
}
警告
link_url image_url は非推奨となっています。同じデータを持っている link_url_string image_url_string をご利用ください。
理由: URLにマルチバイト文字を使用した場合に、OSによって正しく変換されないことがあったため、非推奨としております(例:
NSURL)
link_url_string image_url_string は以下の SDK をご利用の場合のみ取得可能です。
Android SDK 5.16.0 以上
iOS SDK 5.17.0 以上
Unity SDK 6.18.0 以上
React Native SDK 3.19.0 以上
Cordova Plugin 6.19.0 以上
Cocos2d-x SDK 5.18.0 以上
Flutter Package 3.10.0 以上
link_url_string image_url_string は、文字列もしくは空文字が設定されます。
link_url を設定しなかった場合、返り値として null が設定されますが、2022/03/08以前に作成されたキャンペーンにつきましては、空文字が返る可能性があります。
また、キャンペーン種別として指定可能な値は以下のデータ形式となっています。
public enum NewsFeedCampaignType {
PushNotification,
InAppMessage,
WebMessage,
All
}
typedef NS_ENUM(NSUInteger, RPRCampaignType) {
RPRCampaignTypePushNotification,
RPRCampaignTypeInAppMessage,
RPRCampaignTypeWebMessage,
RPRCampaignTypeAll
};
enum RPRCampaignType {
case pushNotification
case inAppMessage
case webMessage
case all
}
enum class CampaignType : uint64_t {
PushNotification,
InAppMessage,
WebMessage,
All,
};
public enum NewsFeedCampaignType
{
PushNotification,
InAppMessage,
WebMessage,
All
}
Repro.CAMPAIGN_TYPE_PUSH_NOTIFICATION;
Repro.CAMPAIGN_TYPE_IN_APP_MESSAGE;
Repro.CAMPAIGN_TYPE_WEB_MESSAGE;
Repro.CAMPAIGN_TYPE_ALL;
Repro.CampaignType.InAppMessage
Repro.CampaignType.PushNotification
Repro.CampaignType.WebMessage
Repro.CampaignType.All
enum NewsFeedCampaignType {
PushNotification,
InAppMessage,
WebMessage,
All
}
警告
CampaignType およびこれを利用するフィールドは、以下の SDK をご利用の場合のみ取得可能です。
Android SDK 5.6.0 以上
iOS SDK 5.8.0 以上
Unity SDK 6.7.0 以上
React Native SDK 3.7.0 以上
Cordova Plugin 6.7.0 以上
Cocos2d-x SDK 5.7.0 以上
Flutter Package 2.0.0 以上
ニュースフィードを取得する¶
取得インターフェース¶
public final class Repro {
// Android SDK 5.0.1 or later
public static List<NewsFeedEntry> getNewsFeeds(final int limit) throws IOException, RuntimeException;
public static List<NewsFeedEntry> getNewsFeeds(final int limit, final long offsetID) throws IOException, RuntimeException;
// Only for Android SDK 5.6.0 or later
public static List<NewsFeedEntry> getNewsFeeds(final int limit, final NewsFeedCampaignType campaignType) throws IOException, RuntimeException;
public static List<NewsFeedEntry> getNewsFeeds(final int limit, final long offsetID, final NewsFeedCampaignType campaignType) throws IOException, RuntimeException;
}
@interface Repro : NSObject
// iOS SDK 4.8.0 or later
+ (nullable NSArray<RPRNewsFeedEntry *> *)getNewsFeeds:(uint64_t)limit
error:(NSError * _Nullable * _Nullable)error
+ (nullable NSArray<RPRNewsFeedEntry *> *)getNewsFeeds:(uint64_t)limit
offsetID:(uint64_t)offsetID
error:(NSError * _Nullable * _Nullable)error
// Only iOS SDK 5.8.0 or later
+ (nullable NSArray<RPRNewsFeedEntry *> *)getNewsFeeds:(uint64_t)limit
campaignType:(RPRCampaignType)campaignType
error:(NSError * _Nullable * _Nullable)error
+ (nullable NSArray<RPRNewsFeedEntry *> *)getNewsFeeds:(uint64_t)limit
offsetID:(uint64_t)offsetID
campaignType:(RPRCampaignType)campaignType
error:(NSError * _Nullable * _Nullable)error
@end
class Repro: NSObject {
// iOS SDK 4.8.0 or later
class func getNewsFeeds(_ limit: UInt64) throws -> [RPRNewsFeedEntry]?
class func getNewsFeeds(_ limit: UInt64, offsetID: UInt64) throws -> [RPRNewsFeedEntry]?
// Only iOS SDK 5.8.0 or later
class func getNewsFeeds(_ limit: UInt64, campaignType: RPRCampaignType) throws -> [RPRNewsFeedEntry]?
class func getNewsFeeds(_ limit: UInt64, offsetID: UInt64, campaignType: RPRCampaignType) throws -> [RPRNewsFeedEntry]?
}
class ReproCpp {
public:
// Cocos2d-x SDK 5.0.0 or later
static std::vector<ReproCpp::NewsFeedEntry> getNewsFeeds(uint64_t limit, bool *error);
static std::vector<ReproCpp::NewsFeedEntry> getNewsFeeds(uint64_t limit, uint64_t offsetID, bool *error);
// Only Cocos2d-x SDK 5.7.0 or later
static std::vector<ReproCpp::NewsFeedEntry> getNewsFeeds(uint64_t limit, ReproCpp::CampaignType campaignType, bool *error);
static std::vector<ReproCpp::NewsFeedEntry> getNewsFeeds(uint64_t limit, uint64_t offsetID, ReproCpp::CampaignType campaignType, bool *error);
};
public class Repro
{
// Unity SDK 6.0.0—6.6.0
public static List<NewsFeedEntry> GetNewsFeeds(int limit);
public static List<NewsFeedEntry> GetNewsFeeds(int limit, long offsetID);
// Unity SDK 6.7.0 or later
public static List<NewsFeedEntry> GetNewsFeeds(int limit, NewsFeedCampaignType campaignType = NewsFeedCampaignType.PushNotification);
public static List<NewsFeedEntry> GetNewsFeeds(int limit, long offsetID, NewsFeedCampaignType campaignType = NewsFeedCampaignType.PushNotification);
}
const Repro = {
// React Native SDK 3.0.0 or later
getNewsFeeds: (limit, callback) => void,
getNewsFeedsFor: (limit, offsetID, callback) => void,
// Only React Native SDK 3.7.0 or later
getNewsFeedsWithCampaignType: (limit, campaignType, callback) => void,
getNewsFeedsWithCampaignTypeFor: (limit, offsetID, campaignType, callback) => void,
}
const Repro = {
// Cordova Plugin 6.0.0 or later
getNewsFeedsWithLimit: (limit, successCallback, errorCallback) => void,
getNewsFeedsWithLimitAndOffsetId: (limit, offsetId, successCallback, errorCallback) => void,
// Cordova Plugin 6.7.0 or later
getNewsFeedsWithLimitAndCampaignType: (limit, campaignType, successCallback, errorCallback) => void,
getNewsFeedsWithLimitAndOffsetIdAndCampaignType: (limit, offsetId, campaignType, successCallback, errorCallback) => void
}
class Repro {
// Flutter Package version 1.X.X
static Future<List<NewsFeedEntry>> getNewsFeeds(int limit, [int offsetID])
// Flutter Package version 2.X.X
static Future<List<NewsFeedEntry>> getNewsFeeds({ @required int limit, int offsetID, @required NewsFeedCampaignType campaignType })
// Flutter Package version 3.X.X
static Future<List<NewsFeedEntry>> getNewsFeeds({ required int limit, int? offsetID, required NewsFeedCampaignType campaignType })
}
警告
ご利用中の SDK のバージョンによって、使用可能なメソッドが異なります。
警告
キャンペーン種別 ( campaignType ) の指定のないメソッドを実行した場合は、ご利用中の SDK のバージョンによらずプッシュ通知の履歴 のみ が取得されます。
最新のキャンペーン20通を取得する実装例¶
以下では、最新のキャンペーン20通をニュースフィードとして取得する処理を例にあげます。
new Thread(new Runnable() {
@Override
public void run() {
// Get 20 campaigns as a newsfeed
List<NewsFeedEntry> newsFeedEntries;
try {
// Android SDK 5.0.1 or later
// (Get only push notification histories)
newsFeedEntries = Repro.getNewsFeeds(20);
// Android SDK 5.6.0 or later
newsFeedEntries = Repro.getNewsFeeds(20, NewsFeedCampaignType.PushNotification);
} catch (IOException e) {
// Error handling
...
} catch (RuntimeException e) {
// Error handling
...
}
}
}).start();
...
// iOS SDK 4.8.0 or later
NSError *error = nil;
NSArray<RPRNewsFeedEntry *> *newsFeeds = [Repro getNewsFeeds:20 error:&error];
if (error) {
// Error handling
}
// iOS SDK 5.8.0 or later
NSError *error = nil;
NSArray<RPRNewsFeedEntry *> *newsFeedEntries = [Repro getNewsFeeds:20
campaignType:RPRCampaignTypePushNotification
error:&error];
if (error) {
// Error handling
}
...
...
// iOS SDK 4.8.0 or later
var newsFeeds: [RPRNewsFeedEntry]?
do {
newsFeeds = try Repro.getNewsFeeds(20)
} catch {
// Error handling
}
// iOS SDK 5.8.0 or later
var newsFeeds: [RPRNewsFeedEntry]?
do {
newsFeeds = try Repro.getNewsFeeds(20, campaignType: .pushNotification)
} catch {
// Error handling
}
...
...
// Cocos2d-x SDK 5.0.0 or later
bool error;
std::vector<ReproCpp::NewsFeedEntry> newsFeeds = ReproCpp::getNewsFeeds(20, &error);
if (error) {
// Error handling
}
// Cocos2d-x SDK 5.7.0 or later
bool error;
std::vector<ReproCpp::NewsFeedEntry> newsFeeds = ReproCpp::getNewsFeeds(20, ReproCpp::CampaignType::PushNotification, &error);
if (error) {
// Error handling
}
...
...
// Get only push notification histories
var newsFeedEntries = Repro.GetNewsFeeds(20);
// Unity SDK 6.7.0 or later
var newsFeedEntries = Repro.GetNewsFeeds(20, NewsFeedCampaignType.PushNotification);
...
...
// React Native SDK 3.0.0 or later
Repro.getNewsFeeds(20, (_, newsFeeds) => {
...
});
// React Native SDK 3.7.0 or later
Repro.getNewsFeedsWithCampaignType(20, Repro.CAMPAIGN_TYPE_PUSH_NOTIFICATION, (_, newsFeeds) => {
...
});
...
...
// Cordova Plugin 6.0.0 or later
Repro.getNewsFeedsWithLimit(
20,
(newsFeeds) => {
...
},
(error) => {
// Error handling
}
);
// Cordova Plugin 6.7.0 or later
Repro.getNewsFeedsWithLimitAndCampaignType(
20,
Repro.CampaignType.InAppMessage,
(newsFeeds) => {
...
},
(error) => {
// Error handling
}
);
...
...
// Flutter Package 1.0.0—1.6.0
final newsfeeds = await Repro.getNewsFeeds(20);
// Flutter Package 2.0.0 or later
final newsfeeds = await Repro.getNewsFeeds(limit: 20, campaignType: NewsFeedCampaignType.PushNotification)
...
オフセットを指定し、それ以後のキャンペーン20通を取得する実装例¶
以下では、あるキャンペーン以後の(そのキャンペーンに対応するIDが1111であるとします。)キャンペーン20通をニュースフィードとして取得する処理を例にあげます。
new Thread(new Runnable() {
@Override
public void run() {
// Get 20 campaigns as a newsfeed
List<NewsFeedEntry> newsFeedEntries;
try {
// Get the ID of the last item (1111)
List<NewsFeedEntry> feeds = Repro.getNewsFeeds(20);
long lastItemId = feeds.get(feeds.size() - 1).id; // 1111
// Android SDK 5.0.1 or later
// (Get only push notification histories)
newsFeedEntries = Repro.getNewsFeeds(20, lastItemId);
// Android SDK 5.6.0 or later
newsFeedEntries = Repro.getNewsFeeds(20, lastItemId, NewsFeedCampaignType.PushNotification);
} catch (IOException e) {
// Error handling
...
} catch (RuntimeException e) {
// Error handling
...
}
}
}).start();
...
// Get the ID of the last item (1111)
uint64_t lastItemId = [[[Repro getNewsFeeds:20 error:&error] lastObject] ID];
// iOS SDK 4.8.0 or later
NSError *error = nil;
NSArray<RPRNewsFeedEntry *> *newsFeedEntries = [Repro getNewsFeeds:20 offsetID:lastItemId error:&error];
if (error) {
// Error handling
}
// iOS SDK 5.8.0 or later
NSError *error = nil;
NSArray<RPRNewsFeedEntry *> *newsFeedEntries = [Repro getNewsFeeds:20
offsetID:lastItemId
campaignType:RPRCampaignTypePushNotification
error:&error];
if (error) {
// Error handling
}
...
...
// Get last item (1111)
let lastItem = try! Repro.getNewsFeeds(20).last
// iOS SDK 4.8.0 or later
var newsFeeds: [RPRNewsFeedEntry]?
if let lastItem = lastItem {
do {
newsFeeds = try Repro.getNewsFeeds(20, offsetID: lastItem.id)
} catch {
// Error handling
}
}
// iOS SDK 5.8.0 or later
var newsFeeds: [RPRNewsFeedEntry]?
if let lastItem = lastItem {
do {
newsFeeds = try Repro.getNewsFeeds(20, offsetID: lastItem.id, campaignType: .pushNotification)
} catch {
// Error handling
}
}
...
...
// Get the ID of the last item (1111)
uint64_t lastItemId = ReproCpp::getNewsFeeds(20, &error).back().getID();
// Cocos2d-x SDK 5.0.0 or later
bool error;
std::vector<ReproCpp::NewsFeedEntry> newsFeeds = ReproCpp::getNewsFeeds(20, lastItemId, &error);
if (error) {
// Error handling
}
// Cocos2d-x SDK 5.7.0 or later
bool error;
std::vector<ReproCpp::NewsFeedEntry> newsFeeds = ReproCpp::getNewsFeeds(20, lastItemId, ReproCpp::CampaignType::PushNotification, &error);
if (error) {
// Error handling
}
...
...
// Get the ID of the last item (1111)
var feeds = Repro.GetNewsFeeds(20);
var lastItemId = feeds.Last().Id; // 1111
// Unity SDK 6.0.0 or later
// (Get only push notification histories)
var newsFeedEntries = Repro.GetNewsFeeds(20, lastItemId);
// Unity SDK 6.7.0 or later
var newsFeedEntries = Repro.GetNewsFeeds(20, lastItemId, NewsFeedCampaignType.PushNotification);
...
...
// Get the ID of the last item (1111)
let lastItemId;
Repro.getNewsFeeds(20, (_, newsFeeds) => {
lastItemId = newsFeeds.slice(-1)[0].id;
});
...
// React Native SDK 3.0.0 or later
Repro.getNewsFeedsFor(20, lastItemId, (_, newsFeeds) => {
...
});
// React Native SDK 3.7.0 or later
Repro.getNewsFeedsWithCampaignTypeFor(20, lastItemId, Repro.CAMPAIGN_TYPE_PUSH_NOTIFICATION, (_, newsFeeds) => {
...
});
...
...
// Cordova Plugin 6.0.0 or later
Repro.getNewsFeedsWithLimitAndOffsetId(
20,
1111,
(newsFeeds) => {
...
},
(error) => {
// Error handling
}
);
// Cordova Plugin 6.7.0 or later
Repro.getNewsFeedsWithLimitAndOffsetIdAndCampaignType(
20,
1111,
Repro.CampaignType.InAppMessage,
(newsFeeds) => {
...
},
(error) => {
// Error handling
}
);
...
...
// Get the ID of the last item (1111)
final feeds = await Repro.getNewsFeeds(20);
final lastItemId = feeds.last.id; // 1111
// Flutter Package 1.0.0—1.6.0
// (Get only push notification histories)
final newsfeeds = await Repro.getNewsFeeds(20, lastItemId);
// Flutter Package 2.0.0 or later
final newsfeeds = await Repro.getNewsFeeds(limit: 20, offsetID: lastItemId, campaignType: NewsFeedCampaignType.PushNotification);
...
ニュースフィードを更新する¶
取得インターフェース¶
public final class Repro {
public static void updateNewsFeeds(List<NewsFeedEntry> newsFeeds) throws IOException, RuntimeException;
}
@interface Repro : NSObject
+ (BOOL)updateNewsFeeds:(nonnull NSArray<RPRNewsFeedEntry *> *)newsFeeds error:(NSError * _Nullable * _Nullable)error
NS_SWIFT_NAME(updateNewsFeeds(_:));
@end
class Repro: NSObject {
class func updateNewsFeeds(_ newsFeeds: [RPRNewsFeedEntry]) throws {
}
}
class ReproCpp {
public:
static bool updateNewsFeeds(std::vector<ReproCpp::NewsFeedEntry> newsFeeds, bool *error);
};
public class Repro
{
public static void UpdateNewsFeeds(List<NewsFeedEntry> newsFeeds);
}
const Repro = {
updateNewsFeeds: (newsFeeds, callback) => void;
}
const Repro = {
updateNewsFeeds: (newsFeeds, successCallback, errorCallback) => void;
}
class Repro {
static Future<void> updateNewsFeeds(List<NewsFeedEntry> newsFeeds)
}
取得したニュースフィードの中の一通を既読済みに更新する処理の実装例¶
new Thread(new Runnable() {
@Override
public void run() {
// Get 20 newsfeed campaigns
List<NewsFeedEntry> newsFeedEntries;
try {
newsFeedEntries = Repro.getNewsFeeds(20);
} catch (IOException e) {
// Error handling
...
} catch (RuntimeException e) {
// Error handling
...
}
...
// Update procedure
NewsFeedEntry newsFeedEntry = newsFeedEntries.get(0);
newsFeedEntry.read = true;
List<NewsFeedEntry> updateNewsFeedEntries = new ArrayList<>();
newsFeedEntries.add(newsFeedEntry);
try {
Repro.updateNewsFeeds(newsFeedEntries);
} catch (IOException e) {
// Error handling
...
} catch (RuntimeException e) {
// Error handling
...
}
}
}).start();
...
// Get 20 newsfeed campaigns
NSArray<RPRNewsFeedEntry *> *newsFeeds = [Repro getNewsFeeds:20 error:&error];
...
RPRNewsFeedEntry *newsFeed = newsFeeds[0];
newsFeed.read = true;
[Repro updateNewsFeeds:@[newsFeed] error:&error];
...
...
// Get 20 campaigns as a newsfeed
self.newsFeeds = try? Repro.getNewsFeeds(20)
...
if let newsFeed = newsFeeds?.first {
newsFeed.read = true
Repro.updateNewsFeeds([newsFeed])
}
...
// Get 20 newsfeed campaigns
bool error;
std::vector<ReproCpp::NewsFeedEntry> newsFeeds = ReproCpp::getNewsFeeds(20, &error);
if (error) {
// Error handling
}
...
// Update procedure
ReproCpp::NewsFeedEntry newsFeedEntry = newsFeeds[0];
newsFeedEntry.setRead(true);
ReproCpp::updateNewsFeeds(newsFeeds, &error);
...
// Get 20 newsfeed campaigns
var newsFeedEntries = Repro.getNewsFeeds(20);
...
// Update procedure
var newsFeedEntry = newsFeedEntries[0];
newsFeedEntry.Read = true;
var updateTargets = new List<NewsFeedEntry> { newsFeedEntry };
Repro.UpdateNewsFeeds(updateTargets);
...
let newsfeeds;
Repro.getNewsFeeds(20, (_, entries) => {
newsfeeds = entries;
});
...
newsfeeds[0].read = true;
Repro.updateNewsFeeds(newsfeeds, (_) => {
});
...
...
let newsFeedEntries;
Repro.getNewsFeedsWithLimit(
20,
(newsFeeds) => {
newsFeedEntries = newsFeeds;
},
(error) => {
// Error handling
}
});
...
newsFeedEntries[0].read = true;
Repro.updateNewsFeeds(
newsFeedEntries,
(_) => {
...
},
(error) => {
// Error handling
}
);
...
...
// Flutter Package 1.0.0—1.5.0
final newsFeeds = await Repro.getNewsFeeds(20);
// Flutter Package 2.0.0 or later
final newsFeeds = await Repro.getNewsFeeds(limit: 20, campaignType: NewsFeedCampaignType.PushNotification);
...
newsFeeds.first.read = true;
await Repro.updateNewsFeeds(newsFeeds);
...