npm package: @gwyndolin/cordova-plugin-alipush
Description: this is ali push cordova plugin
Author: gwyndolin
Latest version: 1.0.4

**参考源码**

    https://github.com/log2c/cordova-plugin-log2c-aliyun-push 的IOS部分
    https://github.com/youyfeng/cordova-plugin-alipush.git 的Android部分

**安装**

cordova plugin add @gwyndolin/cordova-plugin-alipush --variable APP_KEY=APP_KEY --variable APP_SECRET=APP_SECRET --variable MIID=MIID --variable MIKEY=MIKEY --variable VIVOID=VIVOID --variable VIVOKEY=VIVOKEY --variable OPPOKEY=OPPOKEY --variable OPPOSECRET=OPPOSECRET --variable MEIZUID=MEIZUID --variable MEIZUKEY=MEIZUKEY --variable HUAWEIID=HUAWEIID --variable CHANNEL=1 --variable IOS_APP_KEY=IOS_APP_KEY --variable IOS_APP_SECRET=IOS_APP_SECRET

**测试环境**

    corodva:10.0.0;
    ionic:6.19.1;
    android:12;
    ios:15.6;
    node:14.17.0

**阿里云在线通道为 1**

    暂时不支持通过传参形式修改，可在AliPushPlugin.java源码中进行修改

**VIVO 和 OPPO 由于没有设备，没有经过测试;没有谷歌厂商通道**

**卸载插件**

    插件通过匹配注释进行卸载，请不要随意变动插件安装后在 build.gradle 中的生成代码格式，

**手动配置**

    在 platforms/android/app 目录下添加 aliyun-emas-services.json 文件,不需要的服务都关闭避免干扰冲突!

**使用方法**

    declare let AliPushPlugin: any;

    ngOnInit() {
      // 初始化阿里云消息推送+获取 deviceId
      this.platform.ready().then(() => {// 在app.component.ts中初始化需要在ready中执行
        this.getDeviceId();
        this.initPushService();
      });
    }

    // 初始化阿里推送服务
    async initPushService() {
      try {
        const result_1 = await new Promise((resolve, reject) => {
          AliPushPlugin.init(
            (result) => {
              resolve(result);
            },
            (error) => {
              reject(error);
            }
          );
        });
        console.log("初始化阿里云推送成功：", result_1);
      } catch (error_1) {
        console.log("初始化阿里云推送失败：", error_1);
      }
    }
    //   获取设备id;
    async getDeviceId() {
      try {
        const result_1 = await new Promise((resolve, reject) => {
          AliPushPlugin.getDeviceId(
            (result) => {
              resolve(result);
            },
            (error) => {
              reject(error);
            }
          );
        });
        console.log("getPushDeviceId成功：", result_1);
      } catch (error_1) {
        console.log("getPushDeviceId失败：", error_1);
      }
    }

**辅助弹窗**

    辅助弹窗可以确保应用后台被清理，仍能收到推送通知

    参考阿里云推送文档https://help.aliyun.com/document_detail/30067.html

    服务器端需设置AndroidPopupActivity参数为{package-name}.alipush.AliPushActivity

**初始化。**

    Android在应用启动时初始化并注册阿里云推送，init命令时注册第三方辅助通道

    iOS在执行init命令时注册推送

    init: function (success, error)

    init执行后，success会在新通知到达时被调用，通知：{title: "Push Title", content: "Push Body", extras: Object, eventType: "eventType"}， 消息：{eventType:'receiveMessage', messageid: string, title: "title", content: "content"}

    eventType如下

    "receiveNotification"：收到通知

    "receiveMessage"：收到消息

    "openNotification"：点击通知

**获取设备 DeviceId**

    getDeviceId: function (success, error)

**绑定账号**

    将应用内账号和推送通道相关联，可以实现按账号的定点消息推送；

    设备只能绑定一个账号，同一账号可以绑定到多个设备；

    同一设备更换绑定账号时无需进行解绑，重新调用绑定账号接口即可覆盖生效；

    bindAccount: function (account, success, error)

**解绑账号**

    将应用内账号和推送通道取消关联。

    unbindAccount: function (success, error)

**绑定标签**

    绑定标签到指定目标；

    支持向设备、账号和别名绑定标签，绑定类型由参数target指定；

    绑定标签在10分钟内生效；

    App最多支持绑定1万个标签【请谨慎使用，避免标签绑定达到上限】，单个标签最大支持128字符。

    参数

        target 目标类型，1：本设备；2：本设备绑定账号；3：别名

        tags 标签（数组输入）

        alias 别名（仅当target = 3时生效）

    bindTag: function (args, success, error)  // args: {target:Number, tags:Array<String>, alias?:string}

**解绑标签**

    解绑指定目标标签；

    支持解绑设备、账号和别名标签，解绑类型由参数target指定；

    解绑标签在10分钟内生效；

    解绑标签不等同于删除标签，目前不支持标签的删除。

    参数同上

    unbindTag: function (args, success, error)  // args: {target:Number, tags:Array<String>, alias?:string}

**查询标签**

    查询目标绑定标签，当前仅支持查询设备标签；

    标签绑定成功且生效（10分钟内）后即可查询。

    success回调参数为数组

    listTags: function (success, error)

**添加别名**

    设备添加别名；

    单个设备最多添加128个别名，且同一别名最多添加到128个设备；

    别名支持128字节。

    addAlias: function (alias, success, error)

**删除别名**

    删除设备别名；

    支持删除指定别名和删除全部别名（alias为null or length = 0）

    removeAlias: function (alias, success, error)

**查询别名**

    查询设备别名；

    success回调参数为数组

    listAliases: function (success, error)

以下 ios only

**设置角标**

    setBadge: function (badge, success, error)

**角标数量与阿里云服务器同步**

    syncBadge: function (badge, success, error)

以下 android only

**绑定电话号**

    bindPhoneNumber: function (phoneNumber, success, error)

**解绑电话号**

    unbindPhoneNumber: function (success, error)