<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      同一設備多賬號登錄,如何避免消息推送“串門”?

      對各應用廠商而言,推送通知消息是App提高用戶活躍度和轉化率的高性價比營銷工具。然而,當一個用戶設備登錄多個賬號時,開發者可能會遇到同一條消息在同一設備的不同賬號上重復展示的問題,這不僅降低了消息推送的精準度,還可能對用戶造成困擾。

      為解決這一問題,HarmonyOS SDK推送服務(Push Kit)推出了通知消息賬號校驗功能。該功能允許開發者根據終端設備上不同賬號的屬性來推送消息,確保通知精準地發送給對應設備上的對應賬號。例如,在華為手機上,某個應用同時登錄了賬號A和賬號B。當賬號A切換至賬號B后,原本發送給賬號A的通知消息在到達設備后將不會展示,從而避免賬號B看到賬號A的消息。

      錯誤示例:同一設備賬號A切換至賬號B后,接收并展示賬號A的通知消息

      若要實現賬號校驗功能,其關鍵便在于profileId。profileId是應用內賬號id匿名標識,無論用戶是選擇華為賬號作為應用登錄賬號,還是選擇使用應用賬號直接登錄賬號,該profileId都是應用通過賬號映射的唯一匿名標識。所以我們需要為待綁定的賬號生成一個非空唯一的profileId,這里不建議使用真實的賬號id,推薦使用賬號id自行生成對應的匿名標識,能與該賬號id建立唯一映射關系即可,生成算法無限制。

      那么,當用戶選擇華為賬號作為應用登錄賬號并登錄賬號A成功后,開發者可調用Push Kit綁定接口bindAppProfileId()將已生成的賬號A的profileId綁定到當前設備的應用token上。Push Token標識了每臺設備上的每個應用,是Push Kit實現消息推送的前提條件,應用服務器在發送通知消息時token中若攜帶該賬號A的profileId,則只有當前設備登錄的華為賬號為賬號A時,才會展示通知消息;若不攜帶profileId,則無論當前設備登錄的華為賬號是否為賬號A,都正常展示通知消息。

      下面,我們來看一下實現推送服務賬號校驗功能的具體開發步驟。

      開發步驟

          import { pushService } from '@kit.PushKit';
          import { hilog } from '@kit.PerformanceAnalysisKit';
          import { BusinessError } from '@kit.BasicServicesKit';
          import { UIAbility, AbilityConstant, Want } from '@kit.AbilityKit';
      
          export default class EntryAbility extends UIAbility {
            // 入參 want 與 launchParam 并未使用,為初始化項目時自帶參數
            async onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): Promise<void> {
              // 獲取Push Token
              try {
                const pushToken: string = await pushService.getToken();
                hilog.info(0x0000, 'testTag', 'Succeeded in getting push token');
              } catch (err) {
                let e: BusinessError = err as BusinessError;
                hilog.error(0x0000, 'testTag', 'Failed to get push token: %{public}d %{public}s', e.code, e.message);
              }
              // 上報Push Token并上報到您的服務端
            }
          }
      
      1. 為確保應用可正常收到通知消息,建議應用發送通知前調用requestEnableNotification()方法彈出提醒,告知用戶需要允許接收通知消息。
          import { notificationManager } from '@kit.NotificationKit';
          import { BusinessError } from '@kit.BasicServicesKit';
          import { hilog } from '@kit.PerformanceAnalysisKit';
          import { common } from '@kit.AbilityKit';
      
          const TAG: string = '[PublishOperation]';
          const DOMAIN_NUMBER: number = 0xFF00;
      
          let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
          notificationManager.isNotificationEnabled().then((data: boolean) => {
            hilog.info(DOMAIN_NUMBER, TAG, "isNotificationEnabled success, data: " + JSON.stringify(data));
            if(!data){
              notificationManager.requestEnableNotification(context).then(() => {
                hilog.info(DOMAIN_NUMBER, TAG, `[ANS] requestEnableNotification success`);
              }).catch((err : BusinessError) => {
                if(1600004 == err.code){
                  hilog.error(DOMAIN_NUMBER, TAG, `[ANS] requestEnableNotification refused, code is ${err.code}, message is ${err.message}`);
                } else {
                  hilog.error(DOMAIN_NUMBER, TAG, `[ANS] requestEnableNotification failed, code is ${err.code}, message is ${err.message}`);
                }
              });
            }
          }).catch((err : BusinessError) => {
              hilog.error(DOMAIN_NUMBER, TAG, `isNotificationEnabled fail, code is ${err.code}, message is ${err.message}`);
          });
      
      1. 為待綁定的賬號生成一個非空唯一的profileId,調用bindAppProfileId()方法,添加當前設備上該用戶與應用的關系。
          import { hilog } from '@kit.PerformanceAnalysisKit';
          import { pushCommon, pushService } from '@kit.PushKit';
          import { BusinessError } from '@kit.BasicServicesKit';
      
          // 定義需要綁定的profileId,建議使用賬號id對應的匿名標識
          const profileId = '1****9';
          // 綁定應用賬號
          pushService.bindAppProfileId(pushCommon.AppProfileType.PROFILE_TYPE_APPLICATION_ACCOUNT, profileId).then(() => {
            hilog.info(0x0000, 'testTag', 'Succeeded in binding app profile id');
          }).catch((err: BusinessError) => {
            hilog.error(0x0000, 'testTag', 'Failed to bind app profile id: %{public}d %{public}s', err.code, err.message);
          });
      
      1. 建議您將Push Token和生成的profileId上報到應用服務端,便于應用服務端向終端推送消息。

      2. 應用服務端調用REST API推送通知消息,通知消息示例如下:

          // Request URL
          POST https://push-api.cloud.huawei.com/v3/[projectId]/messages:send
      
          // Request Header
          Content-Type: application/json
          Authorization: Bearer eyJr*****OiIx---****.eyJh*****iJodHR--***.QRod*****4Gp---****
          push-type: 0
      
          // Request Body
          {
            "payload": {
              "notification": {
                "category": "MARKETING",
                "title": "普通通知標題",
                "body": "普通通知內容",
                "profileId": "111***222",
                "clickAction": {
                  "actionType": 0
                }
              }
            },
            "target": {
              "token": ["IQAAAA**********4Tw"]
            }
          }
      

      消息發送成功后,Push Kit會先校驗綁定賬號(華為賬號或應用賬號)時的AppProfileType。

      若綁定華為賬號,則先校驗下發消息中攜帶的profileId和之前應用綁定的profileId是否一致,再校驗當前登錄的華為賬號和綁定時登錄的分布式賬號是否一致,若全部滿足則展示消息,否則不展示消息。

      若綁定應用賬號則校驗下發消息中攜帶的profileId和之前應用綁定的profileId是否一致,若滿足則展示消息,否則不展示消息。

      了解更多詳情>>

      訪問推送服務聯盟官網

      獲取賬號校驗功能開發指導文檔

      posted @ 2025-10-17 10:24  HarmonyOS_SDK  閱讀(410)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品自在拍首页视频8| 国产成人精品无人区一区| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 国产av成人精品播放| 午夜欧美精品久久久久久久| 熟女一区| 激情内射亚洲一区二区三区| 东北妇女精品bbwbbw| 日韩三级一区二区在线看| 色一情一乱一伦麻豆| 囊谦县| 98久久人妻少妇激情啪啪| 亚洲精品漫画一二三区| 久久av无码精品人妻系列试探| 亚洲热线99精品视频| 少妇人妻偷人精品免费| 芜湖市| 日韩人妻精品中文字幕专区| 亚洲熟女综合色一区二区三区| 国产超高清麻豆精品传媒麻豆精品| 亚洲18禁一区二区三区| 粉嫩在线一区二区三区视频| 最新的国产成人精品2022| 新巴尔虎右旗| 久久人人97超碰国产精品| 麻豆亚洲自偷拍精品日韩另| 免费无码av片在线观看播放| 国产明星精品无码AV换脸| 亚洲成a人片在线观看中| 精品乱人码一区二区二区| 久久国产乱子精品免费女| 一出一进一爽一粗一大视频| 国产精品一区二区日韩精品| 日本另类αv欧美另类aⅴ| 开心婷婷五月激情综合社区| 久久精品国产午夜福利伦理| 久久婷婷成人综合色综合| 不卡一区二区国产精品| 人妻精品动漫h无码| 亚洲欧美日韩成人综合一区| 精品人妻伦九区久久aaa片69|