跳到主要内容
版本:v7

开发指南

导入 SDK

"com.xd.sdk.announcement": "7.2.0"

准备工作

  1. 公告数据的多语言遵循 XDSDK 整体语言配置,请参考 设置语言
  2. 您只需要正常初始化 XDSDK 即可,请参考 初始化

展示公告 UI

如果您希望使用 SDK 内置的公告 UI 进行展示,可以参考以下代码:

// AnnouncementActivity.java

import com.xd.sdk.announcement.XDGAnnouncement;
import com.xd.sdk.announcement.domain.model.AnnouncementConfig;
import com.xd.sdk.common.callback.WebActionCallback;
import com.xd.sdk.common.entities.WebActionType;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.Map;

// ...

private void openPage() {
AnnouncementConfig config = AnnouncementConfig.newBuilder()
.setServerCode("server_code") // 公告后台配置服务器后生成的代码
.setChannel("tap") // 渠道标识
.build();
XDGAnnouncement.openPage(AnnouncementActivity.this, config, new WebActionCallback() {
@Override
public void onAction(int type, @Nullable Map<@NotNull String, ?> data) {
if (type == WebActionType.CLOSE) {
// 页面关闭
} else if (type == WebActionType.MESSAGE) {
// 页面消息
if (data != null) {
Object value = data.get("key");
}
}
}
});
}


获取当前未读公告数据

当使用 SDK 内置公告 UI 时,您可以通过以下接口获取当前是否有未读的公告:

// AnnouncementActivity.java

import com.xd.sdk.announcement.XDGAnnouncement;
import com.xd.sdk.announcement.domain.model.AnnouncementConfig;
import com.xd.sdk.common.base.XDGError;
import com.xd.sdk.common.callback.Callback;

// ...

private void requestUnread() {
AnnouncementConfig config = AnnouncementConfig.newBuilder()
.setServerCode("server_code") // 公告后台配置服务器后生成的代码
.setChannel("tap") // 渠道标识
.build();
XDGAnnouncement.requestUnread(ADsActivity.this, config, new Callback<Boolean>() {
@Override
public void onCallback(Boolean aBoolean, XDGError xdgError) {
if (aBoolean) {
// 有未读公告
} else {
// 无未读公告
}
}
});
}


获取公告数据

如果您不想使用 SDK 内置的公告 UI,而是想自行实现公告展示界面,可以通过以下接口获取公告数据:

XDGAnnouncementManager.GetAnnouncements(announcements => {
StringBuilder sb = new StringBuilder();
foreach (XDGAnnouncement announcement in announcements) {
sb.AppendLine(JsonConvert.SerializeObject(announcement));
}
ResultText.text = sb.ToString();
}, err => {
ResultText.text = err.error_msg;
});

公告数据结构

public class XDGAnnouncement {
[JsonProperty("id")]
public long Id { get; set; }

[JsonProperty("type")]
public string Type { get; set; }

[JsonProperty("shortTitle")]
public string ShortTitle { get; set; }

[JsonProperty("longTitle")]
public string LongTitle { get; set; }

[JsonProperty("publishTime")]
public long PublishTime { get; set; }

[JsonProperty("expireTime")]
public long ExpireTime { get; set; }

[JsonProperty("image")]
public string Image { get; set; }

[JsonProperty("dimensions")]
public List<Dictionary<string, string>> Dimensions { get; set; }

[JsonProperty("content")]
public string Content { get; set; }
}