# cordova-plugin-umengpush **Repository Path**: xiaoxiongApp/cordova-plugin-umengpush ## Basic Information - **Project Name**: cordova-plugin-umengpush - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-12-01 - **Last Updated**: 2021-01-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cordova-plugin-umengpush [![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![TotalDownloads][total-downloads-image]][npm-url] [npm-image]:http://img.shields.io/npm/v/cordova-plugin-umengpush.svg [npm-url]:https://npmjs.org/package/cordova-plugin-umengpush [downloads-image]:http://img.shields.io/npm/dm/cordova-plugin-umengpush.svg?label=当月下载 [total-downloads-image]:http://img.shields.io/npm/dt/cordova-plugin-umengpush.svg?label=总下载 友盟推送cordova插件,目前已支持iOS(包括iOS13)以及华为、小米、魅族、OPPO、VIVO厂家离线推送,支持Android9和AndroidQ。 ### 提示 该插件上传到npmjs之后,ios的framework会丢失头文件,导致编译时提示缺少头文件,解决办法是用cordova安装插件命令安装完成后,再到github下载一次源码去替换plugins里的`cordova-plugin-umengpush`插件。 Android平台如果提示缺少xxx.so文件,则需要手动下载全平台so文件到自己项目的libs文件夹中。 [全平台so文件下载地址](https://files.alicdn.com/tpsservice/7c94e1a0a2e35f6f27038c974ad9ffbf.zip),引入方式[点击查看](https://luoyuanli.com/userfiles/2020/04/image-1586229818672.png) #### 友盟SDK组件版本: | 平台 | 组件 | 版本 | |:------------- |:------------------------ |:----------------------- | | `iOS`| UMCommon.framework| v2.1.1 | | `iOS`| UMPush.framework| v3.2.4 | | `Android`| com.umeng.umsdk:common| v2.2.2| | `Android`| com.umeng.umsdk:push| v6.0.5| 6.0.5版本升级内容: 解决DeviceToken在部分AndroidQ系统中出现不稳定的问题; 解决在OPPO Android9/10机型上离线消息发送问题; 升级厂商通道SDK版本,支持AndroidQ。 # 1. 安装 需要iOS以及小米、华为、魅族、OPPO、VIVO推送的相关的AK或SK,按下面的命令安装,命令有点长,可以先用其他字符占用,再到插件里手动修改这些需要的各个信息,特别需要注意的是华为的必须一开始安装时就要输入,或者安装完成后到plugin.xml中修改,不然只能打完包后到Manifests.xml文件中修改。不可以在java代码中修改,因为java文件中没有输入的地方,如果不按这个要求将无法获取华为设备推送标识。 ``` cordova plugin add cordova-plugin-umengpush --variable IOS_APPKEY=YOUR_IOS_APPKEY --variable UM_APPKEY=YOUR_UM_APPKEY --variable UM_MESSAGE_SECRET=YOUR_UM_MESSAGE_SECRET --variable HUAWEI_APPID=YOUR_HUAWEI_APPID --variable XIAOMI_ID=YOUR_XIAOMI_ID --variable XIAOMI_KEY=YOUR_XIAOMI_KEY --variable MEIZU_APPID=YOUR_MEIZU_APPID --variable MEIZU_APPKEY=YOUR_MEIZU_APPKEY --variable OPPO_APPKEY=YOUR_OPPO_APPKEY --variable OPPO_SECRET=YOUR_OPPO_SECRET ``` 安装后可到源码中修改相关AK与SK信息,位置如下: ### iOS平台 ``` src/ios/UMengPush.m 默认从配置文件中获取AK,可以自己手动修改替换。 self.umengPushAppId = @"xxxxxxxxxxxx"; ``` ### Android平台 ``` src/android/UMApplication.java 代码默认从配置文件中获取AK与SK信息,可自己手动修改替换。 ``` # 2. 使用 ## for cordova ### 初始化 根据友盟推送的发送限制政策([https://developer.umeng.com/docs/66632/detail/68343](https://developer.umeng.com/docs/66632/detail/68343)),单播是不限制的,实现单播需要根据设备的推送token来进行推送,在插件初始化时,插件已经获取了token,可以按以下方式得到: ``` UMengPush.init(function(token){ //得到推送token,便于直接通过token发推送信息 console.log(token); },function(error){ // error }) ``` ### 设置alias ``` UMengPush.setAlias("alias","ALIAS_TYPE", function (res) { alert(JSON.stringify(res)); }, function (err) { alert(JSON.stringify(err)); }) ``` ### 监听用户点击通知 点击通知就会触发该方法。 ``` UMengPush.onSubscriptNotification(function(data){ //点击通知就会触发这里的代码 alert(JSON.stringify(data)); }); ``` 点击通知获得的data的基本结构: | 字段 | 说明 | |:------------- |:---------------------------- | | `id` | 该条通知的ID | | `state` | 该通知是前台还是后台还是启动,值有三种,foreground,background,launch,launch是只有iOS才有,iOS退出应用后,来通知时点击通知启动APP,进入APP后获取参数时state是launch,foreground就是用户正在使用过程中来了通知。 | ## for ionic3+ ### 安装该插件的ionic支持 ``` npm i upush ``` ### 引入module.ts ``` import { Upush } from 'upush'; providers: [ ... Upush, ... ] ``` ### 初始化 根据友盟推送的发送限制政策([https://developer.umeng.com/docs/66632/detail/68343](https://developer.umeng.com/docs/66632/detail/68343)),单播是不限制的,实现单播需要根据设备的推送token来进行推送,在插件初始化时,插件已经获取了token,可以按以下方式得到: ``` upush.init().then(token => { //得到token //可根据业务将token与用户标识存储到数据库中 console.log(token); }) ``` ### 监听用户点击通知 ``` upush.onSubscriptNotification().subscribe((data: any) => { alert(JSON.stringify(data)); }); ``` 点击通知获得的data的基本结构: | 字段 | 说明 | |:------------- |:---------------------------- | | `id` | 该条通知的ID | | `state` | 该通知是前台还是后台还是启动,值有三种,foreground,background,launch,launch是只有iOS才有,iOS退出应用后,来通知时点击通知启动APP,进入APP后获取参数时state是launch,foreground就是用户正在使用过程中来了通知。 | ### 设置Alias ``` constructor( ... public upush: Upush, ... ){ } login(){ ... this.upush.setAlias(user.loginName,"ALIAS_TYPE").then(res=>{ console.log("res==",res); }).catch(error=>{ console.log("error==",error); }) } ``` # 3.补充说明 ### 插件相关接口 ``` //监听通知的点击事件 var onSubscriptNotification = function (success, error) {}; //获取推送相关的设备token var init = function (success, error) {}; var setAlias = function (alias, alias_type, success, error) {}; var addAlias = function (alias, alias_type, success, error) {}; var deleteAlias = function (alias, alias_type, success, error) {}; var addTags = function (tag, success, error) {}; var deleteTags = function (tag, success, error) {}; ``` ## 常见问题 #### 1.Manifest合并失败。 可能与阿里巴巴相关的插件冲突,解决办法是把这个插件的`UTDID`库去掉,iOS去掉方法是把`plugin.xml`里的以下注释掉, ``` ``` Android则需要到插件的`src/android/plugin.gradle`里把以下代码注释掉, ``` api 'com.umeng.umsdk:utdid:1.1.5.3' ``` #### 2.小米手机收到推送点击通知不能打开APP 可能是推送的时候没设置要启动的路径,官方给的HTTP API是没有设置的,需要自己加,或者可以联系我获取。 其他问题可到issues提问,提问时请尽量详细描述。 ## 大版本更新日志 ### v2.5.0 修复了大家之前提的多个bug问题,友盟插件升级到了6.0.5 ### v2.2.0 添加了oppo和vivo厂家离线推送。 ### v2.1.0 添加了推送参数的获取,通知参数(包含自定义参数)在用户点击通知进入APP后能通过定义好的监听获取。iOS支持冷启动获取参数,不过Android不支持获取离线推送的参数。 ### v1.0.1 开始集成,支持iOS、华为、小米、魅族离线推送。 ## 个人小推荐 除了写代码,我平时还会进行一些电子音乐创作,创作完成后我会发布在网易云音乐,有Progressive House,Melodic Dubstep,Chillstep等风格,感兴趣的可以到网易云关注一下我啊~谢谢。音乐人:[Alamofire](https://music.163.com/#/artist?id=33349905)