App Messaging SDK負(fù)責(zé)消息的拉取和展示。當(dāng)您在AGC后臺(tái)創(chuàng)建了消息、并且集成了App Messaging SDK,當(dāng)達(dá)到消息展示的觸發(fā)條件后,App Messaging SDK會(huì)自動(dòng)以默認(rèn)的消息展示布局在應(yīng)用中展示消息。您可以不需要編寫任何代碼,就可以擁有展示消息的能力。如果您需要對(duì)展示的消息或用戶對(duì)消息的操作進(jìn)行一些別的特殊配置,您可以通過(guò)App Messaging SDK提供的API完成。
應(yīng)用內(nèi)消息的展示條件
App Messaging SDK展示消息的條件包括以下幾點(diǎn):
1. App必須在前臺(tái)運(yùn)行。
2. App觸發(fā)消息展示的事件:用戶在App的操作觸發(fā)消息預(yù)設(shè)的事件后,App Messaging SDK會(huì)去同步AGC服務(wù)端或本地緩存的消息數(shù)據(jù),獲取到消息后,判斷消息是否需要顯示。
App Messaging SDK 支持?jǐn)?shù)據(jù)拉取開(kāi)關(guān)的設(shè)置,方便您隨時(shí)開(kāi)啟/停用從AGC服務(wù)端數(shù)據(jù)拉取功能(默認(rèn)為開(kāi)啟)。
a. 調(diào)用AGConnectAppMessaging.getInstance初始化AGConnectAppMessaging實(shí)例。
b. 調(diào)用AGConnectAppMessaging.setFetchMessageEnable設(shè)置是否同步AGC服務(wù)端數(shù)據(jù)的開(kāi)關(guān)。
Java:
AGConnectAppMessaging.getInstance().setFetchMessageEnable(true);
Kotlin:
AGConnectAppMessaging.getInstance().setFetchMessageEnable(true);
說(shuō)明:
App Messaging SDK并不是每次觸發(fā)事件都會(huì)去AGC服務(wù)端請(qǐng)求消息,而是在一定的時(shí)間內(nèi)只請(qǐng)求一次(通常為App啟動(dòng)時(shí)),然后把所有的消息緩存到本地,在過(guò)期時(shí)間之內(nèi)事件觸發(fā)時(shí)只會(huì)從本地讀取消息。
在消息數(shù)據(jù)過(guò)期時(shí)間內(nèi),如果在AGC創(chuàng)建了新的消息,由于App Messaging SDK不會(huì)再次到AGC請(qǐng)求數(shù)據(jù),新創(chuàng)建的消息將不會(huì)被獲取。
3. AGC上創(chuàng)建了應(yīng)用內(nèi)消息,且消息處于發(fā)布狀態(tài),消息需要滿足以下條件:
消息的開(kāi)始時(shí)間和結(jié)束時(shí)間滿足要求:當(dāng)前時(shí)間(手機(jī)時(shí)間)需要大于消息的開(kāi)始時(shí)間且小于結(jié)束時(shí)間。
消息的展示頻率滿足要求:消息沒(méi)有被展示過(guò),展示的次數(shù)或者頻率沒(méi)有超過(guò)限制。
消息的觸發(fā)事件滿足要求:消息的觸發(fā)事件列表中需要包含此次App的觸發(fā)事件。
App Messaging SDK 支持消息展示開(kāi)關(guān)的設(shè)置,方便您隨時(shí)開(kāi)啟/停用消息展示功能(默認(rèn)為開(kāi)啟)。
a. 調(diào)用AGConnectAppMessaging.getInstance初始化AGConnectAppMessaging實(shí)例。
b. 調(diào)用AGConnectAppMessaging.setDisplayEnable設(shè)置是否允許展示消息的開(kāi)關(guān)。
Java:
//消息展示設(shè)置成false后,App Messaging SDK將不再展示任何消息
AGConnectAppMessaging appMessaging = AGConnectAppMessaging.getInstance();
appMessaging.setDisplayEnable(false);
Kotlin:
//消息展示設(shè)置成false后,App Messaging SDK將不再展示任何消息
var appMessaging: AGConnectAppMessaging? = AGConnectAppMessaging.getInstance();
appMessaging?.setDisplayEnable(false);
當(dāng)用戶與消息交互時(shí)進(jìn)行響應(yīng)
通過(guò)App Messaging SDK您可以進(jìn)一步定制應(yīng)用內(nèi)消息的行為,在用戶與消息交互時(shí)進(jìn)行響應(yīng),App Messaging SDK支持對(duì)消息的展示、點(diǎn)擊和消失事件的監(jiān)聽(tīng)。實(shí)現(xiàn)的基本步驟如下:
1. 調(diào)用AGConnectAppMessaging.getInstance初始化AGConnectAppMessaging實(shí)例。
Java:
AGConnectAppMessaging appMessaging = AGConnectAppMessaging.getInstance();
Kotlin:
var appMessaging: AGConnectAppMessaging? = AGConnectAppMessaging.getInstance();
2. 創(chuàng)建監(jiān)聽(tīng)器。
您可以通過(guò)繼承App Messaging SDK的AGConnectAppMessagingOnDisplayListener(消息展示監(jiān)聽(tīng)器)、AGConnectAppMessagingOnClickListener(消息點(diǎn)擊監(jiān)聽(tīng)器)、AGConnectAppMessagingOnDismissListener(消息消失監(jiān)聽(tīng)器)來(lái)創(chuàng)建事件的監(jiān)聽(tīng)器。
例如,創(chuàng)建一個(gè)點(diǎn)擊事件的監(jiān)聽(tīng)器,示例代碼如下:
Java:
public class ClickListener implements AGConnectAppMessagingOnClickListener {
@Override
public void onMessageClick(AppMessage appMessage) {
// 獲取到點(diǎn)擊消息的內(nèi)容
}
}
Kotlin:
class ClickListener : AGConnectAppMessagingOnClickListener {
override fun onMessageClick(appmessage: AppMessage?) {
// 獲取到點(diǎn)擊消息的內(nèi)容
}
}
3. 注冊(cè)監(jiān)聽(tīng)器。
您可以通過(guò)AGConnectAppMessaging的addOnClickListener、addOnDismissListener和addOnDisplayListener來(lái)注冊(cè)監(jiān)聽(tīng)器。
Java:
ClickListener listener = new ClickListener();
appMessaging.addOnClickListener(listener);
Kotlin:
val clickListener = ClickListener();
appMessaging?.addOnClickListener(clickListener)
設(shè)置自定義的布局
App Messaging服務(wù)提供三種消息樣式:彈框消息、圖片消息和Banner消息,App Messaging SDK提供消息的默認(rèn)展示布局。您可以自己實(shí)現(xiàn)消息的展示樣式,從而使得消息的展示樣式更加適合App的相關(guān)主題。
1. 通過(guò)繼承AGConnectAppMessagingDisplay的方式自定義一個(gè)消息顯示類。
Java:
public class CustomDisplayView implements AGConnectAppMessagingDisplay {
@Override
public void displayMessage(@NonNull AppMessage appMessage,
@NonNull AGConnectAppMessagingCallback callback) {
}
}
Kotlin:
class CustomDisplayView : AGConnectAppMessagingDisplay {
override fun displayMessage(p0: AppMessage, p1: AGConnectAppMessagingCallback) {
}
}
displayMessage方法有兩個(gè)對(duì)象:AppMessage和AGConnectAppMessagingCallback。
AppMessage是消息的內(nèi)容。
AGConnectAppMessagingCallback是消息交互的回調(diào)對(duì)象,您應(yīng)該在合適的時(shí)機(jī)回調(diào)該對(duì)象的方法。
- 在消息展示時(shí)回調(diào)onMessageDisplay,這一步很重要,如果該方法一直不回調(diào),則App Messaging SDK無(wú)法獲取該條消息是否被顯示,導(dǎo)致消息會(huì)被重復(fù)下發(fā)。
- 在消息點(diǎn)擊時(shí)回調(diào)onMessageClick。
- 在消息消失時(shí)回調(diào)onMessageDismiss。
2. 調(diào)用AGConnectAppMessaging.addCustomView添加自定義顯示類。
Java:
CustomDisplayView view = new CustomDisplayView();
AGConnectAppMessaging.getInstance().addCustomView(view);
Kotlin:
var view = CustomDisplayView()
AGConnectAppMessaging.getInstance().addCustomView(view);
當(dāng)然,如果您需要恢復(fù)消息的默認(rèn)布局,可以調(diào)用AGConnectAppMessaging.removeCustomView移除自定義布局。
Java:
AGConnectAppMessaging.getInstance().removeCustomView();
Kotlin:
AGConnectAppMessaging.getInstance().removeCustomView();