快速集成華為 AGConnect 應用內消息服務 - Android

来源:https://www.cnblogs.com/developer-huawei/archive/2022/03/16/16003594.html
-Advertisement-
Play Games

華為 AppGallery Connect 提供了一個應用內消息的服務。應用內消息服務可以在用戶使用應用時,基於用戶使用情景向用戶發送有針對性的消息,鼓勵用戶使用應用的某些關鍵功能,也可以藉助應用內消息發送更具吸引力的營銷內容,增強用戶粘性。今天就來教大家如何接入 AppGallery Connec ...


华为 AppGallery Connect 提供了一个应用内消息的服务。应用内消息服务可以在用户使用应用时,基于用户使用情景向用户发送有针对性的消息,鼓励用户使用应用的某些关键功能,也可以借助应用内消息发送更具吸引力的营销内容,增强用户粘性。今天就来教大家如何接入 AppGallery Connect 的应用内消息服务。

1、在 AGC 上开通应用内消息并创建新的消息:

我的项目 下选择你的开发项目,在增长下面,找到应用内消息服务,点击开通:

没有 Android 项目的话,可以先自己创建一个。

1.png

开通后我们就可以创建新的消息了。

1.1. 首先点击右上角“添加应用内消息”

2.png

1.2. 配置消息名称和消息描述。

3.png 1.3. 设置样式和内容,完成后点击“下一步”。

在“消息种类”下拉框中选择需要创建的消息类型,然后设置对应的样式和内容。当前支持的消息类型包括:弹框消息、图片消息、Banner消息。

4.png 5.png

4. 设置发送目标,完成后点击“下一步”。

  • 在“应用”栏选择需要发布应用内消息的应用包名。
  • 点击“新增条件”可以灵活设置消息发送的用户,例如应用版本、OS版本、语言、国家地区、受众群组等。其中,“用户属性”条件需要在“华为分析 -> 管理 -> 用户属性管理”中提前定义,“预测”条件需要在“我的项目->增长->预测”创建预测任务。
6.png

5. 设置发送时间。

7.png

这里可以设置触发事件,除了默认的几个触发事件外还可以通过华为高级分析进行自定义,具体指导可以参考官方文档:

https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-appmessage-create-android-0000001072054882

8.png

最后设置转化事件,这一步是可选的。在设置转化事件前,需要将对应事件的转化事件开关打开。操作步骤如下:

在左侧导航栏中选择“华为分析 > 管理 > 事件管理”,将需要转换的事件对应的“标记为转化事件” 和“事件开关”打开。除SDK自动采集的事件外,还可以通过新建“预置事件”或“自定义事件”进行埋点分析

6. 最后点击保存或发布按钮就可以完成消息设置了

9.png

2、在 Android 项目里集成 SDK

a) 集成 SDK

1、在项目级的 gradle 文件中添加华为 Maven,即配置下面标红的内容

buildscript {
    repositories {
        google()
        jcenter()
        maven {url 'https://developer.huawei.com/repo/'}
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.1'
        classpath 'com.huawei.agconnect:agcp:1.5.2.300'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

2、打开应用级的 build.gradle 文件,配置好云存储的 SDK 和华为认证服务的 SDK,配置下面标红的内容即可。  注意别落了上面的 agcp 插件

apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'
android {…..}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

    implementation 'com.huawei.agconnect:agconnect-appmessaging:1.5.2.300'

}

 b) 下载 json 文件,并且配置默认存储实例

1、在 AGC 界面上,选择 我的项目 -> 项目设置–> 常规 下面,下载 agconnect-services.json 文件到你的 Android 项目的 app 路径下。

10.png

3、功能开发:

如果开发者对消息的样式等信息没有要求,那应用内消息完全可以0代码集成。但是应用内消息 SDK 还提供了自定义消息布局等功能供开发者使用。

1、设置自定义布局

想要设置自定义布局,首先我们需要有一个自定义的布局。我们需要先实现一个布局类继承 SDK 中的 AGConnectAppMessagingDisplay,并复写其中的 displayMessage 方法

public class CustomDisplayView implements AGConnectAppMessagingDisplay {
    @Override
   public void displayMessage (
       @NonNull AppMessage appMessage,
       @NonNull AGConnectAppMessagingCallback callback) {
   }
}

在 displayMessage 中我们可以定义一个 AlertDialog 然后将布局文件应用进去即可。这是我写的逻辑:

@Override
public void displayMessage(@NonNull AppMessage appMessage, @NonNull AGConnectAppMessagingCallback callback) {
    Log.d(TAG, appMessage.getId() + "");
    showDialog(appMessage, callback);
}

private void showDialog(@NonNull final AppMessage appMessage, @NonNull final AGConnectAppMessagingCallback callback) {
    View view = LayoutInflater.from(activity).inflate(R.layout.custom_view, null, false);
    final AlertDialog dialog = new AlertDialog.Builder(activity).setView(view).create();
    Button click = view.findViewById(R.id.click);
    Button dismiss = view.findViewById(R.id.dismiss);
    TextView id = view.findViewById(R.id.id);
    id.setText("MessageID: " + appMessage.getId());
    click.setOnClickListener(new View.OnClickListener() {
        @Override

        public void onClick(View v) {
            // set button callback
            callback.onMessageClick(appMessage);
            callback.onMessageDismiss(appMessage, AGConnectAppMessagingCallback.DismissType.CLICK);
            dialog.dismiss();
        }
    });

    dismiss.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //set button callback
            callback.onMessageDismiss(appMessage, AGConnectAppMessagingCallback.DismissType.CLICK);
            dialog.dismiss();
        }

    });

    dialog.show();

    dialog.getWindow().setLayout((getScreenWidth(activity) / 4 * 3), LinearLayout.LayoutParams.WRAP_CONTENT);

    callback.onMessageDisplay(appMessage);

}

布局设置好后,我们就可以调用 addCustomView 方法来应用我们的布局了

CustomView customView = new CustomView(MainActivity.this);
appMessaging.addCustomView(customView);

 2、调试消息

在消息没有正式发布之前,我们可以对消息进行调试。调试有几个步骤

a) 获取调试设备的 AAID。AAID 是应用匿名标识符,标识运行在移动智能终端设备上的应用实例,只有该应用实例才能访问该标识符,它只存在于应用的安装期。与无法重置的设备级硬件 ID 相比,AAID 具有更好的隐私权属性。我们可以通过代码来获取这个 AAID

HmsInstanceId inst  = HmsInstanceId.getInstance(this);

Task<AAIDResult> idResult =  inst.getAAID();

idResult.addOnSuccessListener(new OnSuccessListener<AAIDResult>() {
    @Override
    public void onSuccess(AAIDResult aaidResult) {
        String aaid = aaidResult.getId();
        textView.setText(aaid);
        Log.d(TAG, "getAAID success:" + aaid );
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(Exception e) {
        Log.d(TAG, "getAAID failure:" + e);
    }
});

b) 通过以上的方法我们就可以获取到这个 AAID 了,我们可以将这个参数保存下来,后续会使用到。

c) 来到应用内消息管理台,找到刚刚我们创建的消息在操作一栏我们点击三个点的图标,找到调测

11.png

  d) 点击“新增测试用户”然后将我们刚刚获取的AAID输入进去即可。

12.png

e) 最后点击保存测试即可。完成后我们就可以使用相应的手机进行消息调测了,消息将在应用打开后展示。

应用内消息服务开发指南:

https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-appmessage-getstarted-android-0000001072532718

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • RGB、YUV、HSV和HSL區別和關聯 近期在做的一個需求和顏色轉換有關係,所以本篇將開發過程中比較常見的 四種顏色 進行一番梳理。 一、RGB顏色空間 從我們最常見的RGB顏色出發,RGB分別對應著 Red(紅)、Green(綠)、Blue(藍),也就是我們平時所說的三原色,調整這三種顏色的比例 ...
  • 現在的SIM卡通常具備基站定位、語音通話、簡訊消息、網路流量這四大功能,而在移動端是無法對SIM卡使用基站定位功能的,所以這裡只介紹移動端如何使用SIM卡實現語音通話、簡訊消息、數據流量三個功能。 ##語音通話 Android系統中提供了通話服務,同時自帶系統級應用可以通過該通話服務使用SIM卡的通 ...
  • Android 12(API 31)於2021年10月4日正式發佈,正式版源代碼也於當日被推送到AOSP Android開源項目。截止到筆者撰寫這篇文章時,國內各終端廠商的在售Android設備,已經逐步開啟了Android 12正式版本的更新。當前,對於Android應用開發者來說,Android... ...
  • 最近表弟一直在找實習,經常會問我一些問題,有些問題在沒有經歷過真實工作時是真的不好理解的,所以我開了這個【表弟專欄】,專門為找工作的表弟解決一些疑惑。 這篇文章從電腦發展的角度出發,描述為什麼電腦需要劃分 "主/子線程" 和 "同/非同步",希望這個故事你能喜歡。 開天闢地,電腦"老計"誕生 話 ...
  • 代碼變更溯源 工作時,我們經常會想要查看一個類文件的變更歷史,最常見的場景是:"卧槽,誰改了我的代碼" 新版本的Xcode溯源自我感覺相當難用,所以這裡我們介紹一個工具 SourceTree 來完成這項工作。 將項目工程載入到 SourceTree 當我們把項目工程拖到 SourceTree 之後, ...
  • 針對兒童和老人,可穿戴的智能手錶用處很大。市場也有許多類似的產品,支持接打電話、支付掃碼、定位等功能,屬於新興的商業機會。依托華為品牌,鴻蒙手錶也致力為用戶打造精品的、產品質量佳、可穿戴的智能體驗。對此,HMS Core 定位服務(Location Kit)可以提供三個主要能力,包括融合定位、活動識 ...
  • Thread 線程狀態:新建(new),就緒(start),運行(run),阻塞,死亡 start 方法內部調用了 run 方法,start 會開啟線程,run 只是內部方法; sleep 會占用鎖,休眠時間到重新運行,wait 會釋放鎖; stop 停止線程比較暴力,對鎖的對象進行強制解鎖,線程資 ...
  • 一年之計在於春,萬物複蘇中我們迎來了健身的好時節。作為程式員,常常久坐或伏案,這帶來了腰肌勞損、頸椎酸痛等亞健康狀況,為此你是否開始制定運動flag?同時希望時刻檢測自己的健康指標呢? 不如來體驗一下HMS Core AR Engine 服務提供的人體和人臉跟蹤能力(目前僅支持人臉跟蹤)吧!它通過整 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...