• 关于

    视图组件-View

    的搜索结果

回答

答案:keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。 解析: 用法也很简单: <keep-alive> <component> <!-- 该组件将被缓存! --> </component> </keep-alive> props _ include - 字符串或正则表达,只有匹配的组件会被缓存 _ exclude - 字符串或正则表达式,任何匹配的组件都不会被缓存 // 组件 a export default { name: "a", data() { return {}; } }; <keep-alive include="a"> <component> <!-- name 为 a 的组件将被缓存! --> </component> </keep-alive >可以保留它的状态或避免重新渲染 <keep-alive exclude="a"> <component> <!-- 除了 name 为 a 的组件都将被缓存! --> </component> </keep-alive >可以保留它的状态或避免重新渲染 如果只想 router-view 里面某个组件被缓存,怎么办? 增加 router.meta 属性 // routes 配置 export default [ { path: "/", name: "home", component: Home, meta: { keepAlive: true // 需要被缓存 } }, { path: "/:id", name: "edit", component: Edit, meta: { keepAlive: false // 不需要被缓存 } } ]; <keep-alive> <router-view v-if="$route.meta.keepAlive"> <!-- 这里是会被缓存的视图组件,比如 Home! --> </router-view> </keep-alive> <router-view v-if="!$route.meta.keepAlive"> <!-- 这里是不被缓存的视图组件,比如 Edit! --> </router-view>
问问小秘 2019-12-02 03:21:06 0 浏览量 回答数 0

回答

可通过ScrollView组件实现小程序跳转到指定锚点的功能,利用ScrollView组件的scroll-into-view属性设置值为某子元素id,则滚动到该元素,元素顶部对齐滚动区域顶部。点击查看scroll-view 可滚动视图区域文档。
保持可爱mmm 2020-05-05 18:16:43 0 浏览量 回答数 0

回答

百度一下 很多的 ------------------------- 回 4楼(巨浪) 的帖子 你是要设置 开启服务器伪静态功能 还是服务器已经配置好 所用的程序的 伪静态规则? ------------------------- 回 6楼(巨浪) 的帖子 是 官方的 一键安装包吗? 1)首先新建一个应用程序池,名称任意,比如:nettest,托管管道模式先暂时设置为集成模式,等下面的一系列设置完成之后再设置成经典模式;      2)部署好站点,并将此站点的应用程序池设置为nettest;      3)选中站点,切换到功能试图,找到 "服务器组件"-> "处理程序映射",双击之后,在打开窗口右侧的操作栏目下做如下设置:      4)"添加脚本映射":请求路径 .html ,可执行文件选择 C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll ,如果是4.0,则为C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll,名称随意;      5)"添加通配符脚本映射":请求路径 * ,可执行文件为:C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,名称随意;      6)"添加托管处理程序":请求路径 * ,可执行文件:System.Web.UI.PageHandlerFactory,名称随意;      7)打开站点切换到功能试图,找到 "服务器组件"->"模块",双击之后,在打开窗口右侧的操作栏目中,点击"添加托管模块",类型 URLRewriter.ModuleRewriter,并且把"仅针对向asp.net 应用程序或托管处理程序发出请求调用" 选中;      8)最后,找到我们第一步建立的应用程序池nettest,将托管管道模式设置为经典模式。      以上完成之后,即可实现IIS 7.5下的伪静态操作。 ------------------------- 1、新建一个应用程序池:      名称:aspnet (任意)      选择net FrameWork版本(你的网站时候2.0的话就选择2.0,我的4.0)我选择Net FramWork v 4.030319. 托管管道模式先暂时设置为集成模式。等下面的设置完成之后再将托管管道模式设置为经典模式。如果下面的设置完成之后不把应用程序设置为经典模式的话,伪静态的功能可以实现,但是页面的样式图片不能正常显示这是设置的关键。2、新建一个网站 website      将此站点的应用程序程序池设置为aspnet。3、设置      选中你的站点比如website ,并且切换到功能视图。双击【处理程序映射】在打开窗口右侧的操作栏目下做如下操作。3.1、【添加脚本映射】           路径为:*.html.           可执行文件为:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll            注意:如果网站2.0可执行文件为:C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll           名称:html(任意)3.2、 【添加通配符脚本映射】             请求路径为:*            可执行文件为:C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,            名称:aspnet(任意)3.3、【托管处理程序映射】           路径:*             可执行文件:System.Web.UI.PageHandlerFactory           名称:Html-Integrate(任意)3.4、 双击website站点切换到站点功能视图,然后双击模块           单击【添加托管模块】          名称:aspnet(任意)          类型:URLRewriter.ModuleRewriter           【仅针对向asp.net 应用程序或托管处理程序发出请求调用】前面的选项勾上(记住一定要勾上)3.5 、程序池设置为经典模式:          双击iis7.0或7.5的应用程序池。在应用程序池列表中找到【aspnet】应用程序池。双击打开之后。将aspnet应用程序池的【托管管道模式】设置为经典模式。参考地址:http://www.jb51.net/article/29390.htm参考地址:http://www.qscn.net/archiver/view.asp?id=221参考地址:http://wenku.baidu.com/view/3d47c873f46527d3240ce0b7.html
asky8 2019-12-02 01:40:00 0 浏览量 回答数 0

Quick BI 数据可视化分析平台

2020年入选全球Gartner ABI魔力象限,为中国首个且唯一入选BI产品

问题

springmvc springsecurity问题?报错

在springmvc+springsecurity的项目中,若使用POST方式登录, 则出现以下问题: “HTTP Status 405 - Request method 'GET...
爱吃鱼的程序员 2020-06-08 10:36:03 0 浏览量 回答数 1

问题

java项目tomcat启动报错,百度了没有找到解决答案,急急急!!!?报错

java项目,tomcat启动报错,找了很久没有找到解决办法,求大神解决,错误代码如下: 2015-11-24 10:55:34 -3974 [localhost-startStop-1] WARN    - Exception en...
爱吃鱼的程序员 2020-06-10 10:46:42 0 浏览量 回答数 1

回答

"UML由视图(View)、图(Diagram)、模型元素(Model element)和通用机制(Generalmechanism)等几个部分构成。 • 视图:由多个图构成,如果要为系统建立一个完整的模型图。只需要定义一定数量的视图,每个视图表示系统的一个特殊的方面就可以了。另外视图还把建模语言和系统开发时选择的方法或过程连接起来。UML中的视图包括用例视图(Use-case View)逻辑视图(Logical View)组件视图(Component View)并发视图(Concurrency View)展开视图(Deployment View)等。 • 图:由各种图片(graph)构成用来描述一个视图的内容,UML定义了9种不同的图的类型,把它们有机地结合起来就可以描述系统的所有视图。UML中包含用例图、类图、对象图、状态图、序列图、协作图、活动图、组件图和展开图共九种。 • 模型元素:用语义元素的正式定义或确定的语句所代表的准确含义来定义。它代表了面向对象中的类、对象、消息和关系等概念。一个模型元素可以用在多个不同的图中,无论怎样使用它总是具有相同的含义和相同的符号表示。图15.3表示了面向对象成员的模型元素的符号图例。 • 通用机制:用于表示其他信息比如注释、模型元素的语义等。另外,它还提供扩展机制,使UML语言能够适应一个特殊的方法或过程或扩充至一个组织或用户。 "
星尘linger 2020-04-12 21:35:34 0 浏览量 回答数 0

问题

缩放TextView 问问题

我正在编写一个组件来处理缩放,旋转和平移的手势识别。令人遗憾的是,缩放不起作用,它没有收到缩小,并且放大效果不好,因为当视图很大时,它什么也没做࿰...
垚tutu 2019-12-01 22:07:25 3 浏览量 回答数 0

回答

第一步:在components目录新建你的组件文件(如:indexPage.vue),script一定要export default {} · 第二步:在需要用的页面(组件)中导入:import indexPage from '@/components/indexPage.vue' · 第三步:注入到vue的子组件的components属性上面,components:{indexPage} · 第四步:在template视图view中使用, 例如有indexPage命名,使用的时候则index-page
问问小秘 2020-02-17 17:13:20 0 浏览量 回答数 0

回答

Flutter开发框架总结 跨平台高性能的渲染引擎逐渐成为移动端、大前端领域的一个热点,作为其中的明星框架Flutter,经过近几年来的迅速发展,由极大的可能成为下一代跨终端解决方案。自从2017年5月,谷歌公司发布了alpha版本的Flutter;2018年底Flutter Live发布的1.0版本;2019年7月发布1.5版本,截至今日(2020年2月)已经发布了v1.14.6Beta版本。 Flutter背景 + 发展历程 首先在写Flutter之前我们要了解什么是原生开发什么是跨平台技术: 原生开发     是指在某一个平台所特有的应用,使用该平台所支持的开发工具和语言,并直接调用系统SDK,比如android上使用java 和ios上使用OC来开发, 这样做的好处 是可以使用平台上全部功能、速度快 性能好,用户体验好。 但是 缺点也很明显,开发不同平台需要维护的成本增加,动态化弱,更新时需要发布版本。 跨平台技术     针对原生开发所遇到的问题,人们已经研究出现有的跨平台技术方案:H5+原生、Js开发加原生渲染(例如React Native、weex等)、自绘UI加原生(QT fro mobile,Flutter) 发展历程     2011年谷歌推出一款可以在移动端,web,服务器等领域的语言—dart,其本质目的是为了取代现在的js的web。 1. 2014年谷歌在github开源了Sky 这便是Flutter的前身 2. 2015-10 Sky改名为Flutter 3. 2017-5 谷歌正式向外界公布Flutter 4. 2018-12 谷歌发布Flutter Live的1.0版本 5. 2019-2 Flutter1.2发布主要是增加对web的支持     Flutter提供了丰富的组件、接口,开发者可以很快地为 Flutter添加 native扩展。同时 Flutter还使用 Native引擎渲染视图,这无疑能为用户提供良好的体验 Flutter架构     Flutter既没有采用Webview也没有采用操作系统的原生控件,相反Flutter使用自己的高性能渲染引擎来绘制widget,这样不仅可以保证UI和原生的一致性,也可以降低维护成本。     Flutter使用Skia作为其2D渲染引擎,Skia是谷歌的一个2D图形处理函数库。     Flutter 采用Dart语言进性开发。Dart在即时编译模式下速度与JavaScript基本持平,但是Dart支持AOT(Ahead-Of-Time - 预先编译),如果以AOT模式运行时js便远追不上了。 为什么Flutter语言采用Dart而不是JavaScript,我们需要做一个对比 1. 开发效率 Dart运行时和编译器支持Flutter的两个关键特性的组合—“基于JIT的快速开发周期”、“基于AOT的发布包” 2. 高性能 Flutter为了实现流畅高保真的UI体验,需要能够在每个动画帧中运行大量的代码,这就需要一种既能提供高性能的语言,又不会出现丢帧,在这一点上Dart更好 3. 快速分配内存 Flutter框架使用函数式流,这使得它很依赖于底层的内存分配器。事实上Dart开发团队许多来自chrome,chrome V8的js引擎在内存分配上也做得非常好,而Dart也正好满足 4. 类型安全 Dart是类型安全语言,支持静态类型检测,js是弱类型语言,这是Dart的一个重要优势 言归正传,下图是Flutter官方提供的一个架构图 引擎刚刚已经介绍过了,我们现在来看看Flutter框架的结构:     由下到上     Foundation、Animation、Painting、Gestutes 这些在Google的一些视频中合称为Dart ui层,对应的是Flutter中的dart:ui包,他是底层ui库,提供动画、手势以及绘制能力。     Rendering层为一个抽象的布局层,它依赖于ui层,这类似于react中的虚拟dom树,该层可以说是Flutter框架最核心的部分,它除了确定每个元素的位置、大小还要进性坐标变换、绘制。     Widgets层是一套基础组件库,在基础组件之上还提供了Material和Cupertino两种视觉风格组件库,大多数我们只是使用这两层。 Flutter运行流程 渲染流程     当需要更新UI的时候,Framework通知Engine,Engine会等到下个Vsync信号到达的时候,会通知Framework,然后Framework会进行animations, build,layout,compositing,paint,最后生成layer提交给Engine。Engine会把layer进行组合,生成纹理,最后通过Open Gl接口提交数据给GPU, GPU经过处理后在显示器上面显示。 启动流程     此图为flutter在安卓下启动的流程,在安卓中默认启动的Activity是MainActivity,而MainActivity继承的是Flutter Activity。     FlutterActivity是继承Activity和实现了PluginRegistry。分析一下onCreate,onStop,onDestroy这些生命周期方法被FlutterActivity.eventDelegate代理了,这个时候我们明白了,FlutterActivity就是一个空壳,真正实现是代理类FlutterActivityDelegate。说白了就是创建一个FlutterView,并且把view显示到屏幕上。 Flutter生命周期     Flutter和安卓、ios应用一样拥有自己的生命周期,对比来看,安卓中是Activity,ios中是ViewController。Flutter中为Widget createState(): 当框架构建StatefulWidget时,会立即调用createState();initState(): 创建窗口小部件时,调用的第一个方法,子类化State可以重写initState,用来完成仅需要执行一次的工作。didChangeDependencies(): 在执行完initState之后调用此方法。build(): 在执行完didChangeDependencies() 之后立即调用,所有的GUI都会在这里渲染,并且每次渲染UI时都会调用它。didUpdateWidget(): 父级窗口小部件进行更改并需要重新绘制UI时,会调用此方法setState(): 此方法用于通知框架数据已更改。dispose(): 销毁方法,移除State对象时调用,应该在此方法中取消一些订阅、动画、流等。 Flutter生态圈及其常用框架 DIO Dio是flutter中文网开源的一个强大的Dart Http请求库,支持Restful Api、FormData、拦截器、请求取消、Cookie、文件上传下载、超时等。 Flukit flukit即Flutter UI Kit,一个常用的Widget库,包括下拉刷新、轮播图、快速滚动条、渐变进度条、城市选择器等. CookieJar 一个实现HTTP协议标准Cookie管理策略的Cookie管理器,他可以自动帮您自动管理http请求cookie,并支持本地持久化。 flutter-go 阿里巴巴开源的flutter 开发者帮助 APP,包含 flutter 常用 140+ 组件的demo 演示与中文文档 https://flutter-go.pub/website/ Best-Flutter-UI-Templates Github地址:https://github.com/mitesh77/Best-Flutter-UI-Templates ,有许多内置ui模板。 欢迎大家有问题随时和我分享哦~初次在开发者社区码字,若有不足之处,请指教,您的每一次留言都是我前进的动力。愿大家在疫情期间共同进步,共创美好的开发者社区。
kun坤 2020-03-02 17:00:55 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档Android API Android SDK最新版本v3.0.11。 Android参考Demo。 API索引: 1. CloudPushSDK接口 1.1 基本设置 SDK注册SDK动态注册启动信息统计获取设备标识设置日志等级动态设置appKey动态设置appSecret打开推送通道关闭推送通道查询推送通道状态设置接收消息IntentService 1.2 账号API 绑定账号解绑账号 1.3 标签API 绑定标签解绑标签查询标签 1.4 别名API 添加别名删除别名查询别名 1.5 通知设置API 设置通知声音设置通知栏图标设置状态栏图标设置免打扰时段关闭免打扰功能删除所有通知接口 1.6 自建通知统计上报API 自建通知点击上报接口自建通知删除上报接口 1.7 电话API 绑定电话解绑电话 2. MessageReceiver/AliyunMessageIntentService相关接口 2.1 消息接收回调2.2 通知接收回调2.3 通知打开回调2.4 无跳转逻辑通知打开回调2.5 通知在应用内到达回调 3. 自定义样式通知相关接口 3.1 客户端设置通知样式3.2 后端推送消息时添加自定义样式id3.3 Example BasicCustomNotification ExampleAdvancedCustomNotification ExampleOpenAPI Example 3.4 BacisCustomNotificaiton API 默认构造函数构造函数获取状态栏图标设置状态栏图标获取提醒方式设置提醒方式获取Notification Flags参数设置Notificaiton Flags参数获取是否服务端设置优先设置是否服务端优先获取推送前台到达否创建通知参数设置推送前台到达否创建通知参数 3.5 AdvancedCustomNotification API 构造函数设置通知图标获取通知图标 3.6 CustomNotificationBuilder API 获取CustomNotificationBuilder实例注册自定义样式通知 1. CloudPushService接口 以下接口调用时,如有回调,均为异步执行,且回调不能为空。 1.1基本设置 SDK注册 初始化推送SDK,关联到云通道。 参数 context 应用上下文(需要ApplicationContext)callback 回调 void register(Context context, CommonCallback callback); SDK动态注册接口 支持动态设置appKey,appSecret的注册接口 参数 context 应用上下文(需要ApplicationContext)appKey appSecretcallback 回调 void register(Context context, String appKey, String appSecret, CommonCallback callback); 启动信息统计 统计App启动信息。 void onAppStart(); 获取设备标识 获取设备唯一标识。 返回 设备唯一标识。 String getDeviceId(); 设置日志等级 需要在通道初始化之前设置;默认日志等级为CloudPushService.ERROR; 参数 logLevel 支持设置:CloudPushService.ERROR | CloudPushService.INFO | CloudPushService.DEBUG | CloudPushService.OFF(关闭Log) void setLogLevel(int logLevel); V2.3.6及以上版本支持)" class="reference-link">动态设置appKey(V2.3.6及以上版本支持) 动态设置appKey无需在manifest配置appKey务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appKey 需要设置的appKey void setAppKey(String appKey); V2.3.6及以上版本支持)" class="reference-link">动态设置appSecret(V2.3.6及以上版本支持) 动态设置appSecret无需在manifest配置appSecret务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appSecret 需要设置的appSecret void setAppSecret(String appSecret); V3.0.3及以上版本支持)" class="reference-link">打开推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态打开推送通道全量推送场景下,打开推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOnPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">关闭推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态关闭推送通道全量推送场景下,关闭推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOffPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">查询推送通道状态(V3.0.3及以上版本支持) app运行时查询当前推送通道状态如果当前为打开状态,则通过callback.success(String response)回调传入’on’;反之则传入’off’ 参数 callback 回调 void checkPushChannelStatus(CommonCallback callback); V3.0.10及以上版本支持)" class="reference-link">设置消息接收IntentService(V3.0.10及以上版本支持) 通过IntentService组件接收消息回调设置后消息将通过该组件透出,不再通过MessageReceiver设置的IntentService需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关回调方法 参数 messageIntentService 自定义接收消息IntentService的class void setPushIntentService(Class messageIntentService); 1.2 账号API 绑定账号 将应用内账号和推送通道相关联,可以实现按账号的定点消息推送;设备只能绑定一个账号,同一账号可以绑定到多个设备;同一设备更换绑定账号时无需进行解绑,重新调用绑定账号接口即可生效;若业务场景需要先解绑后绑定,在解绑账号成功回调中进行绑定绑定操作,以此保证执行的顺序性;账户名设置支持64字节。 参数 account 绑定账号名callback 回调 void bindAccount(String account, CommonCallback callback); 解绑账号 将应用内账号和推送通道取消关联。 参数 callback 回调 void unbindAccount(CommonCallback callback); 1.3 标签API 绑定标签 绑定标签到指定目标;支持向设备、账号和别名绑定标签,绑定类型由参数target指定;绑定标签在10分钟内生效;App最多支持绑定1万个标签,单个标签最大支持128字符。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void bindTag(int target, String[] tags, String alias, CommonCallback callback); 解绑标签 解绑指定目标标签;支持解绑设备、账号和别名标签,解绑类型由参数target指定;解绑标签在10分钟内生效;解绑标签只是解除设备和标签的绑定关系,不等同于删除标签,即该APP下标签仍然存在,系统目前不支持标签的删除。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名。target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void unbindTag(int target, String[] tags, String alias, CommonCallback callback); 查询标签 查询目标绑定标签,当前仅支持查询设备标签;查询结果可从回调onSuccess(response)的response获取;标签绑定成功且生效(10分钟内)后即可查询。 参数 target 目标类型,1: 本设备target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备;callback 回调 void listTags(int target, CommonCallback callback); 1.4 别名API 添加别名 设备添加别名;单个设备最多添加128个别名,且同一别名最多添加到128个设备;别名支持128字节。 参数 alias 别名callback 回调 void addAlias(String alias, CommonCallback callback); 删除别名 删除设备别名;支持删除指定别名和删除全部别名(alias = null || alias.length = 0)。 参数 alias 别名(alias = null or alias.length = 0时,删除设备全部别名)callback 回调 void removeAlias(String alias, CommonCallback callback); 查询别名 查询设备别名;查询结果可从回调onSuccess(response)的response中获取;从V3.0.9及以上版本开始,接口内部有5s短缓存,5s内多次调用只会请求服务端一次。 参数 callback 回调 void listAliases(CommonCallback callback); 1.5 通知设置API 设置通知声音 设置推送通知声音文件路径;若不调用本接口,默认获取资源id为R.raw.alicloud_notification_sound的资源文件;若没有获取到指定声音文件,取设备设置的消息声音。 参数 filePath 通知声音文件路径 void setNotificationSoundFilePath(String filePath); 设置通知栏图标 设置推送通知栏图标资源Bitmap。若不调用本接口,默认获取id为R.drawable.alicloud_notification_largeIcon的资源文件;若没有获取到指定图标文件,取App启动图标。 参数 icon 图标资源Bitmap void setNotificationLargeIcon(Bitmap icon); 设置状态栏图标 设置推送状态栏图标资源Id;若不调用本接口,默认获取id为R.drawable.alicloud_notification_smallIcon的资源文件;若没有获取到指定资源文件Id,取App启动图标。 参数 iconId 图标资源Id void setNotificationSmallIcon(int iconId); 设置免打扰时段 设置免打扰时间段,过滤所有通知与消息;免打扰时段仅支持设置一次,多次调用以最后一次调用设置时段为准;设置免打扰时段为00:00 - 00:00,可取消免打扰功能;(以下功能支持该用法,V2.3.5及以上版本使用关闭免打扰功能接口)全天免打扰可以设置为”0:0-23:59”免打扰时段设置对小米辅助弹窗通知无效。 参数 startHour 免打扰的起始时间(小时),24小时制,取值范围:0-23startMinute 免打扰起始时间(分钟),取值范围:0-59endHour 免打扰的结束时间(小时),24小时制,取值范围:0-23endMinute 免打扰结束时间(分钟),取值范围:0-59 void setDoNotDisturb(int startHour, int startMinute, int endHour, int endMinute, CommonCallback callback); V2.3.5及以上版本支持)" class="reference-link">关闭免打扰功能(V2.3.5及以上版本支持) 关闭后,先前设置的免打扰时段失效免打扰功能默认是关闭的没有对应的开发免打扰功能接口,调用设置免打扰功能时段功能后自动打开免打扰功能 void closeDoNotDisturbMode(); V2.3.7及以上版本支持)" class="reference-link">删除所有通知接口(V2.3.7及以上版本支持) 删除推送SDK创建的所有通知若需要实现精准删除特定通知可以在onNotification回调中获取通知id,自行删除 void clearNotifications(); V3.0.6及以上版本支持)" class="reference-link">1.6 自建通知统计上报API(V3.0.6及以上版本支持) 本接口主要针对统计用户自建通知(通过阿里云推送发送透传消息,并在onMessage回调中自行创建通知)的删除/点击事件上报,其相关实现可以参考移动推送Android SDK:透传消息+用户自建通知最佳实践,如果您直接通过阿里云推送通知,无需使用相关接口。 自建通知点击上报接口 上报自建通知的点击事件请确保同一消息仅上报一次 参数 message 要上报点击事件的消息实例 void clickMessage(CPushMessage message); 自建通知删除上报接口 上报自建通知的删除事件请确保同一消息仅上报一次 参数 message 要上报删除事件的消息实例 void dismissMessage(CPushMessage message); V3.0.11及以上版本支持)" class="reference-link">1.7 电话API(V3.0.11及以上版本支持) 为提高信息的到达率和实效性,扩展推送的使用场景,我们推出了推送与短信的融合通知模式。开发者可以设置在一定时间内,如果用户未收到或未点击推送,通过短信补发通知用户。具体方案可参考:推送短信融合。 为实现推送短信融合方案,需要在终端接入绑定/解绑电话号接口,接口详情如下。 绑定电话号将设备与电话号绑定 参数 phoneNumber 要绑定的手机号callback 回调 void bindPhoneNumber(String phoneNumber, CommonCallback callback); 解绑电话号解除当前设备与电话号的绑定关系 参数 callback 回调 void unbindPhoneNumber(CommonCallback callback); 2. MessageReceiver/AliyunMessageIntentService 通过继承MessageReciever,可以拦截通知,接收消息,获取推送中的扩展字段。或者在通知打开或删除的时候,切入进行后续处理。如果调用了setPushIntentService,则需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关方法,AliyunMessageIntentService所有消息回调同MessageReceiver一致。 使用方法: MessageReceiver 继承com.alibaba.sdk.android.push.MessageReceiver;在Manifest中找到原来MessageReceiver的配置,将上边的class替换成你自己的receiver[不要配置多个]。 <!--消息接收监听器--><receiver android:name="com.alibaba.sdk.android.push.MessageReceiver <-- 把这里替换成你自己的receiver"> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/> </intent-filter> ... ...</receiver> AliyunMessageIntentService 继承com.alibaba.sdk.android.push.AliyunMessageIntentService并覆写相关方法在Manifest中注册该service <service android:name="MyPushIntentService" > <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.sdk.android.push.RECEIVE" /> </intent-filter> </service> 消息接收回调 用于接收服务端推送的消息。消息不会弹窗,而是回调该方法。 参数 context 上下文环境message CPushMessage类型,可以获取消息Id、消息标题和内容。 void onMessage(Context context, CPushMessage message); 通知接收回调 客户端接收到通知后,回调该方法。可获取到并处理通知相关的参数。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotification(Context context, String title, String summary, Map<String, String> extraMap) 通知打开回调 打开通知时会回调该方法,通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationOpened(Context context, String title, String summary, String extraMap); 无跳转逻辑通知打开回调 打开无跳转逻辑(open=4)通知时回调该方法(v2.3.2及以上版本支持),通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap); 通知删除回调 删除通知时回调该方法,通知删除上报由SDK自动完成。 参数 context 上下文环境messageId 删除通知的Id void onNotificationRemoved(Context context, String messageId); 通知在应用内到达回调 当用户创建自定义通知样式,并且设置推送应用内到达不创建通知弹窗时调用该回调,且此时不调用onNotification回调(v2.3.3及以上版本支持) 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数openType 原本通知打开方式,1:打开APP;2:打开activity;3:打开URL;4:无跳转逻辑openActivity 所要打开的activity的名称,仅当openType=2时有效,其余情况为nullopenUrl 所要打开的URL,仅当openType=3时有效,其余情况为null void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl); V2.3.3及以上版本开始支持)" class="reference-link">3. 自定义样式通知(V2.3.3及以上版本开始支持)Android Push SDK支持用户自定义通知样式,用户可以设定自己的通知样式,涉及的内容包括通知的提醒方式(声音、震动、静默),通知在状态栏的显示图标,推送消息应用内到达时是否创建通知以及自定义通知布局文件等。自定义样式通知的设置包括两部分: 3.1 客户端设置通知样式 用户利用SDK提供的自定义通知样式接口创建自定义样式通知。SDK中有两个自定义样式通知类:1)BasicCustomPushNotification;2)AdvancedCustomPushNotification。其中BasicCustomPushNotification用户设置基础样式,包括提醒方式、状态栏图标以及当推送消息到达时应用正处于前台情况下是否创建该通知等。AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了BasicCustomPushNotification的所有方法,同时还可以设置通知样式布局文件每个样式都需要对应一个特定的整数类型id,如果多个样式设置为同一个id,则最后设置的样式有效。如果SDK没有找到对应id的样式则会创建默认样式的通知样式只需设置一次,SDK会记住这个设置,在需要使用时加载对应样式具体使用例子请参考Demo 3.2 后端推送消息时添加自定义样式id 用户利用OpenApi推送消息时设定特定样式的id服务端不能设置样式,只能指定需要展现的样式id指定id的样式必须在客户端已经进行设置,否则SDK会创建默认样式的通知 3.3 Example BasicCustomPushNotification" class="reference-link">Example-BasicCustomPushNotificationBasicCustomPushNotification notification = new BasicCustomPushNotification();notification.setRemindType(BasicCustomPushNotification.REMIND_TYPE_SOUND);notification.setStatusBarDrawable(R.drawable.logo_yuanjiao_120);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(1, notification); AdvancedCustomPushNotification" class="reference-link">Example-AdvancedCustomPushNotificationAdvancedCustomPushNotification notification = new AdvancedCustomPushNotification(R.layout.notitfication_layout, R.id.m_icon, R.id.m_title, R.id.m_text);notification.setServerOptionFirst(true);notification.setBuildWhenAppInForeground(false);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(2, notification); OpenApi" class="reference-link">Example-OpenApi客户端设置完成后,服务端在推送通知时需要利用OpenApi指明对应的自定义样式ID final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");final String date = dateFormat.format(new Date());PushRequest pushRequest = new PushRequest();// 推送目标pushRequest.setAppKey(appKey);pushRequest.setTarget("device"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部pushRequest.setTargetValue("deviceId"); // 推送配置pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知pushRequest.setTitle(date); // 消息的标题pushRequest.setBody("PushRequest body"); // 消息的内容pushRequest.setSummary("PushRequest summary"); // 通知的摘要pushRequest.setAndroidNotificationBarType(2);//设置的通知样式ID,通知栏自定义样式范围0-100// 推送配置: AndroidpushRequest.setAndroidOpenType("1"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 urlpushRequest.setAndroidExtParameters("{\"_NOTIFICATION_BAR_STYLE_\":\"2\"}"); 3.4 BasicCustomPushNotification API 默认构造函数 BasicCustomPushNotification的默认构造函数,所有配置采用默认设置:通知方式采用震动+通知;NotificationFlag采用Notification.FLAG_AUTO_CANCEL,状态栏图标用的是android.R.drawable.stat_notify_chat。 public BasicCustomPushNotification(); 构造函数参数 drawable 状态栏图标flags NotificationFlags,支持系统Notification下的Flag参数remindType 提醒类型,有BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public BasicCustomPushNotification(int drawable, int flags, int remindType); 获取状态栏图标 获取已设置的状态栏图标 public int getStatusBarDrawable() 设置状态栏图标 更改状态栏图标设置 参数 statusBarDrawable 状态栏图标资源id public void setStatusBarDrawable(int statusBarDrawable); 获取提醒方式 获取已经设置的提醒方式 public int getRemindType(); 设置提醒方式 更改自定义通知的提醒方式 参数 remindType 提醒方式,提供的参数有:BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public void setRemindType(int remindType); 获取Notification Flags参数 获取已经设置的notification flag参数 public int getNotificationFlags(); 设置Notification Flags参数 更改自定义通知的flags参数 参数 notificationFlags 支持系统自带的Notification Flag参数 public void setNotificationFlags(int notificationFlags); 获取是否服务端设置优先 利用OpenApi或者阿里云推送控制台推送消息都可以设置提醒方式,当后端设置的提醒方式和自定义样式提醒方式冲突时,SDK根据serverOptionFirst参数来判断提醒方式策略。如果该参数为true,则采用后端设定的提醒方式;如果该参数为false,则采用自定义样式指定的提醒方式。默认为false public boolean isServerOptionFirst(); 设置是否服务端优先 更改自定义通知的serverOptionFirst参数 参数 serverOptionFirst 是否服务器配置优先 public void setServerOptionFirst(boolean serverOptionFirst); 获取推送前台到达否创建通知参数 当推送到达时,如果应用处在前台,用户可以通过自定义样式决定是否创建通知。默认是创建通知 public boolean isBuildWhenAppInForeground(); 设置推送前台到达否创建通知参数 更改当推送到达时应用处在前台情况下是否创建通知的设置 参数 buildWhenAppInForeground 是否创建通知 public void setBuildWhenAppInForeground(boolean buildWhenAppInForeground); 3.5 AdvancedCustomPushNotification API AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了上文中BasicCustomPushNotification的所有方法。 AdvancedCustomPushNotification构造函数 AdvancedCustomPushNotification类的构造函数,AdvancedCustomPushNotification没有默认构造函数 参数 view 自定义通知布局文件id。注:Notification的自定义布局是RemoteViews,和其他RemoteViews一样,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout三种布局。iconViewId 自定义布局文件中icon的viewIdtitleViewId 自定义布局文件中title的viewIdcontentViewId 自定义布局文件中显示通知正文的viewId public AdvancedCustomPushNotification( int view, int iconViewId, int titleViewId, int contentViewId); 设置通知图标 设置通知栏中显示的图标,该图标显示在iconViewId所指定的控件中。 参数 icon icon图标资源id public void setIcon(int icon); 获取通知图标 获取设置的通知图标 public int getIcon(); 3.6 CustomNotificationBuilder API CustomNotificationBuilder用于注册用户设定好的自定义样式通知 获取CustomNotificationBuilder实例 CustomNotificationBuilder是单例类,必须通过指定接口来获取实例 public static CustomNotificationBuilder getInstance(); 注册自定义样式通知 用户创建好自定义样式通知后需要将其注册,并赋予其一个特定的id 参数 customNotificationId 所注册的自定义样式通知的id,id必须大于0。如果将多个不同的自定义样式通知赋予同一个id,则最后注册的通知有效,其他的通知将会被覆盖notification 创建的通知,该通知可以是BasicCustomPushNotification对象也可以是AdvancedCustomPushNotification对象,但是不能为null 返回 该方法会返回一个boolean类型的结果,如果返回true,则注册成功;反之则失败。 public boolean setCustomNotification(int customNotificationId, BasicCustomPushNotification notification);
2019-12-01 23:11:48 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档Android API Android SDK最新版本v3.0.11。 Android参考Demo。 API索引: 1. CloudPushSDK接口 1.1 基本设置 SDK注册SDK动态注册启动信息统计获取设备标识设置日志等级动态设置appKey动态设置appSecret打开推送通道关闭推送通道查询推送通道状态设置接收消息IntentService 1.2 账号API 绑定账号解绑账号 1.3 标签API 绑定标签解绑标签查询标签 1.4 别名API 添加别名删除别名查询别名 1.5 通知设置API 设置通知声音设置通知栏图标设置状态栏图标设置免打扰时段关闭免打扰功能删除所有通知接口 1.6 自建通知统计上报API 自建通知点击上报接口自建通知删除上报接口 1.7 电话API 绑定电话解绑电话 2. MessageReceiver/AliyunMessageIntentService相关接口 2.1 消息接收回调2.2 通知接收回调2.3 通知打开回调2.4 无跳转逻辑通知打开回调2.5 通知在应用内到达回调 3. 自定义样式通知相关接口 3.1 客户端设置通知样式3.2 后端推送消息时添加自定义样式id3.3 Example BasicCustomNotification ExampleAdvancedCustomNotification ExampleOpenAPI Example 3.4 BacisCustomNotificaiton API 默认构造函数构造函数获取状态栏图标设置状态栏图标获取提醒方式设置提醒方式获取Notification Flags参数设置Notificaiton Flags参数获取是否服务端设置优先设置是否服务端优先获取推送前台到达否创建通知参数设置推送前台到达否创建通知参数 3.5 AdvancedCustomNotification API 构造函数设置通知图标获取通知图标 3.6 CustomNotificationBuilder API 获取CustomNotificationBuilder实例注册自定义样式通知 1. CloudPushService接口 以下接口调用时,如有回调,均为异步执行,且回调不能为空。 1.1基本设置 SDK注册 初始化推送SDK,关联到云通道。 参数 context 应用上下文(需要ApplicationContext)callback 回调 void register(Context context, CommonCallback callback); SDK动态注册接口 支持动态设置appKey,appSecret的注册接口 参数 context 应用上下文(需要ApplicationContext)appKey appSecretcallback 回调 void register(Context context, String appKey, String appSecret, CommonCallback callback); 启动信息统计 统计App启动信息。 void onAppStart(); 获取设备标识 获取设备唯一标识。 返回 设备唯一标识。 String getDeviceId(); 设置日志等级 需要在通道初始化之前设置;默认日志等级为CloudPushService.ERROR; 参数 logLevel 支持设置:CloudPushService.ERROR | CloudPushService.INFO | CloudPushService.DEBUG | CloudPushService.OFF(关闭Log) void setLogLevel(int logLevel); V2.3.6及以上版本支持)" class="reference-link">动态设置appKey(V2.3.6及以上版本支持) 动态设置appKey无需在manifest配置appKey务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appKey 需要设置的appKey void setAppKey(String appKey); V2.3.6及以上版本支持)" class="reference-link">动态设置appSecret(V2.3.6及以上版本支持) 动态设置appSecret无需在manifest配置appSecret务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appSecret 需要设置的appSecret void setAppSecret(String appSecret); V3.0.3及以上版本支持)" class="reference-link">打开推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态打开推送通道全量推送场景下,打开推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOnPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">关闭推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态关闭推送通道全量推送场景下,关闭推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOffPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">查询推送通道状态(V3.0.3及以上版本支持) app运行时查询当前推送通道状态如果当前为打开状态,则通过callback.success(String response)回调传入’on’;反之则传入’off’ 参数 callback 回调 void checkPushChannelStatus(CommonCallback callback); V3.0.10及以上版本支持)" class="reference-link">设置消息接收IntentService(V3.0.10及以上版本支持) 通过IntentService组件接收消息回调设置后消息将通过该组件透出,不再通过MessageReceiver设置的IntentService需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关回调方法 参数 messageIntentService 自定义接收消息IntentService的class void setPushIntentService(Class messageIntentService); 1.2 账号API 绑定账号 将应用内账号和推送通道相关联,可以实现按账号的定点消息推送;设备只能绑定一个账号,同一账号可以绑定到多个设备;同一设备更换绑定账号时无需进行解绑,重新调用绑定账号接口即可生效;若业务场景需要先解绑后绑定,在解绑账号成功回调中进行绑定绑定操作,以此保证执行的顺序性;账户名设置支持64字节。 参数 account 绑定账号名callback 回调 void bindAccount(String account, CommonCallback callback); 解绑账号 将应用内账号和推送通道取消关联。 参数 callback 回调 void unbindAccount(CommonCallback callback); 1.3 标签API 绑定标签 绑定标签到指定目标;支持向设备、账号和别名绑定标签,绑定类型由参数target指定;绑定标签在10分钟内生效;App最多支持绑定1万个标签,单个标签最大支持128字符。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void bindTag(int target, String[] tags, String alias, CommonCallback callback); 解绑标签 解绑指定目标标签;支持解绑设备、账号和别名标签,解绑类型由参数target指定;解绑标签在10分钟内生效;解绑标签只是解除设备和标签的绑定关系,不等同于删除标签,即该APP下标签仍然存在,系统目前不支持标签的删除。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名。target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void unbindTag(int target, String[] tags, String alias, CommonCallback callback); 查询标签 查询目标绑定标签,当前仅支持查询设备标签;查询结果可从回调onSuccess(response)的response获取;标签绑定成功且生效(10分钟内)后即可查询。 参数 target 目标类型,1: 本设备target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备;callback 回调 void listTags(int target, CommonCallback callback); 1.4 别名API 添加别名 设备添加别名;单个设备最多添加128个别名,且同一别名最多添加到128个设备;别名支持128字节。 参数 alias 别名callback 回调 void addAlias(String alias, CommonCallback callback); 删除别名 删除设备别名;支持删除指定别名和删除全部别名(alias = null || alias.length = 0)。 参数 alias 别名(alias = null or alias.length = 0时,删除设备全部别名)callback 回调 void removeAlias(String alias, CommonCallback callback); 查询别名 查询设备别名;查询结果可从回调onSuccess(response)的response中获取;从V3.0.9及以上版本开始,接口内部有5s短缓存,5s内多次调用只会请求服务端一次。 参数 callback 回调 void listAliases(CommonCallback callback); 1.5 通知设置API 设置通知声音 设置推送通知声音文件路径;若不调用本接口,默认获取资源id为R.raw.alicloud_notification_sound的资源文件;若没有获取到指定声音文件,取设备设置的消息声音。 参数 filePath 通知声音文件路径 void setNotificationSoundFilePath(String filePath); 设置通知栏图标 设置推送通知栏图标资源Bitmap。若不调用本接口,默认获取id为R.drawable.alicloud_notification_largeIcon的资源文件;若没有获取到指定图标文件,取App启动图标。 参数 icon 图标资源Bitmap void setNotificationLargeIcon(Bitmap icon); 设置状态栏图标 设置推送状态栏图标资源Id;若不调用本接口,默认获取id为R.drawable.alicloud_notification_smallIcon的资源文件;若没有获取到指定资源文件Id,取App启动图标。 参数 iconId 图标资源Id void setNotificationSmallIcon(int iconId); 设置免打扰时段 设置免打扰时间段,过滤所有通知与消息;免打扰时段仅支持设置一次,多次调用以最后一次调用设置时段为准;设置免打扰时段为00:00 - 00:00,可取消免打扰功能;(以下功能支持该用法,V2.3.5及以上版本使用关闭免打扰功能接口)全天免打扰可以设置为”0:0-23:59”免打扰时段设置对小米辅助弹窗通知无效。 参数 startHour 免打扰的起始时间(小时),24小时制,取值范围:0-23startMinute 免打扰起始时间(分钟),取值范围:0-59endHour 免打扰的结束时间(小时),24小时制,取值范围:0-23endMinute 免打扰结束时间(分钟),取值范围:0-59 void setDoNotDisturb(int startHour, int startMinute, int endHour, int endMinute, CommonCallback callback); V2.3.5及以上版本支持)" class="reference-link">关闭免打扰功能(V2.3.5及以上版本支持) 关闭后,先前设置的免打扰时段失效免打扰功能默认是关闭的没有对应的开发免打扰功能接口,调用设置免打扰功能时段功能后自动打开免打扰功能 void closeDoNotDisturbMode(); V2.3.7及以上版本支持)" class="reference-link">删除所有通知接口(V2.3.7及以上版本支持) 删除推送SDK创建的所有通知若需要实现精准删除特定通知可以在onNotification回调中获取通知id,自行删除 void clearNotifications(); V3.0.6及以上版本支持)" class="reference-link">1.6 自建通知统计上报API(V3.0.6及以上版本支持) 本接口主要针对统计用户自建通知(通过阿里云推送发送透传消息,并在onMessage回调中自行创建通知)的删除/点击事件上报,其相关实现可以参考移动推送Android SDK:透传消息+用户自建通知最佳实践,如果您直接通过阿里云推送通知,无需使用相关接口。 自建通知点击上报接口 上报自建通知的点击事件请确保同一消息仅上报一次 参数 message 要上报点击事件的消息实例 void clickMessage(CPushMessage message); 自建通知删除上报接口 上报自建通知的删除事件请确保同一消息仅上报一次 参数 message 要上报删除事件的消息实例 void dismissMessage(CPushMessage message); V3.0.11及以上版本支持)" class="reference-link">1.7 电话API(V3.0.11及以上版本支持) 为提高信息的到达率和实效性,扩展推送的使用场景,我们推出了推送与短信的融合通知模式。开发者可以设置在一定时间内,如果用户未收到或未点击推送,通过短信补发通知用户。具体方案可参考:推送短信融合。 为实现推送短信融合方案,需要在终端接入绑定/解绑电话号接口,接口详情如下。 绑定电话号将设备与电话号绑定 参数 phoneNumber 要绑定的手机号callback 回调 void bindPhoneNumber(String phoneNumber, CommonCallback callback); 解绑电话号解除当前设备与电话号的绑定关系 参数 callback 回调 void unbindPhoneNumber(CommonCallback callback); 2. MessageReceiver/AliyunMessageIntentService 通过继承MessageReciever,可以拦截通知,接收消息,获取推送中的扩展字段。或者在通知打开或删除的时候,切入进行后续处理。如果调用了setPushIntentService,则需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关方法,AliyunMessageIntentService所有消息回调同MessageReceiver一致。 使用方法: MessageReceiver 继承com.alibaba.sdk.android.push.MessageReceiver;在Manifest中找到原来MessageReceiver的配置,将上边的class替换成你自己的receiver[不要配置多个]。 <!--消息接收监听器--><receiver android:name="com.alibaba.sdk.android.push.MessageReceiver <-- 把这里替换成你自己的receiver"> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/> </intent-filter> ... ...</receiver> AliyunMessageIntentService 继承com.alibaba.sdk.android.push.AliyunMessageIntentService并覆写相关方法在Manifest中注册该service <service android:name="MyPushIntentService" > <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.sdk.android.push.RECEIVE" /> </intent-filter> </service> 消息接收回调 用于接收服务端推送的消息。消息不会弹窗,而是回调该方法。 参数 context 上下文环境message CPushMessage类型,可以获取消息Id、消息标题和内容。 void onMessage(Context context, CPushMessage message); 通知接收回调 客户端接收到通知后,回调该方法。可获取到并处理通知相关的参数。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotification(Context context, String title, String summary, Map<String, String> extraMap) 通知打开回调 打开通知时会回调该方法,通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationOpened(Context context, String title, String summary, String extraMap); 无跳转逻辑通知打开回调 打开无跳转逻辑(open=4)通知时回调该方法(v2.3.2及以上版本支持),通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap); 通知删除回调 删除通知时回调该方法,通知删除上报由SDK自动完成。 参数 context 上下文环境messageId 删除通知的Id void onNotificationRemoved(Context context, String messageId); 通知在应用内到达回调 当用户创建自定义通知样式,并且设置推送应用内到达不创建通知弹窗时调用该回调,且此时不调用onNotification回调(v2.3.3及以上版本支持) 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数openType 原本通知打开方式,1:打开APP;2:打开activity;3:打开URL;4:无跳转逻辑openActivity 所要打开的activity的名称,仅当openType=2时有效,其余情况为nullopenUrl 所要打开的URL,仅当openType=3时有效,其余情况为null void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl); V2.3.3及以上版本开始支持)" class="reference-link">3. 自定义样式通知(V2.3.3及以上版本开始支持)Android Push SDK支持用户自定义通知样式,用户可以设定自己的通知样式,涉及的内容包括通知的提醒方式(声音、震动、静默),通知在状态栏的显示图标,推送消息应用内到达时是否创建通知以及自定义通知布局文件等。自定义样式通知的设置包括两部分: 3.1 客户端设置通知样式 用户利用SDK提供的自定义通知样式接口创建自定义样式通知。SDK中有两个自定义样式通知类:1)BasicCustomPushNotification;2)AdvancedCustomPushNotification。其中BasicCustomPushNotification用户设置基础样式,包括提醒方式、状态栏图标以及当推送消息到达时应用正处于前台情况下是否创建该通知等。AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了BasicCustomPushNotification的所有方法,同时还可以设置通知样式布局文件每个样式都需要对应一个特定的整数类型id,如果多个样式设置为同一个id,则最后设置的样式有效。如果SDK没有找到对应id的样式则会创建默认样式的通知样式只需设置一次,SDK会记住这个设置,在需要使用时加载对应样式具体使用例子请参考Demo 3.2 后端推送消息时添加自定义样式id 用户利用OpenApi推送消息时设定特定样式的id服务端不能设置样式,只能指定需要展现的样式id指定id的样式必须在客户端已经进行设置,否则SDK会创建默认样式的通知 3.3 Example BasicCustomPushNotification" class="reference-link">Example-BasicCustomPushNotificationBasicCustomPushNotification notification = new BasicCustomPushNotification();notification.setRemindType(BasicCustomPushNotification.REMIND_TYPE_SOUND);notification.setStatusBarDrawable(R.drawable.logo_yuanjiao_120);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(1, notification); AdvancedCustomPushNotification" class="reference-link">Example-AdvancedCustomPushNotificationAdvancedCustomPushNotification notification = new AdvancedCustomPushNotification(R.layout.notitfication_layout, R.id.m_icon, R.id.m_title, R.id.m_text);notification.setServerOptionFirst(true);notification.setBuildWhenAppInForeground(false);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(2, notification); OpenApi" class="reference-link">Example-OpenApi客户端设置完成后,服务端在推送通知时需要利用OpenApi指明对应的自定义样式ID final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");final String date = dateFormat.format(new Date());PushRequest pushRequest = new PushRequest();// 推送目标pushRequest.setAppKey(appKey);pushRequest.setTarget("device"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部pushRequest.setTargetValue("deviceId"); // 推送配置pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知pushRequest.setTitle(date); // 消息的标题pushRequest.setBody("PushRequest body"); // 消息的内容pushRequest.setSummary("PushRequest summary"); // 通知的摘要pushRequest.setAndroidNotificationBarType(2);//设置的通知样式ID,通知栏自定义样式范围0-100// 推送配置: AndroidpushRequest.setAndroidOpenType("1"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 urlpushRequest.setAndroidExtParameters("{\"_NOTIFICATION_BAR_STYLE_\":\"2\"}"); 3.4 BasicCustomPushNotification API 默认构造函数 BasicCustomPushNotification的默认构造函数,所有配置采用默认设置:通知方式采用震动+通知;NotificationFlag采用Notification.FLAG_AUTO_CANCEL,状态栏图标用的是android.R.drawable.stat_notify_chat。 public BasicCustomPushNotification(); 构造函数参数 drawable 状态栏图标flags NotificationFlags,支持系统Notification下的Flag参数remindType 提醒类型,有BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public BasicCustomPushNotification(int drawable, int flags, int remindType); 获取状态栏图标 获取已设置的状态栏图标 public int getStatusBarDrawable() 设置状态栏图标 更改状态栏图标设置 参数 statusBarDrawable 状态栏图标资源id public void setStatusBarDrawable(int statusBarDrawable); 获取提醒方式 获取已经设置的提醒方式 public int getRemindType(); 设置提醒方式 更改自定义通知的提醒方式 参数 remindType 提醒方式,提供的参数有:BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public void setRemindType(int remindType); 获取Notification Flags参数 获取已经设置的notification flag参数 public int getNotificationFlags(); 设置Notification Flags参数 更改自定义通知的flags参数 参数 notificationFlags 支持系统自带的Notification Flag参数 public void setNotificationFlags(int notificationFlags); 获取是否服务端设置优先 利用OpenApi或者阿里云推送控制台推送消息都可以设置提醒方式,当后端设置的提醒方式和自定义样式提醒方式冲突时,SDK根据serverOptionFirst参数来判断提醒方式策略。如果该参数为true,则采用后端设定的提醒方式;如果该参数为false,则采用自定义样式指定的提醒方式。默认为false public boolean isServerOptionFirst(); 设置是否服务端优先 更改自定义通知的serverOptionFirst参数 参数 serverOptionFirst 是否服务器配置优先 public void setServerOptionFirst(boolean serverOptionFirst); 获取推送前台到达否创建通知参数 当推送到达时,如果应用处在前台,用户可以通过自定义样式决定是否创建通知。默认是创建通知 public boolean isBuildWhenAppInForeground(); 设置推送前台到达否创建通知参数 更改当推送到达时应用处在前台情况下是否创建通知的设置 参数 buildWhenAppInForeground 是否创建通知 public void setBuildWhenAppInForeground(boolean buildWhenAppInForeground); 3.5 AdvancedCustomPushNotification API AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了上文中BasicCustomPushNotification的所有方法。 AdvancedCustomPushNotification构造函数 AdvancedCustomPushNotification类的构造函数,AdvancedCustomPushNotification没有默认构造函数 参数 view 自定义通知布局文件id。注:Notification的自定义布局是RemoteViews,和其他RemoteViews一样,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout三种布局。iconViewId 自定义布局文件中icon的viewIdtitleViewId 自定义布局文件中title的viewIdcontentViewId 自定义布局文件中显示通知正文的viewId public AdvancedCustomPushNotification( int view, int iconViewId, int titleViewId, int contentViewId); 设置通知图标 设置通知栏中显示的图标,该图标显示在iconViewId所指定的控件中。 参数 icon icon图标资源id public void setIcon(int icon); 获取通知图标 获取设置的通知图标 public int getIcon(); 3.6 CustomNotificationBuilder API CustomNotificationBuilder用于注册用户设定好的自定义样式通知 获取CustomNotificationBuilder实例 CustomNotificationBuilder是单例类,必须通过指定接口来获取实例 public static CustomNotificationBuilder getInstance(); 注册自定义样式通知 用户创建好自定义样式通知后需要将其注册,并赋予其一个特定的id 参数 customNotificationId 所注册的自定义样式通知的id,id必须大于0。如果将多个不同的自定义样式通知赋予同一个id,则最后注册的通知有效,其他的通知将会被覆盖notification 创建的通知,该通知可以是BasicCustomPushNotification对象也可以是AdvancedCustomPushNotification对象,但是不能为null 返回 该方法会返回一个boolean类型的结果,如果返回true,则注册成功;反之则失败。 public boolean setCustomNotification(int customNotificationId, BasicCustomPushNotification notification);
2019-12-01 23:11:49 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档Android API Android SDK最新版本v3.0.11。 Android参考Demo。 API索引: 1. CloudPushSDK接口 1.1 基本设置 SDK注册SDK动态注册启动信息统计获取设备标识设置日志等级动态设置appKey动态设置appSecret打开推送通道关闭推送通道查询推送通道状态设置接收消息IntentService 1.2 账号API 绑定账号解绑账号 1.3 标签API 绑定标签解绑标签查询标签 1.4 别名API 添加别名删除别名查询别名 1.5 通知设置API 设置通知声音设置通知栏图标设置状态栏图标设置免打扰时段关闭免打扰功能删除所有通知接口 1.6 自建通知统计上报API 自建通知点击上报接口自建通知删除上报接口 1.7 电话API 绑定电话解绑电话 2. MessageReceiver/AliyunMessageIntentService相关接口 2.1 消息接收回调2.2 通知接收回调2.3 通知打开回调2.4 无跳转逻辑通知打开回调2.5 通知在应用内到达回调 3. 自定义样式通知相关接口 3.1 客户端设置通知样式3.2 后端推送消息时添加自定义样式id3.3 Example BasicCustomNotification ExampleAdvancedCustomNotification ExampleOpenAPI Example 3.4 BacisCustomNotificaiton API 默认构造函数构造函数获取状态栏图标设置状态栏图标获取提醒方式设置提醒方式获取Notification Flags参数设置Notificaiton Flags参数获取是否服务端设置优先设置是否服务端优先获取推送前台到达否创建通知参数设置推送前台到达否创建通知参数 3.5 AdvancedCustomNotification API 构造函数设置通知图标获取通知图标 3.6 CustomNotificationBuilder API 获取CustomNotificationBuilder实例注册自定义样式通知 1. CloudPushService接口 以下接口调用时,如有回调,均为异步执行,且回调不能为空。 1.1基本设置 SDK注册 初始化推送SDK,关联到云通道。 参数 context 应用上下文(需要ApplicationContext)callback 回调 void register(Context context, CommonCallback callback); SDK动态注册接口 支持动态设置appKey,appSecret的注册接口 参数 context 应用上下文(需要ApplicationContext)appKey appSecretcallback 回调 void register(Context context, String appKey, String appSecret, CommonCallback callback); 启动信息统计 统计App启动信息。 void onAppStart(); 获取设备标识 获取设备唯一标识。 返回 设备唯一标识。 String getDeviceId(); 设置日志等级 需要在通道初始化之前设置;默认日志等级为CloudPushService.ERROR; 参数 logLevel 支持设置:CloudPushService.ERROR | CloudPushService.INFO | CloudPushService.DEBUG | CloudPushService.OFF(关闭Log) void setLogLevel(int logLevel); V2.3.6及以上版本支持)" class="reference-link">动态设置appKey(V2.3.6及以上版本支持) 动态设置appKey无需在manifest配置appKey务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appKey 需要设置的appKey void setAppKey(String appKey); V2.3.6及以上版本支持)" class="reference-link">动态设置appSecret(V2.3.6及以上版本支持) 动态设置appSecret无需在manifest配置appSecret务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appSecret 需要设置的appSecret void setAppSecret(String appSecret); V3.0.3及以上版本支持)" class="reference-link">打开推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态打开推送通道全量推送场景下,打开推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOnPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">关闭推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态关闭推送通道全量推送场景下,关闭推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOffPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">查询推送通道状态(V3.0.3及以上版本支持) app运行时查询当前推送通道状态如果当前为打开状态,则通过callback.success(String response)回调传入’on’;反之则传入’off’ 参数 callback 回调 void checkPushChannelStatus(CommonCallback callback); V3.0.10及以上版本支持)" class="reference-link">设置消息接收IntentService(V3.0.10及以上版本支持) 通过IntentService组件接收消息回调设置后消息将通过该组件透出,不再通过MessageReceiver设置的IntentService需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关回调方法 参数 messageIntentService 自定义接收消息IntentService的class void setPushIntentService(Class messageIntentService); 1.2 账号API 绑定账号 将应用内账号和推送通道相关联,可以实现按账号的定点消息推送;设备只能绑定一个账号,同一账号可以绑定到多个设备;同一设备更换绑定账号时无需进行解绑,重新调用绑定账号接口即可生效;若业务场景需要先解绑后绑定,在解绑账号成功回调中进行绑定绑定操作,以此保证执行的顺序性;账户名设置支持64字节。 参数 account 绑定账号名callback 回调 void bindAccount(String account, CommonCallback callback); 解绑账号 将应用内账号和推送通道取消关联。 参数 callback 回调 void unbindAccount(CommonCallback callback); 1.3 标签API 绑定标签 绑定标签到指定目标;支持向设备、账号和别名绑定标签,绑定类型由参数target指定;绑定标签在10分钟内生效;App最多支持绑定1万个标签,单个标签最大支持128字符。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void bindTag(int target, String[] tags, String alias, CommonCallback callback); 解绑标签 解绑指定目标标签;支持解绑设备、账号和别名标签,解绑类型由参数target指定;解绑标签在10分钟内生效;解绑标签只是解除设备和标签的绑定关系,不等同于删除标签,即该APP下标签仍然存在,系统目前不支持标签的删除。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名。target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void unbindTag(int target, String[] tags, String alias, CommonCallback callback); 查询标签 查询目标绑定标签,当前仅支持查询设备标签;查询结果可从回调onSuccess(response)的response获取;标签绑定成功且生效(10分钟内)后即可查询。 参数 target 目标类型,1: 本设备target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备;callback 回调 void listTags(int target, CommonCallback callback); 1.4 别名API 添加别名 设备添加别名;单个设备最多添加128个别名,且同一别名最多添加到128个设备;别名支持128字节。 参数 alias 别名callback 回调 void addAlias(String alias, CommonCallback callback); 删除别名 删除设备别名;支持删除指定别名和删除全部别名(alias = null || alias.length = 0)。 参数 alias 别名(alias = null or alias.length = 0时,删除设备全部别名)callback 回调 void removeAlias(String alias, CommonCallback callback); 查询别名 查询设备别名;查询结果可从回调onSuccess(response)的response中获取;从V3.0.9及以上版本开始,接口内部有5s短缓存,5s内多次调用只会请求服务端一次。 参数 callback 回调 void listAliases(CommonCallback callback); 1.5 通知设置API 设置通知声音 设置推送通知声音文件路径;若不调用本接口,默认获取资源id为R.raw.alicloud_notification_sound的资源文件;若没有获取到指定声音文件,取设备设置的消息声音。 参数 filePath 通知声音文件路径 void setNotificationSoundFilePath(String filePath); 设置通知栏图标 设置推送通知栏图标资源Bitmap。若不调用本接口,默认获取id为R.drawable.alicloud_notification_largeIcon的资源文件;若没有获取到指定图标文件,取App启动图标。 参数 icon 图标资源Bitmap void setNotificationLargeIcon(Bitmap icon); 设置状态栏图标 设置推送状态栏图标资源Id;若不调用本接口,默认获取id为R.drawable.alicloud_notification_smallIcon的资源文件;若没有获取到指定资源文件Id,取App启动图标。 参数 iconId 图标资源Id void setNotificationSmallIcon(int iconId); 设置免打扰时段 设置免打扰时间段,过滤所有通知与消息;免打扰时段仅支持设置一次,多次调用以最后一次调用设置时段为准;设置免打扰时段为00:00 - 00:00,可取消免打扰功能;(以下功能支持该用法,V2.3.5及以上版本使用关闭免打扰功能接口)全天免打扰可以设置为”0:0-23:59”免打扰时段设置对小米辅助弹窗通知无效。 参数 startHour 免打扰的起始时间(小时),24小时制,取值范围:0-23startMinute 免打扰起始时间(分钟),取值范围:0-59endHour 免打扰的结束时间(小时),24小时制,取值范围:0-23endMinute 免打扰结束时间(分钟),取值范围:0-59 void setDoNotDisturb(int startHour, int startMinute, int endHour, int endMinute, CommonCallback callback); V2.3.5及以上版本支持)" class="reference-link">关闭免打扰功能(V2.3.5及以上版本支持) 关闭后,先前设置的免打扰时段失效免打扰功能默认是关闭的没有对应的开发免打扰功能接口,调用设置免打扰功能时段功能后自动打开免打扰功能 void closeDoNotDisturbMode(); V2.3.7及以上版本支持)" class="reference-link">删除所有通知接口(V2.3.7及以上版本支持) 删除推送SDK创建的所有通知若需要实现精准删除特定通知可以在onNotification回调中获取通知id,自行删除 void clearNotifications(); V3.0.6及以上版本支持)" class="reference-link">1.6 自建通知统计上报API(V3.0.6及以上版本支持) 本接口主要针对统计用户自建通知(通过阿里云推送发送透传消息,并在onMessage回调中自行创建通知)的删除/点击事件上报,其相关实现可以参考移动推送Android SDK:透传消息+用户自建通知最佳实践,如果您直接通过阿里云推送通知,无需使用相关接口。 自建通知点击上报接口 上报自建通知的点击事件请确保同一消息仅上报一次 参数 message 要上报点击事件的消息实例 void clickMessage(CPushMessage message); 自建通知删除上报接口 上报自建通知的删除事件请确保同一消息仅上报一次 参数 message 要上报删除事件的消息实例 void dismissMessage(CPushMessage message); V3.0.11及以上版本支持)" class="reference-link">1.7 电话API(V3.0.11及以上版本支持) 为提高信息的到达率和实效性,扩展推送的使用场景,我们推出了推送与短信的融合通知模式。开发者可以设置在一定时间内,如果用户未收到或未点击推送,通过短信补发通知用户。具体方案可参考:推送短信融合。 为实现推送短信融合方案,需要在终端接入绑定/解绑电话号接口,接口详情如下。 绑定电话号将设备与电话号绑定 参数 phoneNumber 要绑定的手机号callback 回调 void bindPhoneNumber(String phoneNumber, CommonCallback callback); 解绑电话号解除当前设备与电话号的绑定关系 参数 callback 回调 void unbindPhoneNumber(CommonCallback callback); 2. MessageReceiver/AliyunMessageIntentService 通过继承MessageReciever,可以拦截通知,接收消息,获取推送中的扩展字段。或者在通知打开或删除的时候,切入进行后续处理。如果调用了setPushIntentService,则需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关方法,AliyunMessageIntentService所有消息回调同MessageReceiver一致。 使用方法: MessageReceiver 继承com.alibaba.sdk.android.push.MessageReceiver;在Manifest中找到原来MessageReceiver的配置,将上边的class替换成你自己的receiver[不要配置多个]。 <!--消息接收监听器--><receiver android:name="com.alibaba.sdk.android.push.MessageReceiver <-- 把这里替换成你自己的receiver"> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/> </intent-filter> ... ...</receiver> AliyunMessageIntentService 继承com.alibaba.sdk.android.push.AliyunMessageIntentService并覆写相关方法在Manifest中注册该service <service android:name="MyPushIntentService" > <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.sdk.android.push.RECEIVE" /> </intent-filter> </service> 消息接收回调 用于接收服务端推送的消息。消息不会弹窗,而是回调该方法。 参数 context 上下文环境message CPushMessage类型,可以获取消息Id、消息标题和内容。 void onMessage(Context context, CPushMessage message); 通知接收回调 客户端接收到通知后,回调该方法。可获取到并处理通知相关的参数。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotification(Context context, String title, String summary, Map<String, String> extraMap) 通知打开回调 打开通知时会回调该方法,通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationOpened(Context context, String title, String summary, String extraMap); 无跳转逻辑通知打开回调 打开无跳转逻辑(open=4)通知时回调该方法(v2.3.2及以上版本支持),通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap); 通知删除回调 删除通知时回调该方法,通知删除上报由SDK自动完成。 参数 context 上下文环境messageId 删除通知的Id void onNotificationRemoved(Context context, String messageId); 通知在应用内到达回调 当用户创建自定义通知样式,并且设置推送应用内到达不创建通知弹窗时调用该回调,且此时不调用onNotification回调(v2.3.3及以上版本支持) 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数openType 原本通知打开方式,1:打开APP;2:打开activity;3:打开URL;4:无跳转逻辑openActivity 所要打开的activity的名称,仅当openType=2时有效,其余情况为nullopenUrl 所要打开的URL,仅当openType=3时有效,其余情况为null void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl); V2.3.3及以上版本开始支持)" class="reference-link">3. 自定义样式通知(V2.3.3及以上版本开始支持)Android Push SDK支持用户自定义通知样式,用户可以设定自己的通知样式,涉及的内容包括通知的提醒方式(声音、震动、静默),通知在状态栏的显示图标,推送消息应用内到达时是否创建通知以及自定义通知布局文件等。自定义样式通知的设置包括两部分: 3.1 客户端设置通知样式 用户利用SDK提供的自定义通知样式接口创建自定义样式通知。SDK中有两个自定义样式通知类:1)BasicCustomPushNotification;2)AdvancedCustomPushNotification。其中BasicCustomPushNotification用户设置基础样式,包括提醒方式、状态栏图标以及当推送消息到达时应用正处于前台情况下是否创建该通知等。AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了BasicCustomPushNotification的所有方法,同时还可以设置通知样式布局文件每个样式都需要对应一个特定的整数类型id,如果多个样式设置为同一个id,则最后设置的样式有效。如果SDK没有找到对应id的样式则会创建默认样式的通知样式只需设置一次,SDK会记住这个设置,在需要使用时加载对应样式具体使用例子请参考Demo 3.2 后端推送消息时添加自定义样式id 用户利用OpenApi推送消息时设定特定样式的id服务端不能设置样式,只能指定需要展现的样式id指定id的样式必须在客户端已经进行设置,否则SDK会创建默认样式的通知 3.3 Example BasicCustomPushNotification" class="reference-link">Example-BasicCustomPushNotificationBasicCustomPushNotification notification = new BasicCustomPushNotification();notification.setRemindType(BasicCustomPushNotification.REMIND_TYPE_SOUND);notification.setStatusBarDrawable(R.drawable.logo_yuanjiao_120);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(1, notification); AdvancedCustomPushNotification" class="reference-link">Example-AdvancedCustomPushNotificationAdvancedCustomPushNotification notification = new AdvancedCustomPushNotification(R.layout.notitfication_layout, R.id.m_icon, R.id.m_title, R.id.m_text);notification.setServerOptionFirst(true);notification.setBuildWhenAppInForeground(false);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(2, notification); OpenApi" class="reference-link">Example-OpenApi客户端设置完成后,服务端在推送通知时需要利用OpenApi指明对应的自定义样式ID final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");final String date = dateFormat.format(new Date());PushRequest pushRequest = new PushRequest();// 推送目标pushRequest.setAppKey(appKey);pushRequest.setTarget("device"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部pushRequest.setTargetValue("deviceId"); // 推送配置pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知pushRequest.setTitle(date); // 消息的标题pushRequest.setBody("PushRequest body"); // 消息的内容pushRequest.setSummary("PushRequest summary"); // 通知的摘要pushRequest.setAndroidNotificationBarType(2);//设置的通知样式ID,通知栏自定义样式范围0-100// 推送配置: AndroidpushRequest.setAndroidOpenType("1"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 urlpushRequest.setAndroidExtParameters("{\"_NOTIFICATION_BAR_STYLE_\":\"2\"}"); 3.4 BasicCustomPushNotification API 默认构造函数 BasicCustomPushNotification的默认构造函数,所有配置采用默认设置:通知方式采用震动+通知;NotificationFlag采用Notification.FLAG_AUTO_CANCEL,状态栏图标用的是android.R.drawable.stat_notify_chat。 public BasicCustomPushNotification(); 构造函数参数 drawable 状态栏图标flags NotificationFlags,支持系统Notification下的Flag参数remindType 提醒类型,有BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public BasicCustomPushNotification(int drawable, int flags, int remindType); 获取状态栏图标 获取已设置的状态栏图标 public int getStatusBarDrawable() 设置状态栏图标 更改状态栏图标设置 参数 statusBarDrawable 状态栏图标资源id public void setStatusBarDrawable(int statusBarDrawable); 获取提醒方式 获取已经设置的提醒方式 public int getRemindType(); 设置提醒方式 更改自定义通知的提醒方式 参数 remindType 提醒方式,提供的参数有:BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public void setRemindType(int remindType); 获取Notification Flags参数 获取已经设置的notification flag参数 public int getNotificationFlags(); 设置Notification Flags参数 更改自定义通知的flags参数 参数 notificationFlags 支持系统自带的Notification Flag参数 public void setNotificationFlags(int notificationFlags); 获取是否服务端设置优先 利用OpenApi或者阿里云推送控制台推送消息都可以设置提醒方式,当后端设置的提醒方式和自定义样式提醒方式冲突时,SDK根据serverOptionFirst参数来判断提醒方式策略。如果该参数为true,则采用后端设定的提醒方式;如果该参数为false,则采用自定义样式指定的提醒方式。默认为false public boolean isServerOptionFirst(); 设置是否服务端优先 更改自定义通知的serverOptionFirst参数 参数 serverOptionFirst 是否服务器配置优先 public void setServerOptionFirst(boolean serverOptionFirst); 获取推送前台到达否创建通知参数 当推送到达时,如果应用处在前台,用户可以通过自定义样式决定是否创建通知。默认是创建通知 public boolean isBuildWhenAppInForeground(); 设置推送前台到达否创建通知参数 更改当推送到达时应用处在前台情况下是否创建通知的设置 参数 buildWhenAppInForeground 是否创建通知 public void setBuildWhenAppInForeground(boolean buildWhenAppInForeground); 3.5 AdvancedCustomPushNotification API AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了上文中BasicCustomPushNotification的所有方法。 AdvancedCustomPushNotification构造函数 AdvancedCustomPushNotification类的构造函数,AdvancedCustomPushNotification没有默认构造函数 参数 view 自定义通知布局文件id。注:Notification的自定义布局是RemoteViews,和其他RemoteViews一样,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout三种布局。iconViewId 自定义布局文件中icon的viewIdtitleViewId 自定义布局文件中title的viewIdcontentViewId 自定义布局文件中显示通知正文的viewId public AdvancedCustomPushNotification( int view, int iconViewId, int titleViewId, int contentViewId); 设置通知图标 设置通知栏中显示的图标,该图标显示在iconViewId所指定的控件中。 参数 icon icon图标资源id public void setIcon(int icon); 获取通知图标 获取设置的通知图标 public int getIcon(); 3.6 CustomNotificationBuilder API CustomNotificationBuilder用于注册用户设定好的自定义样式通知 获取CustomNotificationBuilder实例 CustomNotificationBuilder是单例类,必须通过指定接口来获取实例 public static CustomNotificationBuilder getInstance(); 注册自定义样式通知 用户创建好自定义样式通知后需要将其注册,并赋予其一个特定的id 参数 customNotificationId 所注册的自定义样式通知的id,id必须大于0。如果将多个不同的自定义样式通知赋予同一个id,则最后注册的通知有效,其他的通知将会被覆盖notification 创建的通知,该通知可以是BasicCustomPushNotification对象也可以是AdvancedCustomPushNotification对象,但是不能为null 返回 该方法会返回一个boolean类型的结果,如果返回true,则注册成功;反之则失败。 public boolean setCustomNotification(int customNotificationId, BasicCustomPushNotification notification);
2019-12-01 23:11:48 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档Android API Android SDK最新版本v3.0.11。 Android参考Demo。 API索引: 1. CloudPushSDK接口 1.1 基本设置 SDK注册SDK动态注册启动信息统计获取设备标识设置日志等级动态设置appKey动态设置appSecret打开推送通道关闭推送通道查询推送通道状态设置接收消息IntentService 1.2 账号API 绑定账号解绑账号 1.3 标签API 绑定标签解绑标签查询标签 1.4 别名API 添加别名删除别名查询别名 1.5 通知设置API 设置通知声音设置通知栏图标设置状态栏图标设置免打扰时段关闭免打扰功能删除所有通知接口 1.6 自建通知统计上报API 自建通知点击上报接口自建通知删除上报接口 1.7 电话API 绑定电话解绑电话 2. MessageReceiver/AliyunMessageIntentService相关接口 2.1 消息接收回调2.2 通知接收回调2.3 通知打开回调2.4 无跳转逻辑通知打开回调2.5 通知在应用内到达回调 3. 自定义样式通知相关接口 3.1 客户端设置通知样式3.2 后端推送消息时添加自定义样式id3.3 Example BasicCustomNotification ExampleAdvancedCustomNotification ExampleOpenAPI Example 3.4 BacisCustomNotificaiton API 默认构造函数构造函数获取状态栏图标设置状态栏图标获取提醒方式设置提醒方式获取Notification Flags参数设置Notificaiton Flags参数获取是否服务端设置优先设置是否服务端优先获取推送前台到达否创建通知参数设置推送前台到达否创建通知参数 3.5 AdvancedCustomNotification API 构造函数设置通知图标获取通知图标 3.6 CustomNotificationBuilder API 获取CustomNotificationBuilder实例注册自定义样式通知 1. CloudPushService接口 以下接口调用时,如有回调,均为异步执行,且回调不能为空。 1.1基本设置 SDK注册 初始化推送SDK,关联到云通道。 参数 context 应用上下文(需要ApplicationContext)callback 回调 void register(Context context, CommonCallback callback); SDK动态注册接口 支持动态设置appKey,appSecret的注册接口 参数 context 应用上下文(需要ApplicationContext)appKey appSecretcallback 回调 void register(Context context, String appKey, String appSecret, CommonCallback callback); 启动信息统计 统计App启动信息。 void onAppStart(); 获取设备标识 获取设备唯一标识。 返回 设备唯一标识。 String getDeviceId(); 设置日志等级 需要在通道初始化之前设置;默认日志等级为CloudPushService.ERROR; 参数 logLevel 支持设置:CloudPushService.ERROR | CloudPushService.INFO | CloudPushService.DEBUG | CloudPushService.OFF(关闭Log) void setLogLevel(int logLevel); V2.3.6及以上版本支持)" class="reference-link">动态设置appKey(V2.3.6及以上版本支持) 动态设置appKey无需在manifest配置appKey务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appKey 需要设置的appKey void setAppKey(String appKey); V2.3.6及以上版本支持)" class="reference-link">动态设置appSecret(V2.3.6及以上版本支持) 动态设置appSecret无需在manifest配置appSecret务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appSecret 需要设置的appSecret void setAppSecret(String appSecret); V3.0.3及以上版本支持)" class="reference-link">打开推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态打开推送通道全量推送场景下,打开推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOnPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">关闭推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态关闭推送通道全量推送场景下,关闭推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOffPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">查询推送通道状态(V3.0.3及以上版本支持) app运行时查询当前推送通道状态如果当前为打开状态,则通过callback.success(String response)回调传入’on’;反之则传入’off’ 参数 callback 回调 void checkPushChannelStatus(CommonCallback callback); V3.0.10及以上版本支持)" class="reference-link">设置消息接收IntentService(V3.0.10及以上版本支持) 通过IntentService组件接收消息回调设置后消息将通过该组件透出,不再通过MessageReceiver设置的IntentService需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关回调方法 参数 messageIntentService 自定义接收消息IntentService的class void setPushIntentService(Class messageIntentService); 1.2 账号API 绑定账号 将应用内账号和推送通道相关联,可以实现按账号的定点消息推送;设备只能绑定一个账号,同一账号可以绑定到多个设备;同一设备更换绑定账号时无需进行解绑,重新调用绑定账号接口即可生效;若业务场景需要先解绑后绑定,在解绑账号成功回调中进行绑定绑定操作,以此保证执行的顺序性;账户名设置支持64字节。 参数 account 绑定账号名callback 回调 void bindAccount(String account, CommonCallback callback); 解绑账号 将应用内账号和推送通道取消关联。 参数 callback 回调 void unbindAccount(CommonCallback callback); 1.3 标签API 绑定标签 绑定标签到指定目标;支持向设备、账号和别名绑定标签,绑定类型由参数target指定;绑定标签在10分钟内生效;App最多支持绑定1万个标签,单个标签最大支持128字符。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void bindTag(int target, String[] tags, String alias, CommonCallback callback); 解绑标签 解绑指定目标标签;支持解绑设备、账号和别名标签,解绑类型由参数target指定;解绑标签在10分钟内生效;解绑标签只是解除设备和标签的绑定关系,不等同于删除标签,即该APP下标签仍然存在,系统目前不支持标签的删除。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名。target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void unbindTag(int target, String[] tags, String alias, CommonCallback callback); 查询标签 查询目标绑定标签,当前仅支持查询设备标签;查询结果可从回调onSuccess(response)的response获取;标签绑定成功且生效(10分钟内)后即可查询。 参数 target 目标类型,1: 本设备target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备;callback 回调 void listTags(int target, CommonCallback callback); 1.4 别名API 添加别名 设备添加别名;单个设备最多添加128个别名,且同一别名最多添加到128个设备;别名支持128字节。 参数 alias 别名callback 回调 void addAlias(String alias, CommonCallback callback); 删除别名 删除设备别名;支持删除指定别名和删除全部别名(alias = null || alias.length = 0)。 参数 alias 别名(alias = null or alias.length = 0时,删除设备全部别名)callback 回调 void removeAlias(String alias, CommonCallback callback); 查询别名 查询设备别名;查询结果可从回调onSuccess(response)的response中获取;从V3.0.9及以上版本开始,接口内部有5s短缓存,5s内多次调用只会请求服务端一次。 参数 callback 回调 void listAliases(CommonCallback callback); 1.5 通知设置API 设置通知声音 设置推送通知声音文件路径;若不调用本接口,默认获取资源id为R.raw.alicloud_notification_sound的资源文件;若没有获取到指定声音文件,取设备设置的消息声音。 参数 filePath 通知声音文件路径 void setNotificationSoundFilePath(String filePath); 设置通知栏图标 设置推送通知栏图标资源Bitmap。若不调用本接口,默认获取id为R.drawable.alicloud_notification_largeIcon的资源文件;若没有获取到指定图标文件,取App启动图标。 参数 icon 图标资源Bitmap void setNotificationLargeIcon(Bitmap icon); 设置状态栏图标 设置推送状态栏图标资源Id;若不调用本接口,默认获取id为R.drawable.alicloud_notification_smallIcon的资源文件;若没有获取到指定资源文件Id,取App启动图标。 参数 iconId 图标资源Id void setNotificationSmallIcon(int iconId); 设置免打扰时段 设置免打扰时间段,过滤所有通知与消息;免打扰时段仅支持设置一次,多次调用以最后一次调用设置时段为准;设置免打扰时段为00:00 - 00:00,可取消免打扰功能;(以下功能支持该用法,V2.3.5及以上版本使用关闭免打扰功能接口)全天免打扰可以设置为”0:0-23:59”免打扰时段设置对小米辅助弹窗通知无效。 参数 startHour 免打扰的起始时间(小时),24小时制,取值范围:0-23startMinute 免打扰起始时间(分钟),取值范围:0-59endHour 免打扰的结束时间(小时),24小时制,取值范围:0-23endMinute 免打扰结束时间(分钟),取值范围:0-59 void setDoNotDisturb(int startHour, int startMinute, int endHour, int endMinute, CommonCallback callback); V2.3.5及以上版本支持)" class="reference-link">关闭免打扰功能(V2.3.5及以上版本支持) 关闭后,先前设置的免打扰时段失效免打扰功能默认是关闭的没有对应的开发免打扰功能接口,调用设置免打扰功能时段功能后自动打开免打扰功能 void closeDoNotDisturbMode(); V2.3.7及以上版本支持)" class="reference-link">删除所有通知接口(V2.3.7及以上版本支持) 删除推送SDK创建的所有通知若需要实现精准删除特定通知可以在onNotification回调中获取通知id,自行删除 void clearNotifications(); V3.0.6及以上版本支持)" class="reference-link">1.6 自建通知统计上报API(V3.0.6及以上版本支持) 本接口主要针对统计用户自建通知(通过阿里云推送发送透传消息,并在onMessage回调中自行创建通知)的删除/点击事件上报,其相关实现可以参考移动推送Android SDK:透传消息+用户自建通知最佳实践,如果您直接通过阿里云推送通知,无需使用相关接口。 自建通知点击上报接口 上报自建通知的点击事件请确保同一消息仅上报一次 参数 message 要上报点击事件的消息实例 void clickMessage(CPushMessage message); 自建通知删除上报接口 上报自建通知的删除事件请确保同一消息仅上报一次 参数 message 要上报删除事件的消息实例 void dismissMessage(CPushMessage message); V3.0.11及以上版本支持)" class="reference-link">1.7 电话API(V3.0.11及以上版本支持) 为提高信息的到达率和实效性,扩展推送的使用场景,我们推出了推送与短信的融合通知模式。开发者可以设置在一定时间内,如果用户未收到或未点击推送,通过短信补发通知用户。具体方案可参考:推送短信融合。 为实现推送短信融合方案,需要在终端接入绑定/解绑电话号接口,接口详情如下。 绑定电话号将设备与电话号绑定 参数 phoneNumber 要绑定的手机号callback 回调 void bindPhoneNumber(String phoneNumber, CommonCallback callback); 解绑电话号解除当前设备与电话号的绑定关系 参数 callback 回调 void unbindPhoneNumber(CommonCallback callback); 2. MessageReceiver/AliyunMessageIntentService 通过继承MessageReciever,可以拦截通知,接收消息,获取推送中的扩展字段。或者在通知打开或删除的时候,切入进行后续处理。如果调用了setPushIntentService,则需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关方法,AliyunMessageIntentService所有消息回调同MessageReceiver一致。 使用方法: MessageReceiver 继承com.alibaba.sdk.android.push.MessageReceiver;在Manifest中找到原来MessageReceiver的配置,将上边的class替换成你自己的receiver[不要配置多个]。 <!--消息接收监听器--><receiver android:name="com.alibaba.sdk.android.push.MessageReceiver <-- 把这里替换成你自己的receiver"> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/> </intent-filter> ... ...</receiver> AliyunMessageIntentService 继承com.alibaba.sdk.android.push.AliyunMessageIntentService并覆写相关方法在Manifest中注册该service <service android:name="MyPushIntentService" > <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.sdk.android.push.RECEIVE" /> </intent-filter> </service> 消息接收回调 用于接收服务端推送的消息。消息不会弹窗,而是回调该方法。 参数 context 上下文环境message CPushMessage类型,可以获取消息Id、消息标题和内容。 void onMessage(Context context, CPushMessage message); 通知接收回调 客户端接收到通知后,回调该方法。可获取到并处理通知相关的参数。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotification(Context context, String title, String summary, Map<String, String> extraMap) 通知打开回调 打开通知时会回调该方法,通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationOpened(Context context, String title, String summary, String extraMap); 无跳转逻辑通知打开回调 打开无跳转逻辑(open=4)通知时回调该方法(v2.3.2及以上版本支持),通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap); 通知删除回调 删除通知时回调该方法,通知删除上报由SDK自动完成。 参数 context 上下文环境messageId 删除通知的Id void onNotificationRemoved(Context context, String messageId); 通知在应用内到达回调 当用户创建自定义通知样式,并且设置推送应用内到达不创建通知弹窗时调用该回调,且此时不调用onNotification回调(v2.3.3及以上版本支持) 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数openType 原本通知打开方式,1:打开APP;2:打开activity;3:打开URL;4:无跳转逻辑openActivity 所要打开的activity的名称,仅当openType=2时有效,其余情况为nullopenUrl 所要打开的URL,仅当openType=3时有效,其余情况为null void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl); V2.3.3及以上版本开始支持)" class="reference-link">3. 自定义样式通知(V2.3.3及以上版本开始支持)Android Push SDK支持用户自定义通知样式,用户可以设定自己的通知样式,涉及的内容包括通知的提醒方式(声音、震动、静默),通知在状态栏的显示图标,推送消息应用内到达时是否创建通知以及自定义通知布局文件等。自定义样式通知的设置包括两部分: 3.1 客户端设置通知样式 用户利用SDK提供的自定义通知样式接口创建自定义样式通知。SDK中有两个自定义样式通知类:1)BasicCustomPushNotification;2)AdvancedCustomPushNotification。其中BasicCustomPushNotification用户设置基础样式,包括提醒方式、状态栏图标以及当推送消息到达时应用正处于前台情况下是否创建该通知等。AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了BasicCustomPushNotification的所有方法,同时还可以设置通知样式布局文件每个样式都需要对应一个特定的整数类型id,如果多个样式设置为同一个id,则最后设置的样式有效。如果SDK没有找到对应id的样式则会创建默认样式的通知样式只需设置一次,SDK会记住这个设置,在需要使用时加载对应样式具体使用例子请参考Demo 3.2 后端推送消息时添加自定义样式id 用户利用OpenApi推送消息时设定特定样式的id服务端不能设置样式,只能指定需要展现的样式id指定id的样式必须在客户端已经进行设置,否则SDK会创建默认样式的通知 3.3 Example BasicCustomPushNotification" class="reference-link">Example-BasicCustomPushNotificationBasicCustomPushNotification notification = new BasicCustomPushNotification();notification.setRemindType(BasicCustomPushNotification.REMIND_TYPE_SOUND);notification.setStatusBarDrawable(R.drawable.logo_yuanjiao_120);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(1, notification); AdvancedCustomPushNotification" class="reference-link">Example-AdvancedCustomPushNotificationAdvancedCustomPushNotification notification = new AdvancedCustomPushNotification(R.layout.notitfication_layout, R.id.m_icon, R.id.m_title, R.id.m_text);notification.setServerOptionFirst(true);notification.setBuildWhenAppInForeground(false);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(2, notification); OpenApi" class="reference-link">Example-OpenApi客户端设置完成后,服务端在推送通知时需要利用OpenApi指明对应的自定义样式ID final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");final String date = dateFormat.format(new Date());PushRequest pushRequest = new PushRequest();// 推送目标pushRequest.setAppKey(appKey);pushRequest.setTarget("device"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部pushRequest.setTargetValue("deviceId"); // 推送配置pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知pushRequest.setTitle(date); // 消息的标题pushRequest.setBody("PushRequest body"); // 消息的内容pushRequest.setSummary("PushRequest summary"); // 通知的摘要pushRequest.setAndroidNotificationBarType(2);//设置的通知样式ID,通知栏自定义样式范围0-100// 推送配置: AndroidpushRequest.setAndroidOpenType("1"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 urlpushRequest.setAndroidExtParameters("{\"_NOTIFICATION_BAR_STYLE_\":\"2\"}"); 3.4 BasicCustomPushNotification API 默认构造函数 BasicCustomPushNotification的默认构造函数,所有配置采用默认设置:通知方式采用震动+通知;NotificationFlag采用Notification.FLAG_AUTO_CANCEL,状态栏图标用的是android.R.drawable.stat_notify_chat。 public BasicCustomPushNotification(); 构造函数参数 drawable 状态栏图标flags NotificationFlags,支持系统Notification下的Flag参数remindType 提醒类型,有BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public BasicCustomPushNotification(int drawable, int flags, int remindType); 获取状态栏图标 获取已设置的状态栏图标 public int getStatusBarDrawable() 设置状态栏图标 更改状态栏图标设置 参数 statusBarDrawable 状态栏图标资源id public void setStatusBarDrawable(int statusBarDrawable); 获取提醒方式 获取已经设置的提醒方式 public int getRemindType(); 设置提醒方式 更改自定义通知的提醒方式 参数 remindType 提醒方式,提供的参数有:BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public void setRemindType(int remindType); 获取Notification Flags参数 获取已经设置的notification flag参数 public int getNotificationFlags(); 设置Notification Flags参数 更改自定义通知的flags参数 参数 notificationFlags 支持系统自带的Notification Flag参数 public void setNotificationFlags(int notificationFlags); 获取是否服务端设置优先 利用OpenApi或者阿里云推送控制台推送消息都可以设置提醒方式,当后端设置的提醒方式和自定义样式提醒方式冲突时,SDK根据serverOptionFirst参数来判断提醒方式策略。如果该参数为true,则采用后端设定的提醒方式;如果该参数为false,则采用自定义样式指定的提醒方式。默认为false public boolean isServerOptionFirst(); 设置是否服务端优先 更改自定义通知的serverOptionFirst参数 参数 serverOptionFirst 是否服务器配置优先 public void setServerOptionFirst(boolean serverOptionFirst); 获取推送前台到达否创建通知参数 当推送到达时,如果应用处在前台,用户可以通过自定义样式决定是否创建通知。默认是创建通知 public boolean isBuildWhenAppInForeground(); 设置推送前台到达否创建通知参数 更改当推送到达时应用处在前台情况下是否创建通知的设置 参数 buildWhenAppInForeground 是否创建通知 public void setBuildWhenAppInForeground(boolean buildWhenAppInForeground); 3.5 AdvancedCustomPushNotification API AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了上文中BasicCustomPushNotification的所有方法。 AdvancedCustomPushNotification构造函数 AdvancedCustomPushNotification类的构造函数,AdvancedCustomPushNotification没有默认构造函数 参数 view 自定义通知布局文件id。注:Notification的自定义布局是RemoteViews,和其他RemoteViews一样,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout三种布局。iconViewId 自定义布局文件中icon的viewIdtitleViewId 自定义布局文件中title的viewIdcontentViewId 自定义布局文件中显示通知正文的viewId public AdvancedCustomPushNotification( int view, int iconViewId, int titleViewId, int contentViewId); 设置通知图标 设置通知栏中显示的图标,该图标显示在iconViewId所指定的控件中。 参数 icon icon图标资源id public void setIcon(int icon); 获取通知图标 获取设置的通知图标 public int getIcon(); 3.6 CustomNotificationBuilder API CustomNotificationBuilder用于注册用户设定好的自定义样式通知 获取CustomNotificationBuilder实例 CustomNotificationBuilder是单例类,必须通过指定接口来获取实例 public static CustomNotificationBuilder getInstance(); 注册自定义样式通知 用户创建好自定义样式通知后需要将其注册,并赋予其一个特定的id 参数 customNotificationId 所注册的自定义样式通知的id,id必须大于0。如果将多个不同的自定义样式通知赋予同一个id,则最后注册的通知有效,其他的通知将会被覆盖notification 创建的通知,该通知可以是BasicCustomPushNotification对象也可以是AdvancedCustomPushNotification对象,但是不能为null 返回 该方法会返回一个boolean类型的结果,如果返回true,则注册成功;反之则失败。 public boolean setCustomNotification(int customNotificationId, BasicCustomPushNotification notification);
2019-12-01 23:11:49 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档Android API Android SDK最新版本v3.0.11。 Android参考Demo。 API索引: 1. CloudPushSDK接口 1.1 基本设置 SDK注册SDK动态注册启动信息统计获取设备标识设置日志等级动态设置appKey动态设置appSecret打开推送通道关闭推送通道查询推送通道状态设置接收消息IntentService 1.2 账号API 绑定账号解绑账号 1.3 标签API 绑定标签解绑标签查询标签 1.4 别名API 添加别名删除别名查询别名 1.5 通知设置API 设置通知声音设置通知栏图标设置状态栏图标设置免打扰时段关闭免打扰功能删除所有通知接口 1.6 自建通知统计上报API 自建通知点击上报接口自建通知删除上报接口 1.7 电话API 绑定电话解绑电话 2. MessageReceiver/AliyunMessageIntentService相关接口 2.1 消息接收回调2.2 通知接收回调2.3 通知打开回调2.4 无跳转逻辑通知打开回调2.5 通知在应用内到达回调 3. 自定义样式通知相关接口 3.1 客户端设置通知样式3.2 后端推送消息时添加自定义样式id3.3 Example BasicCustomNotification ExampleAdvancedCustomNotification ExampleOpenAPI Example 3.4 BacisCustomNotificaiton API 默认构造函数构造函数获取状态栏图标设置状态栏图标获取提醒方式设置提醒方式获取Notification Flags参数设置Notificaiton Flags参数获取是否服务端设置优先设置是否服务端优先获取推送前台到达否创建通知参数设置推送前台到达否创建通知参数 3.5 AdvancedCustomNotification API 构造函数设置通知图标获取通知图标 3.6 CustomNotificationBuilder API 获取CustomNotificationBuilder实例注册自定义样式通知 1. CloudPushService接口 以下接口调用时,如有回调,均为异步执行,且回调不能为空。 1.1基本设置 SDK注册 初始化推送SDK,关联到云通道。 参数 context 应用上下文(需要ApplicationContext)callback 回调 void register(Context context, CommonCallback callback); SDK动态注册接口 支持动态设置appKey,appSecret的注册接口 参数 context 应用上下文(需要ApplicationContext)appKey appSecretcallback 回调 void register(Context context, String appKey, String appSecret, CommonCallback callback); 启动信息统计 统计App启动信息。 void onAppStart(); 获取设备标识 获取设备唯一标识。 返回 设备唯一标识。 String getDeviceId(); 设置日志等级 需要在通道初始化之前设置;默认日志等级为CloudPushService.ERROR; 参数 logLevel 支持设置:CloudPushService.ERROR | CloudPushService.INFO | CloudPushService.DEBUG | CloudPushService.OFF(关闭Log) void setLogLevel(int logLevel); V2.3.6及以上版本支持)" class="reference-link">动态设置appKey(V2.3.6及以上版本支持) 动态设置appKey无需在manifest配置appKey务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appKey 需要设置的appKey void setAppKey(String appKey); V2.3.6及以上版本支持)" class="reference-link">动态设置appSecret(V2.3.6及以上版本支持) 动态设置appSecret无需在manifest配置appSecret务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appSecret 需要设置的appSecret void setAppSecret(String appSecret); V3.0.3及以上版本支持)" class="reference-link">打开推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态打开推送通道全量推送场景下,打开推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOnPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">关闭推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态关闭推送通道全量推送场景下,关闭推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOffPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">查询推送通道状态(V3.0.3及以上版本支持) app运行时查询当前推送通道状态如果当前为打开状态,则通过callback.success(String response)回调传入’on’;反之则传入’off’ 参数 callback 回调 void checkPushChannelStatus(CommonCallback callback); V3.0.10及以上版本支持)" class="reference-link">设置消息接收IntentService(V3.0.10及以上版本支持) 通过IntentService组件接收消息回调设置后消息将通过该组件透出,不再通过MessageReceiver设置的IntentService需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关回调方法 参数 messageIntentService 自定义接收消息IntentService的class void setPushIntentService(Class messageIntentService); 1.2 账号API 绑定账号 将应用内账号和推送通道相关联,可以实现按账号的定点消息推送;设备只能绑定一个账号,同一账号可以绑定到多个设备;同一设备更换绑定账号时无需进行解绑,重新调用绑定账号接口即可生效;若业务场景需要先解绑后绑定,在解绑账号成功回调中进行绑定绑定操作,以此保证执行的顺序性;账户名设置支持64字节。 参数 account 绑定账号名callback 回调 void bindAccount(String account, CommonCallback callback); 解绑账号 将应用内账号和推送通道取消关联。 参数 callback 回调 void unbindAccount(CommonCallback callback); 1.3 标签API 绑定标签 绑定标签到指定目标;支持向设备、账号和别名绑定标签,绑定类型由参数target指定;绑定标签在10分钟内生效;App最多支持绑定1万个标签,单个标签最大支持128字符。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void bindTag(int target, String[] tags, String alias, CommonCallback callback); 解绑标签 解绑指定目标标签;支持解绑设备、账号和别名标签,解绑类型由参数target指定;解绑标签在10分钟内生效;解绑标签只是解除设备和标签的绑定关系,不等同于删除标签,即该APP下标签仍然存在,系统目前不支持标签的删除。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名。target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void unbindTag(int target, String[] tags, String alias, CommonCallback callback); 查询标签 查询目标绑定标签,当前仅支持查询设备标签;查询结果可从回调onSuccess(response)的response获取;标签绑定成功且生效(10分钟内)后即可查询。 参数 target 目标类型,1: 本设备target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备;callback 回调 void listTags(int target, CommonCallback callback); 1.4 别名API 添加别名 设备添加别名;单个设备最多添加128个别名,且同一别名最多添加到128个设备;别名支持128字节。 参数 alias 别名callback 回调 void addAlias(String alias, CommonCallback callback); 删除别名 删除设备别名;支持删除指定别名和删除全部别名(alias = null || alias.length = 0)。 参数 alias 别名(alias = null or alias.length = 0时,删除设备全部别名)callback 回调 void removeAlias(String alias, CommonCallback callback); 查询别名 查询设备别名;查询结果可从回调onSuccess(response)的response中获取;从V3.0.9及以上版本开始,接口内部有5s短缓存,5s内多次调用只会请求服务端一次。 参数 callback 回调 void listAliases(CommonCallback callback); 1.5 通知设置API 设置通知声音 设置推送通知声音文件路径;若不调用本接口,默认获取资源id为R.raw.alicloud_notification_sound的资源文件;若没有获取到指定声音文件,取设备设置的消息声音。 参数 filePath 通知声音文件路径 void setNotificationSoundFilePath(String filePath); 设置通知栏图标 设置推送通知栏图标资源Bitmap。若不调用本接口,默认获取id为R.drawable.alicloud_notification_largeIcon的资源文件;若没有获取到指定图标文件,取App启动图标。 参数 icon 图标资源Bitmap void setNotificationLargeIcon(Bitmap icon); 设置状态栏图标 设置推送状态栏图标资源Id;若不调用本接口,默认获取id为R.drawable.alicloud_notification_smallIcon的资源文件;若没有获取到指定资源文件Id,取App启动图标。 参数 iconId 图标资源Id void setNotificationSmallIcon(int iconId); 设置免打扰时段 设置免打扰时间段,过滤所有通知与消息;免打扰时段仅支持设置一次,多次调用以最后一次调用设置时段为准;设置免打扰时段为00:00 - 00:00,可取消免打扰功能;(以下功能支持该用法,V2.3.5及以上版本使用关闭免打扰功能接口)全天免打扰可以设置为”0:0-23:59”免打扰时段设置对小米辅助弹窗通知无效。 参数 startHour 免打扰的起始时间(小时),24小时制,取值范围:0-23startMinute 免打扰起始时间(分钟),取值范围:0-59endHour 免打扰的结束时间(小时),24小时制,取值范围:0-23endMinute 免打扰结束时间(分钟),取值范围:0-59 void setDoNotDisturb(int startHour, int startMinute, int endHour, int endMinute, CommonCallback callback); V2.3.5及以上版本支持)" class="reference-link">关闭免打扰功能(V2.3.5及以上版本支持) 关闭后,先前设置的免打扰时段失效免打扰功能默认是关闭的没有对应的开发免打扰功能接口,调用设置免打扰功能时段功能后自动打开免打扰功能 void closeDoNotDisturbMode(); V2.3.7及以上版本支持)" class="reference-link">删除所有通知接口(V2.3.7及以上版本支持) 删除推送SDK创建的所有通知若需要实现精准删除特定通知可以在onNotification回调中获取通知id,自行删除 void clearNotifications(); V3.0.6及以上版本支持)" class="reference-link">1.6 自建通知统计上报API(V3.0.6及以上版本支持) 本接口主要针对统计用户自建通知(通过阿里云推送发送透传消息,并在onMessage回调中自行创建通知)的删除/点击事件上报,其相关实现可以参考移动推送Android SDK:透传消息+用户自建通知最佳实践,如果您直接通过阿里云推送通知,无需使用相关接口。 自建通知点击上报接口 上报自建通知的点击事件请确保同一消息仅上报一次 参数 message 要上报点击事件的消息实例 void clickMessage(CPushMessage message); 自建通知删除上报接口 上报自建通知的删除事件请确保同一消息仅上报一次 参数 message 要上报删除事件的消息实例 void dismissMessage(CPushMessage message); V3.0.11及以上版本支持)" class="reference-link">1.7 电话API(V3.0.11及以上版本支持) 为提高信息的到达率和实效性,扩展推送的使用场景,我们推出了推送与短信的融合通知模式。开发者可以设置在一定时间内,如果用户未收到或未点击推送,通过短信补发通知用户。具体方案可参考:推送短信融合。 为实现推送短信融合方案,需要在终端接入绑定/解绑电话号接口,接口详情如下。 绑定电话号将设备与电话号绑定 参数 phoneNumber 要绑定的手机号callback 回调 void bindPhoneNumber(String phoneNumber, CommonCallback callback); 解绑电话号解除当前设备与电话号的绑定关系 参数 callback 回调 void unbindPhoneNumber(CommonCallback callback); 2. MessageReceiver/AliyunMessageIntentService 通过继承MessageReciever,可以拦截通知,接收消息,获取推送中的扩展字段。或者在通知打开或删除的时候,切入进行后续处理。如果调用了setPushIntentService,则需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关方法,AliyunMessageIntentService所有消息回调同MessageReceiver一致。 使用方法: MessageReceiver 继承com.alibaba.sdk.android.push.MessageReceiver;在Manifest中找到原来MessageReceiver的配置,将上边的class替换成你自己的receiver[不要配置多个]。 <!--消息接收监听器--><receiver android:name="com.alibaba.sdk.android.push.MessageReceiver <-- 把这里替换成你自己的receiver"> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/> </intent-filter> ... ...</receiver> AliyunMessageIntentService 继承com.alibaba.sdk.android.push.AliyunMessageIntentService并覆写相关方法在Manifest中注册该service <service android:name="MyPushIntentService" > <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.sdk.android.push.RECEIVE" /> </intent-filter> </service> 消息接收回调 用于接收服务端推送的消息。消息不会弹窗,而是回调该方法。 参数 context 上下文环境message CPushMessage类型,可以获取消息Id、消息标题和内容。 void onMessage(Context context, CPushMessage message); 通知接收回调 客户端接收到通知后,回调该方法。可获取到并处理通知相关的参数。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotification(Context context, String title, String summary, Map<String, String> extraMap) 通知打开回调 打开通知时会回调该方法,通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationOpened(Context context, String title, String summary, String extraMap); 无跳转逻辑通知打开回调 打开无跳转逻辑(open=4)通知时回调该方法(v2.3.2及以上版本支持),通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap); 通知删除回调 删除通知时回调该方法,通知删除上报由SDK自动完成。 参数 context 上下文环境messageId 删除通知的Id void onNotificationRemoved(Context context, String messageId); 通知在应用内到达回调 当用户创建自定义通知样式,并且设置推送应用内到达不创建通知弹窗时调用该回调,且此时不调用onNotification回调(v2.3.3及以上版本支持) 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数openType 原本通知打开方式,1:打开APP;2:打开activity;3:打开URL;4:无跳转逻辑openActivity 所要打开的activity的名称,仅当openType=2时有效,其余情况为nullopenUrl 所要打开的URL,仅当openType=3时有效,其余情况为null void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl); V2.3.3及以上版本开始支持)" class="reference-link">3. 自定义样式通知(V2.3.3及以上版本开始支持)Android Push SDK支持用户自定义通知样式,用户可以设定自己的通知样式,涉及的内容包括通知的提醒方式(声音、震动、静默),通知在状态栏的显示图标,推送消息应用内到达时是否创建通知以及自定义通知布局文件等。自定义样式通知的设置包括两部分: 3.1 客户端设置通知样式 用户利用SDK提供的自定义通知样式接口创建自定义样式通知。SDK中有两个自定义样式通知类:1)BasicCustomPushNotification;2)AdvancedCustomPushNotification。其中BasicCustomPushNotification用户设置基础样式,包括提醒方式、状态栏图标以及当推送消息到达时应用正处于前台情况下是否创建该通知等。AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了BasicCustomPushNotification的所有方法,同时还可以设置通知样式布局文件每个样式都需要对应一个特定的整数类型id,如果多个样式设置为同一个id,则最后设置的样式有效。如果SDK没有找到对应id的样式则会创建默认样式的通知样式只需设置一次,SDK会记住这个设置,在需要使用时加载对应样式具体使用例子请参考Demo 3.2 后端推送消息时添加自定义样式id 用户利用OpenApi推送消息时设定特定样式的id服务端不能设置样式,只能指定需要展现的样式id指定id的样式必须在客户端已经进行设置,否则SDK会创建默认样式的通知 3.3 Example BasicCustomPushNotification" class="reference-link">Example-BasicCustomPushNotificationBasicCustomPushNotification notification = new BasicCustomPushNotification();notification.setRemindType(BasicCustomPushNotification.REMIND_TYPE_SOUND);notification.setStatusBarDrawable(R.drawable.logo_yuanjiao_120);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(1, notification); AdvancedCustomPushNotification" class="reference-link">Example-AdvancedCustomPushNotificationAdvancedCustomPushNotification notification = new AdvancedCustomPushNotification(R.layout.notitfication_layout, R.id.m_icon, R.id.m_title, R.id.m_text);notification.setServerOptionFirst(true);notification.setBuildWhenAppInForeground(false);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(2, notification); OpenApi" class="reference-link">Example-OpenApi客户端设置完成后,服务端在推送通知时需要利用OpenApi指明对应的自定义样式ID final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");final String date = dateFormat.format(new Date());PushRequest pushRequest = new PushRequest();// 推送目标pushRequest.setAppKey(appKey);pushRequest.setTarget("device"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部pushRequest.setTargetValue("deviceId"); // 推送配置pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知pushRequest.setTitle(date); // 消息的标题pushRequest.setBody("PushRequest body"); // 消息的内容pushRequest.setSummary("PushRequest summary"); // 通知的摘要pushRequest.setAndroidNotificationBarType(2);//设置的通知样式ID,通知栏自定义样式范围0-100// 推送配置: AndroidpushRequest.setAndroidOpenType("1"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 urlpushRequest.setAndroidExtParameters("{\"_NOTIFICATION_BAR_STYLE_\":\"2\"}"); 3.4 BasicCustomPushNotification API 默认构造函数 BasicCustomPushNotification的默认构造函数,所有配置采用默认设置:通知方式采用震动+通知;NotificationFlag采用Notification.FLAG_AUTO_CANCEL,状态栏图标用的是android.R.drawable.stat_notify_chat。 public BasicCustomPushNotification(); 构造函数参数 drawable 状态栏图标flags NotificationFlags,支持系统Notification下的Flag参数remindType 提醒类型,有BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public BasicCustomPushNotification(int drawable, int flags, int remindType); 获取状态栏图标 获取已设置的状态栏图标 public int getStatusBarDrawable() 设置状态栏图标 更改状态栏图标设置 参数 statusBarDrawable 状态栏图标资源id public void setStatusBarDrawable(int statusBarDrawable); 获取提醒方式 获取已经设置的提醒方式 public int getRemindType(); 设置提醒方式 更改自定义通知的提醒方式 参数 remindType 提醒方式,提供的参数有:BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public void setRemindType(int remindType); 获取Notification Flags参数 获取已经设置的notification flag参数 public int getNotificationFlags(); 设置Notification Flags参数 更改自定义通知的flags参数 参数 notificationFlags 支持系统自带的Notification Flag参数 public void setNotificationFlags(int notificationFlags); 获取是否服务端设置优先 利用OpenApi或者阿里云推送控制台推送消息都可以设置提醒方式,当后端设置的提醒方式和自定义样式提醒方式冲突时,SDK根据serverOptionFirst参数来判断提醒方式策略。如果该参数为true,则采用后端设定的提醒方式;如果该参数为false,则采用自定义样式指定的提醒方式。默认为false public boolean isServerOptionFirst(); 设置是否服务端优先 更改自定义通知的serverOptionFirst参数 参数 serverOptionFirst 是否服务器配置优先 public void setServerOptionFirst(boolean serverOptionFirst); 获取推送前台到达否创建通知参数 当推送到达时,如果应用处在前台,用户可以通过自定义样式决定是否创建通知。默认是创建通知 public boolean isBuildWhenAppInForeground(); 设置推送前台到达否创建通知参数 更改当推送到达时应用处在前台情况下是否创建通知的设置 参数 buildWhenAppInForeground 是否创建通知 public void setBuildWhenAppInForeground(boolean buildWhenAppInForeground); 3.5 AdvancedCustomPushNotification API AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了上文中BasicCustomPushNotification的所有方法。 AdvancedCustomPushNotification构造函数 AdvancedCustomPushNotification类的构造函数,AdvancedCustomPushNotification没有默认构造函数 参数 view 自定义通知布局文件id。注:Notification的自定义布局是RemoteViews,和其他RemoteViews一样,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout三种布局。iconViewId 自定义布局文件中icon的viewIdtitleViewId 自定义布局文件中title的viewIdcontentViewId 自定义布局文件中显示通知正文的viewId public AdvancedCustomPushNotification( int view, int iconViewId, int titleViewId, int contentViewId); 设置通知图标 设置通知栏中显示的图标,该图标显示在iconViewId所指定的控件中。 参数 icon icon图标资源id public void setIcon(int icon); 获取通知图标 获取设置的通知图标 public int getIcon(); 3.6 CustomNotificationBuilder API CustomNotificationBuilder用于注册用户设定好的自定义样式通知 获取CustomNotificationBuilder实例 CustomNotificationBuilder是单例类,必须通过指定接口来获取实例 public static CustomNotificationBuilder getInstance(); 注册自定义样式通知 用户创建好自定义样式通知后需要将其注册,并赋予其一个特定的id 参数 customNotificationId 所注册的自定义样式通知的id,id必须大于0。如果将多个不同的自定义样式通知赋予同一个id,则最后注册的通知有效,其他的通知将会被覆盖notification 创建的通知,该通知可以是BasicCustomPushNotification对象也可以是AdvancedCustomPushNotification对象,但是不能为null 返回 该方法会返回一个boolean类型的结果,如果返回true,则注册成功;反之则失败。 public boolean setCustomNotification(int customNotificationId, BasicCustomPushNotification notification);
2019-12-01 23:11:46 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档Android API Android SDK最新版本v3.0.11。 Android参考Demo。 API索引: 1. CloudPushSDK接口 1.1 基本设置 SDK注册SDK动态注册启动信息统计获取设备标识设置日志等级动态设置appKey动态设置appSecret打开推送通道关闭推送通道查询推送通道状态设置接收消息IntentService 1.2 账号API 绑定账号解绑账号 1.3 标签API 绑定标签解绑标签查询标签 1.4 别名API 添加别名删除别名查询别名 1.5 通知设置API 设置通知声音设置通知栏图标设置状态栏图标设置免打扰时段关闭免打扰功能删除所有通知接口 1.6 自建通知统计上报API 自建通知点击上报接口自建通知删除上报接口 1.7 电话API 绑定电话解绑电话 2. MessageReceiver/AliyunMessageIntentService相关接口 2.1 消息接收回调2.2 通知接收回调2.3 通知打开回调2.4 无跳转逻辑通知打开回调2.5 通知在应用内到达回调 3. 自定义样式通知相关接口 3.1 客户端设置通知样式3.2 后端推送消息时添加自定义样式id3.3 Example BasicCustomNotification ExampleAdvancedCustomNotification ExampleOpenAPI Example 3.4 BacisCustomNotificaiton API 默认构造函数构造函数获取状态栏图标设置状态栏图标获取提醒方式设置提醒方式获取Notification Flags参数设置Notificaiton Flags参数获取是否服务端设置优先设置是否服务端优先获取推送前台到达否创建通知参数设置推送前台到达否创建通知参数 3.5 AdvancedCustomNotification API 构造函数设置通知图标获取通知图标 3.6 CustomNotificationBuilder API 获取CustomNotificationBuilder实例注册自定义样式通知 1. CloudPushService接口 以下接口调用时,如有回调,均为异步执行,且回调不能为空。 1.1基本设置 SDK注册 初始化推送SDK,关联到云通道。 参数 context 应用上下文(需要ApplicationContext)callback 回调 void register(Context context, CommonCallback callback); SDK动态注册接口 支持动态设置appKey,appSecret的注册接口 参数 context 应用上下文(需要ApplicationContext)appKey appSecretcallback 回调 void register(Context context, String appKey, String appSecret, CommonCallback callback); 启动信息统计 统计App启动信息。 void onAppStart(); 获取设备标识 获取设备唯一标识。 返回 设备唯一标识。 String getDeviceId(); 设置日志等级 需要在通道初始化之前设置;默认日志等级为CloudPushService.ERROR; 参数 logLevel 支持设置:CloudPushService.ERROR | CloudPushService.INFO | CloudPushService.DEBUG | CloudPushService.OFF(关闭Log) void setLogLevel(int logLevel); V2.3.6及以上版本支持)" class="reference-link">动态设置appKey(V2.3.6及以上版本支持) 动态设置appKey无需在manifest配置appKey务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appKey 需要设置的appKey void setAppKey(String appKey); V2.3.6及以上版本支持)" class="reference-link">动态设置appSecret(V2.3.6及以上版本支持) 动态设置appSecret无需在manifest配置appSecret务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appSecret 需要设置的appSecret void setAppSecret(String appSecret); V3.0.3及以上版本支持)" class="reference-link">打开推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态打开推送通道全量推送场景下,打开推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOnPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">关闭推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态关闭推送通道全量推送场景下,关闭推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOffPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">查询推送通道状态(V3.0.3及以上版本支持) app运行时查询当前推送通道状态如果当前为打开状态,则通过callback.success(String response)回调传入’on’;反之则传入’off’ 参数 callback 回调 void checkPushChannelStatus(CommonCallback callback); V3.0.10及以上版本支持)" class="reference-link">设置消息接收IntentService(V3.0.10及以上版本支持) 通过IntentService组件接收消息回调设置后消息将通过该组件透出,不再通过MessageReceiver设置的IntentService需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关回调方法 参数 messageIntentService 自定义接收消息IntentService的class void setPushIntentService(Class messageIntentService); 1.2 账号API 绑定账号 将应用内账号和推送通道相关联,可以实现按账号的定点消息推送;设备只能绑定一个账号,同一账号可以绑定到多个设备;同一设备更换绑定账号时无需进行解绑,重新调用绑定账号接口即可生效;若业务场景需要先解绑后绑定,在解绑账号成功回调中进行绑定绑定操作,以此保证执行的顺序性;账户名设置支持64字节。 参数 account 绑定账号名callback 回调 void bindAccount(String account, CommonCallback callback); 解绑账号 将应用内账号和推送通道取消关联。 参数 callback 回调 void unbindAccount(CommonCallback callback); 1.3 标签API 绑定标签 绑定标签到指定目标;支持向设备、账号和别名绑定标签,绑定类型由参数target指定;绑定标签在10分钟内生效;App最多支持绑定1万个标签,单个标签最大支持128字符。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void bindTag(int target, String[] tags, String alias, CommonCallback callback); 解绑标签 解绑指定目标标签;支持解绑设备、账号和别名标签,解绑类型由参数target指定;解绑标签在10分钟内生效;解绑标签只是解除设备和标签的绑定关系,不等同于删除标签,即该APP下标签仍然存在,系统目前不支持标签的删除。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名。target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void unbindTag(int target, String[] tags, String alias, CommonCallback callback); 查询标签 查询目标绑定标签,当前仅支持查询设备标签;查询结果可从回调onSuccess(response)的response获取;标签绑定成功且生效(10分钟内)后即可查询。 参数 target 目标类型,1: 本设备target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备;callback 回调 void listTags(int target, CommonCallback callback); 1.4 别名API 添加别名 设备添加别名;单个设备最多添加128个别名,且同一别名最多添加到128个设备;别名支持128字节。 参数 alias 别名callback 回调 void addAlias(String alias, CommonCallback callback); 删除别名 删除设备别名;支持删除指定别名和删除全部别名(alias = null || alias.length = 0)。 参数 alias 别名(alias = null or alias.length = 0时,删除设备全部别名)callback 回调 void removeAlias(String alias, CommonCallback callback); 查询别名 查询设备别名;查询结果可从回调onSuccess(response)的response中获取;从V3.0.9及以上版本开始,接口内部有5s短缓存,5s内多次调用只会请求服务端一次。 参数 callback 回调 void listAliases(CommonCallback callback); 1.5 通知设置API 设置通知声音 设置推送通知声音文件路径;若不调用本接口,默认获取资源id为R.raw.alicloud_notification_sound的资源文件;若没有获取到指定声音文件,取设备设置的消息声音。 参数 filePath 通知声音文件路径 void setNotificationSoundFilePath(String filePath); 设置通知栏图标 设置推送通知栏图标资源Bitmap。若不调用本接口,默认获取id为R.drawable.alicloud_notification_largeIcon的资源文件;若没有获取到指定图标文件,取App启动图标。 参数 icon 图标资源Bitmap void setNotificationLargeIcon(Bitmap icon); 设置状态栏图标 设置推送状态栏图标资源Id;若不调用本接口,默认获取id为R.drawable.alicloud_notification_smallIcon的资源文件;若没有获取到指定资源文件Id,取App启动图标。 参数 iconId 图标资源Id void setNotificationSmallIcon(int iconId); 设置免打扰时段 设置免打扰时间段,过滤所有通知与消息;免打扰时段仅支持设置一次,多次调用以最后一次调用设置时段为准;设置免打扰时段为00:00 - 00:00,可取消免打扰功能;(以下功能支持该用法,V2.3.5及以上版本使用关闭免打扰功能接口)全天免打扰可以设置为”0:0-23:59”免打扰时段设置对小米辅助弹窗通知无效。 参数 startHour 免打扰的起始时间(小时),24小时制,取值范围:0-23startMinute 免打扰起始时间(分钟),取值范围:0-59endHour 免打扰的结束时间(小时),24小时制,取值范围:0-23endMinute 免打扰结束时间(分钟),取值范围:0-59 void setDoNotDisturb(int startHour, int startMinute, int endHour, int endMinute, CommonCallback callback); V2.3.5及以上版本支持)" class="reference-link">关闭免打扰功能(V2.3.5及以上版本支持) 关闭后,先前设置的免打扰时段失效免打扰功能默认是关闭的没有对应的开发免打扰功能接口,调用设置免打扰功能时段功能后自动打开免打扰功能 void closeDoNotDisturbMode(); V2.3.7及以上版本支持)" class="reference-link">删除所有通知接口(V2.3.7及以上版本支持) 删除推送SDK创建的所有通知若需要实现精准删除特定通知可以在onNotification回调中获取通知id,自行删除 void clearNotifications(); V3.0.6及以上版本支持)" class="reference-link">1.6 自建通知统计上报API(V3.0.6及以上版本支持) 本接口主要针对统计用户自建通知(通过阿里云推送发送透传消息,并在onMessage回调中自行创建通知)的删除/点击事件上报,其相关实现可以参考移动推送Android SDK:透传消息+用户自建通知最佳实践,如果您直接通过阿里云推送通知,无需使用相关接口。 自建通知点击上报接口 上报自建通知的点击事件请确保同一消息仅上报一次 参数 message 要上报点击事件的消息实例 void clickMessage(CPushMessage message); 自建通知删除上报接口 上报自建通知的删除事件请确保同一消息仅上报一次 参数 message 要上报删除事件的消息实例 void dismissMessage(CPushMessage message); V3.0.11及以上版本支持)" class="reference-link">1.7 电话API(V3.0.11及以上版本支持) 为提高信息的到达率和实效性,扩展推送的使用场景,我们推出了推送与短信的融合通知模式。开发者可以设置在一定时间内,如果用户未收到或未点击推送,通过短信补发通知用户。具体方案可参考:推送短信融合。 为实现推送短信融合方案,需要在终端接入绑定/解绑电话号接口,接口详情如下。 绑定电话号将设备与电话号绑定 参数 phoneNumber 要绑定的手机号callback 回调 void bindPhoneNumber(String phoneNumber, CommonCallback callback); 解绑电话号解除当前设备与电话号的绑定关系 参数 callback 回调 void unbindPhoneNumber(CommonCallback callback); 2. MessageReceiver/AliyunMessageIntentService 通过继承MessageReciever,可以拦截通知,接收消息,获取推送中的扩展字段。或者在通知打开或删除的时候,切入进行后续处理。如果调用了setPushIntentService,则需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关方法,AliyunMessageIntentService所有消息回调同MessageReceiver一致。 使用方法: MessageReceiver 继承com.alibaba.sdk.android.push.MessageReceiver;在Manifest中找到原来MessageReceiver的配置,将上边的class替换成你自己的receiver[不要配置多个]。 <!--消息接收监听器--><receiver android:name="com.alibaba.sdk.android.push.MessageReceiver <-- 把这里替换成你自己的receiver"> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/> </intent-filter> ... ...</receiver> AliyunMessageIntentService 继承com.alibaba.sdk.android.push.AliyunMessageIntentService并覆写相关方法在Manifest中注册该service <service android:name="MyPushIntentService" > <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.sdk.android.push.RECEIVE" /> </intent-filter> </service> 消息接收回调 用于接收服务端推送的消息。消息不会弹窗,而是回调该方法。 参数 context 上下文环境message CPushMessage类型,可以获取消息Id、消息标题和内容。 void onMessage(Context context, CPushMessage message); 通知接收回调 客户端接收到通知后,回调该方法。可获取到并处理通知相关的参数。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotification(Context context, String title, String summary, Map<String, String> extraMap) 通知打开回调 打开通知时会回调该方法,通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationOpened(Context context, String title, String summary, String extraMap); 无跳转逻辑通知打开回调 打开无跳转逻辑(open=4)通知时回调该方法(v2.3.2及以上版本支持),通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap); 通知删除回调 删除通知时回调该方法,通知删除上报由SDK自动完成。 参数 context 上下文环境messageId 删除通知的Id void onNotificationRemoved(Context context, String messageId); 通知在应用内到达回调 当用户创建自定义通知样式,并且设置推送应用内到达不创建通知弹窗时调用该回调,且此时不调用onNotification回调(v2.3.3及以上版本支持) 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数openType 原本通知打开方式,1:打开APP;2:打开activity;3:打开URL;4:无跳转逻辑openActivity 所要打开的activity的名称,仅当openType=2时有效,其余情况为nullopenUrl 所要打开的URL,仅当openType=3时有效,其余情况为null void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl); V2.3.3及以上版本开始支持)" class="reference-link">3. 自定义样式通知(V2.3.3及以上版本开始支持)Android Push SDK支持用户自定义通知样式,用户可以设定自己的通知样式,涉及的内容包括通知的提醒方式(声音、震动、静默),通知在状态栏的显示图标,推送消息应用内到达时是否创建通知以及自定义通知布局文件等。自定义样式通知的设置包括两部分: 3.1 客户端设置通知样式 用户利用SDK提供的自定义通知样式接口创建自定义样式通知。SDK中有两个自定义样式通知类:1)BasicCustomPushNotification;2)AdvancedCustomPushNotification。其中BasicCustomPushNotification用户设置基础样式,包括提醒方式、状态栏图标以及当推送消息到达时应用正处于前台情况下是否创建该通知等。AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了BasicCustomPushNotification的所有方法,同时还可以设置通知样式布局文件每个样式都需要对应一个特定的整数类型id,如果多个样式设置为同一个id,则最后设置的样式有效。如果SDK没有找到对应id的样式则会创建默认样式的通知样式只需设置一次,SDK会记住这个设置,在需要使用时加载对应样式具体使用例子请参考Demo 3.2 后端推送消息时添加自定义样式id 用户利用OpenApi推送消息时设定特定样式的id服务端不能设置样式,只能指定需要展现的样式id指定id的样式必须在客户端已经进行设置,否则SDK会创建默认样式的通知 3.3 Example BasicCustomPushNotification" class="reference-link">Example-BasicCustomPushNotificationBasicCustomPushNotification notification = new BasicCustomPushNotification();notification.setRemindType(BasicCustomPushNotification.REMIND_TYPE_SOUND);notification.setStatusBarDrawable(R.drawable.logo_yuanjiao_120);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(1, notification); AdvancedCustomPushNotification" class="reference-link">Example-AdvancedCustomPushNotificationAdvancedCustomPushNotification notification = new AdvancedCustomPushNotification(R.layout.notitfication_layout, R.id.m_icon, R.id.m_title, R.id.m_text);notification.setServerOptionFirst(true);notification.setBuildWhenAppInForeground(false);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(2, notification); OpenApi" class="reference-link">Example-OpenApi客户端设置完成后,服务端在推送通知时需要利用OpenApi指明对应的自定义样式ID final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");final String date = dateFormat.format(new Date());PushRequest pushRequest = new PushRequest();// 推送目标pushRequest.setAppKey(appKey);pushRequest.setTarget("device"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部pushRequest.setTargetValue("deviceId"); // 推送配置pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知pushRequest.setTitle(date); // 消息的标题pushRequest.setBody("PushRequest body"); // 消息的内容pushRequest.setSummary("PushRequest summary"); // 通知的摘要pushRequest.setAndroidNotificationBarType(2);//设置的通知样式ID,通知栏自定义样式范围0-100// 推送配置: AndroidpushRequest.setAndroidOpenType("1"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 urlpushRequest.setAndroidExtParameters("{\"_NOTIFICATION_BAR_STYLE_\":\"2\"}"); 3.4 BasicCustomPushNotification API 默认构造函数 BasicCustomPushNotification的默认构造函数,所有配置采用默认设置:通知方式采用震动+通知;NotificationFlag采用Notification.FLAG_AUTO_CANCEL,状态栏图标用的是android.R.drawable.stat_notify_chat。 public BasicCustomPushNotification(); 构造函数参数 drawable 状态栏图标flags NotificationFlags,支持系统Notification下的Flag参数remindType 提醒类型,有BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public BasicCustomPushNotification(int drawable, int flags, int remindType); 获取状态栏图标 获取已设置的状态栏图标 public int getStatusBarDrawable() 设置状态栏图标 更改状态栏图标设置 参数 statusBarDrawable 状态栏图标资源id public void setStatusBarDrawable(int statusBarDrawable); 获取提醒方式 获取已经设置的提醒方式 public int getRemindType(); 设置提醒方式 更改自定义通知的提醒方式 参数 remindType 提醒方式,提供的参数有:BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public void setRemindType(int remindType); 获取Notification Flags参数 获取已经设置的notification flag参数 public int getNotificationFlags(); 设置Notification Flags参数 更改自定义通知的flags参数 参数 notificationFlags 支持系统自带的Notification Flag参数 public void setNotificationFlags(int notificationFlags); 获取是否服务端设置优先 利用OpenApi或者阿里云推送控制台推送消息都可以设置提醒方式,当后端设置的提醒方式和自定义样式提醒方式冲突时,SDK根据serverOptionFirst参数来判断提醒方式策略。如果该参数为true,则采用后端设定的提醒方式;如果该参数为false,则采用自定义样式指定的提醒方式。默认为false public boolean isServerOptionFirst(); 设置是否服务端优先 更改自定义通知的serverOptionFirst参数 参数 serverOptionFirst 是否服务器配置优先 public void setServerOptionFirst(boolean serverOptionFirst); 获取推送前台到达否创建通知参数 当推送到达时,如果应用处在前台,用户可以通过自定义样式决定是否创建通知。默认是创建通知 public boolean isBuildWhenAppInForeground(); 设置推送前台到达否创建通知参数 更改当推送到达时应用处在前台情况下是否创建通知的设置 参数 buildWhenAppInForeground 是否创建通知 public void setBuildWhenAppInForeground(boolean buildWhenAppInForeground); 3.5 AdvancedCustomPushNotification API AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了上文中BasicCustomPushNotification的所有方法。 AdvancedCustomPushNotification构造函数 AdvancedCustomPushNotification类的构造函数,AdvancedCustomPushNotification没有默认构造函数 参数 view 自定义通知布局文件id。注:Notification的自定义布局是RemoteViews,和其他RemoteViews一样,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout三种布局。iconViewId 自定义布局文件中icon的viewIdtitleViewId 自定义布局文件中title的viewIdcontentViewId 自定义布局文件中显示通知正文的viewId public AdvancedCustomPushNotification( int view, int iconViewId, int titleViewId, int contentViewId); 设置通知图标 设置通知栏中显示的图标,该图标显示在iconViewId所指定的控件中。 参数 icon icon图标资源id public void setIcon(int icon); 获取通知图标 获取设置的通知图标 public int getIcon(); 3.6 CustomNotificationBuilder API CustomNotificationBuilder用于注册用户设定好的自定义样式通知 获取CustomNotificationBuilder实例 CustomNotificationBuilder是单例类,必须通过指定接口来获取实例 public static CustomNotificationBuilder getInstance(); 注册自定义样式通知 用户创建好自定义样式通知后需要将其注册,并赋予其一个特定的id 参数 customNotificationId 所注册的自定义样式通知的id,id必须大于0。如果将多个不同的自定义样式通知赋予同一个id,则最后注册的通知有效,其他的通知将会被覆盖notification 创建的通知,该通知可以是BasicCustomPushNotification对象也可以是AdvancedCustomPushNotification对象,但是不能为null 返回 该方法会返回一个boolean类型的结果,如果返回true,则注册成功;反之则失败。 public boolean setCustomNotification(int customNotificationId, BasicCustomPushNotification notification);
2019-12-01 23:11:47 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档Android API Android SDK最新版本v3.0.11。 Android参考Demo。 API索引: 1. CloudPushSDK接口 1.1 基本设置 SDK注册SDK动态注册启动信息统计获取设备标识设置日志等级动态设置appKey动态设置appSecret打开推送通道关闭推送通道查询推送通道状态设置接收消息IntentService 1.2 账号API 绑定账号解绑账号 1.3 标签API 绑定标签解绑标签查询标签 1.4 别名API 添加别名删除别名查询别名 1.5 通知设置API 设置通知声音设置通知栏图标设置状态栏图标设置免打扰时段关闭免打扰功能删除所有通知接口 1.6 自建通知统计上报API 自建通知点击上报接口自建通知删除上报接口 1.7 电话API 绑定电话解绑电话 2. MessageReceiver/AliyunMessageIntentService相关接口 2.1 消息接收回调2.2 通知接收回调2.3 通知打开回调2.4 无跳转逻辑通知打开回调2.5 通知在应用内到达回调 3. 自定义样式通知相关接口 3.1 客户端设置通知样式3.2 后端推送消息时添加自定义样式id3.3 Example BasicCustomNotification ExampleAdvancedCustomNotification ExampleOpenAPI Example 3.4 BacisCustomNotificaiton API 默认构造函数构造函数获取状态栏图标设置状态栏图标获取提醒方式设置提醒方式获取Notification Flags参数设置Notificaiton Flags参数获取是否服务端设置优先设置是否服务端优先获取推送前台到达否创建通知参数设置推送前台到达否创建通知参数 3.5 AdvancedCustomNotification API 构造函数设置通知图标获取通知图标 3.6 CustomNotificationBuilder API 获取CustomNotificationBuilder实例注册自定义样式通知 1. CloudPushService接口 以下接口调用时,如有回调,均为异步执行,且回调不能为空。 1.1基本设置 SDK注册 初始化推送SDK,关联到云通道。 参数 context 应用上下文(需要ApplicationContext)callback 回调 void register(Context context, CommonCallback callback); SDK动态注册接口 支持动态设置appKey,appSecret的注册接口 参数 context 应用上下文(需要ApplicationContext)appKey appSecretcallback 回调 void register(Context context, String appKey, String appSecret, CommonCallback callback); 启动信息统计 统计App启动信息。 void onAppStart(); 获取设备标识 获取设备唯一标识。 返回 设备唯一标识。 String getDeviceId(); 设置日志等级 需要在通道初始化之前设置;默认日志等级为CloudPushService.ERROR; 参数 logLevel 支持设置:CloudPushService.ERROR | CloudPushService.INFO | CloudPushService.DEBUG | CloudPushService.OFF(关闭Log) void setLogLevel(int logLevel); V2.3.6及以上版本支持)" class="reference-link">动态设置appKey(V2.3.6及以上版本支持) 动态设置appKey无需在manifest配置appKey务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appKey 需要设置的appKey void setAppKey(String appKey); V2.3.6及以上版本支持)" class="reference-link">动态设置appSecret(V2.3.6及以上版本支持) 动态设置appSecret无需在manifest配置appSecret务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appSecret 需要设置的appSecret void setAppSecret(String appSecret); V3.0.3及以上版本支持)" class="reference-link">打开推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态打开推送通道全量推送场景下,打开推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOnPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">关闭推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态关闭推送通道全量推送场景下,关闭推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOffPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">查询推送通道状态(V3.0.3及以上版本支持) app运行时查询当前推送通道状态如果当前为打开状态,则通过callback.success(String response)回调传入’on’;反之则传入’off’ 参数 callback 回调 void checkPushChannelStatus(CommonCallback callback); V3.0.10及以上版本支持)" class="reference-link">设置消息接收IntentService(V3.0.10及以上版本支持) 通过IntentService组件接收消息回调设置后消息将通过该组件透出,不再通过MessageReceiver设置的IntentService需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关回调方法 参数 messageIntentService 自定义接收消息IntentService的class void setPushIntentService(Class messageIntentService); 1.2 账号API 绑定账号 将应用内账号和推送通道相关联,可以实现按账号的定点消息推送;设备只能绑定一个账号,同一账号可以绑定到多个设备;同一设备更换绑定账号时无需进行解绑,重新调用绑定账号接口即可生效;若业务场景需要先解绑后绑定,在解绑账号成功回调中进行绑定绑定操作,以此保证执行的顺序性;账户名设置支持64字节。 参数 account 绑定账号名callback 回调 void bindAccount(String account, CommonCallback callback); 解绑账号 将应用内账号和推送通道取消关联。 参数 callback 回调 void unbindAccount(CommonCallback callback); 1.3 标签API 绑定标签 绑定标签到指定目标;支持向设备、账号和别名绑定标签,绑定类型由参数target指定;绑定标签在10分钟内生效;App最多支持绑定1万个标签,单个标签最大支持128字符。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void bindTag(int target, String[] tags, String alias, CommonCallback callback); 解绑标签 解绑指定目标标签;支持解绑设备、账号和别名标签,解绑类型由参数target指定;解绑标签在10分钟内生效;解绑标签只是解除设备和标签的绑定关系,不等同于删除标签,即该APP下标签仍然存在,系统目前不支持标签的删除。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名。target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void unbindTag(int target, String[] tags, String alias, CommonCallback callback); 查询标签 查询目标绑定标签,当前仅支持查询设备标签;查询结果可从回调onSuccess(response)的response获取;标签绑定成功且生效(10分钟内)后即可查询。 参数 target 目标类型,1: 本设备target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备;callback 回调 void listTags(int target, CommonCallback callback); 1.4 别名API 添加别名 设备添加别名;单个设备最多添加128个别名,且同一别名最多添加到128个设备;别名支持128字节。 参数 alias 别名callback 回调 void addAlias(String alias, CommonCallback callback); 删除别名 删除设备别名;支持删除指定别名和删除全部别名(alias = null || alias.length = 0)。 参数 alias 别名(alias = null or alias.length = 0时,删除设备全部别名)callback 回调 void removeAlias(String alias, CommonCallback callback); 查询别名 查询设备别名;查询结果可从回调onSuccess(response)的response中获取;从V3.0.9及以上版本开始,接口内部有5s短缓存,5s内多次调用只会请求服务端一次。 参数 callback 回调 void listAliases(CommonCallback callback); 1.5 通知设置API 设置通知声音 设置推送通知声音文件路径;若不调用本接口,默认获取资源id为R.raw.alicloud_notification_sound的资源文件;若没有获取到指定声音文件,取设备设置的消息声音。 参数 filePath 通知声音文件路径 void setNotificationSoundFilePath(String filePath); 设置通知栏图标 设置推送通知栏图标资源Bitmap。若不调用本接口,默认获取id为R.drawable.alicloud_notification_largeIcon的资源文件;若没有获取到指定图标文件,取App启动图标。 参数 icon 图标资源Bitmap void setNotificationLargeIcon(Bitmap icon); 设置状态栏图标 设置推送状态栏图标资源Id;若不调用本接口,默认获取id为R.drawable.alicloud_notification_smallIcon的资源文件;若没有获取到指定资源文件Id,取App启动图标。 参数 iconId 图标资源Id void setNotificationSmallIcon(int iconId); 设置免打扰时段 设置免打扰时间段,过滤所有通知与消息;免打扰时段仅支持设置一次,多次调用以最后一次调用设置时段为准;设置免打扰时段为00:00 - 00:00,可取消免打扰功能;(以下功能支持该用法,V2.3.5及以上版本使用关闭免打扰功能接口)全天免打扰可以设置为”0:0-23:59”免打扰时段设置对小米辅助弹窗通知无效。 参数 startHour 免打扰的起始时间(小时),24小时制,取值范围:0-23startMinute 免打扰起始时间(分钟),取值范围:0-59endHour 免打扰的结束时间(小时),24小时制,取值范围:0-23endMinute 免打扰结束时间(分钟),取值范围:0-59 void setDoNotDisturb(int startHour, int startMinute, int endHour, int endMinute, CommonCallback callback); V2.3.5及以上版本支持)" class="reference-link">关闭免打扰功能(V2.3.5及以上版本支持) 关闭后,先前设置的免打扰时段失效免打扰功能默认是关闭的没有对应的开发免打扰功能接口,调用设置免打扰功能时段功能后自动打开免打扰功能 void closeDoNotDisturbMode(); V2.3.7及以上版本支持)" class="reference-link">删除所有通知接口(V2.3.7及以上版本支持) 删除推送SDK创建的所有通知若需要实现精准删除特定通知可以在onNotification回调中获取通知id,自行删除 void clearNotifications(); V3.0.6及以上版本支持)" class="reference-link">1.6 自建通知统计上报API(V3.0.6及以上版本支持) 本接口主要针对统计用户自建通知(通过阿里云推送发送透传消息,并在onMessage回调中自行创建通知)的删除/点击事件上报,其相关实现可以参考移动推送Android SDK:透传消息+用户自建通知最佳实践,如果您直接通过阿里云推送通知,无需使用相关接口。 自建通知点击上报接口 上报自建通知的点击事件请确保同一消息仅上报一次 参数 message 要上报点击事件的消息实例 void clickMessage(CPushMessage message); 自建通知删除上报接口 上报自建通知的删除事件请确保同一消息仅上报一次 参数 message 要上报删除事件的消息实例 void dismissMessage(CPushMessage message); V3.0.11及以上版本支持)" class="reference-link">1.7 电话API(V3.0.11及以上版本支持) 为提高信息的到达率和实效性,扩展推送的使用场景,我们推出了推送与短信的融合通知模式。开发者可以设置在一定时间内,如果用户未收到或未点击推送,通过短信补发通知用户。具体方案可参考:推送短信融合。 为实现推送短信融合方案,需要在终端接入绑定/解绑电话号接口,接口详情如下。 绑定电话号将设备与电话号绑定 参数 phoneNumber 要绑定的手机号callback 回调 void bindPhoneNumber(String phoneNumber, CommonCallback callback); 解绑电话号解除当前设备与电话号的绑定关系 参数 callback 回调 void unbindPhoneNumber(CommonCallback callback); 2. MessageReceiver/AliyunMessageIntentService 通过继承MessageReciever,可以拦截通知,接收消息,获取推送中的扩展字段。或者在通知打开或删除的时候,切入进行后续处理。如果调用了setPushIntentService,则需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关方法,AliyunMessageIntentService所有消息回调同MessageReceiver一致。 使用方法: MessageReceiver 继承com.alibaba.sdk.android.push.MessageReceiver;在Manifest中找到原来MessageReceiver的配置,将上边的class替换成你自己的receiver[不要配置多个]。 <!--消息接收监听器--><receiver android:name="com.alibaba.sdk.android.push.MessageReceiver <-- 把这里替换成你自己的receiver"> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/> </intent-filter> ... ...</receiver> AliyunMessageIntentService 继承com.alibaba.sdk.android.push.AliyunMessageIntentService并覆写相关方法在Manifest中注册该service <service android:name="MyPushIntentService" > <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.sdk.android.push.RECEIVE" /> </intent-filter> </service> 消息接收回调 用于接收服务端推送的消息。消息不会弹窗,而是回调该方法。 参数 context 上下文环境message CPushMessage类型,可以获取消息Id、消息标题和内容。 void onMessage(Context context, CPushMessage message); 通知接收回调 客户端接收到通知后,回调该方法。可获取到并处理通知相关的参数。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotification(Context context, String title, String summary, Map<String, String> extraMap) 通知打开回调 打开通知时会回调该方法,通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationOpened(Context context, String title, String summary, String extraMap); 无跳转逻辑通知打开回调 打开无跳转逻辑(open=4)通知时回调该方法(v2.3.2及以上版本支持),通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap); 通知删除回调 删除通知时回调该方法,通知删除上报由SDK自动完成。 参数 context 上下文环境messageId 删除通知的Id void onNotificationRemoved(Context context, String messageId); 通知在应用内到达回调 当用户创建自定义通知样式,并且设置推送应用内到达不创建通知弹窗时调用该回调,且此时不调用onNotification回调(v2.3.3及以上版本支持) 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数openType 原本通知打开方式,1:打开APP;2:打开activity;3:打开URL;4:无跳转逻辑openActivity 所要打开的activity的名称,仅当openType=2时有效,其余情况为nullopenUrl 所要打开的URL,仅当openType=3时有效,其余情况为null void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl); V2.3.3及以上版本开始支持)" class="reference-link">3. 自定义样式通知(V2.3.3及以上版本开始支持)Android Push SDK支持用户自定义通知样式,用户可以设定自己的通知样式,涉及的内容包括通知的提醒方式(声音、震动、静默),通知在状态栏的显示图标,推送消息应用内到达时是否创建通知以及自定义通知布局文件等。自定义样式通知的设置包括两部分: 3.1 客户端设置通知样式 用户利用SDK提供的自定义通知样式接口创建自定义样式通知。SDK中有两个自定义样式通知类:1)BasicCustomPushNotification;2)AdvancedCustomPushNotification。其中BasicCustomPushNotification用户设置基础样式,包括提醒方式、状态栏图标以及当推送消息到达时应用正处于前台情况下是否创建该通知等。AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了BasicCustomPushNotification的所有方法,同时还可以设置通知样式布局文件每个样式都需要对应一个特定的整数类型id,如果多个样式设置为同一个id,则最后设置的样式有效。如果SDK没有找到对应id的样式则会创建默认样式的通知样式只需设置一次,SDK会记住这个设置,在需要使用时加载对应样式具体使用例子请参考Demo 3.2 后端推送消息时添加自定义样式id 用户利用OpenApi推送消息时设定特定样式的id服务端不能设置样式,只能指定需要展现的样式id指定id的样式必须在客户端已经进行设置,否则SDK会创建默认样式的通知 3.3 Example BasicCustomPushNotification" class="reference-link">Example-BasicCustomPushNotificationBasicCustomPushNotification notification = new BasicCustomPushNotification();notification.setRemindType(BasicCustomPushNotification.REMIND_TYPE_SOUND);notification.setStatusBarDrawable(R.drawable.logo_yuanjiao_120);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(1, notification); AdvancedCustomPushNotification" class="reference-link">Example-AdvancedCustomPushNotificationAdvancedCustomPushNotification notification = new AdvancedCustomPushNotification(R.layout.notitfication_layout, R.id.m_icon, R.id.m_title, R.id.m_text);notification.setServerOptionFirst(true);notification.setBuildWhenAppInForeground(false);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(2, notification); OpenApi" class="reference-link">Example-OpenApi客户端设置完成后,服务端在推送通知时需要利用OpenApi指明对应的自定义样式ID final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");final String date = dateFormat.format(new Date());PushRequest pushRequest = new PushRequest();// 推送目标pushRequest.setAppKey(appKey);pushRequest.setTarget("device"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部pushRequest.setTargetValue("deviceId"); // 推送配置pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知pushRequest.setTitle(date); // 消息的标题pushRequest.setBody("PushRequest body"); // 消息的内容pushRequest.setSummary("PushRequest summary"); // 通知的摘要pushRequest.setAndroidNotificationBarType(2);//设置的通知样式ID,通知栏自定义样式范围0-100// 推送配置: AndroidpushRequest.setAndroidOpenType("1"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 urlpushRequest.setAndroidExtParameters("{\"_NOTIFICATION_BAR_STYLE_\":\"2\"}"); 3.4 BasicCustomPushNotification API 默认构造函数 BasicCustomPushNotification的默认构造函数,所有配置采用默认设置:通知方式采用震动+通知;NotificationFlag采用Notification.FLAG_AUTO_CANCEL,状态栏图标用的是android.R.drawable.stat_notify_chat。 public BasicCustomPushNotification(); 构造函数参数 drawable 状态栏图标flags NotificationFlags,支持系统Notification下的Flag参数remindType 提醒类型,有BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public BasicCustomPushNotification(int drawable, int flags, int remindType); 获取状态栏图标 获取已设置的状态栏图标 public int getStatusBarDrawable() 设置状态栏图标 更改状态栏图标设置 参数 statusBarDrawable 状态栏图标资源id public void setStatusBarDrawable(int statusBarDrawable); 获取提醒方式 获取已经设置的提醒方式 public int getRemindType(); 设置提醒方式 更改自定义通知的提醒方式 参数 remindType 提醒方式,提供的参数有:BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public void setRemindType(int remindType); 获取Notification Flags参数 获取已经设置的notification flag参数 public int getNotificationFlags(); 设置Notification Flags参数 更改自定义通知的flags参数 参数 notificationFlags 支持系统自带的Notification Flag参数 public void setNotificationFlags(int notificationFlags); 获取是否服务端设置优先 利用OpenApi或者阿里云推送控制台推送消息都可以设置提醒方式,当后端设置的提醒方式和自定义样式提醒方式冲突时,SDK根据serverOptionFirst参数来判断提醒方式策略。如果该参数为true,则采用后端设定的提醒方式;如果该参数为false,则采用自定义样式指定的提醒方式。默认为false public boolean isServerOptionFirst(); 设置是否服务端优先 更改自定义通知的serverOptionFirst参数 参数 serverOptionFirst 是否服务器配置优先 public void setServerOptionFirst(boolean serverOptionFirst); 获取推送前台到达否创建通知参数 当推送到达时,如果应用处在前台,用户可以通过自定义样式决定是否创建通知。默认是创建通知 public boolean isBuildWhenAppInForeground(); 设置推送前台到达否创建通知参数 更改当推送到达时应用处在前台情况下是否创建通知的设置 参数 buildWhenAppInForeground 是否创建通知 public void setBuildWhenAppInForeground(boolean buildWhenAppInForeground); 3.5 AdvancedCustomPushNotification API AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了上文中BasicCustomPushNotification的所有方法。 AdvancedCustomPushNotification构造函数 AdvancedCustomPushNotification类的构造函数,AdvancedCustomPushNotification没有默认构造函数 参数 view 自定义通知布局文件id。注:Notification的自定义布局是RemoteViews,和其他RemoteViews一样,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout三种布局。iconViewId 自定义布局文件中icon的viewIdtitleViewId 自定义布局文件中title的viewIdcontentViewId 自定义布局文件中显示通知正文的viewId public AdvancedCustomPushNotification( int view, int iconViewId, int titleViewId, int contentViewId); 设置通知图标 设置通知栏中显示的图标,该图标显示在iconViewId所指定的控件中。 参数 icon icon图标资源id public void setIcon(int icon); 获取通知图标 获取设置的通知图标 public int getIcon(); 3.6 CustomNotificationBuilder API CustomNotificationBuilder用于注册用户设定好的自定义样式通知 获取CustomNotificationBuilder实例 CustomNotificationBuilder是单例类,必须通过指定接口来获取实例 public static CustomNotificationBuilder getInstance(); 注册自定义样式通知 用户创建好自定义样式通知后需要将其注册,并赋予其一个特定的id 参数 customNotificationId 所注册的自定义样式通知的id,id必须大于0。如果将多个不同的自定义样式通知赋予同一个id,则最后注册的通知有效,其他的通知将会被覆盖notification 创建的通知,该通知可以是BasicCustomPushNotification对象也可以是AdvancedCustomPushNotification对象,但是不能为null 返回 该方法会返回一个boolean类型的结果,如果返回true,则注册成功;反之则失败。 public boolean setCustomNotification(int customNotificationId, BasicCustomPushNotification notification);
2019-12-01 23:11:47 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档Android API Android SDK最新版本v3.0.11。 Android参考Demo。 API索引: 1. CloudPushSDK接口 1.1 基本设置 SDK注册SDK动态注册启动信息统计获取设备标识设置日志等级动态设置appKey动态设置appSecret打开推送通道关闭推送通道查询推送通道状态设置接收消息IntentService 1.2 账号API 绑定账号解绑账号 1.3 标签API 绑定标签解绑标签查询标签 1.4 别名API 添加别名删除别名查询别名 1.5 通知设置API 设置通知声音设置通知栏图标设置状态栏图标设置免打扰时段关闭免打扰功能删除所有通知接口 1.6 自建通知统计上报API 自建通知点击上报接口自建通知删除上报接口 1.7 电话API 绑定电话解绑电话 2. MessageReceiver/AliyunMessageIntentService相关接口 2.1 消息接收回调2.2 通知接收回调2.3 通知打开回调2.4 无跳转逻辑通知打开回调2.5 通知在应用内到达回调 3. 自定义样式通知相关接口 3.1 客户端设置通知样式3.2 后端推送消息时添加自定义样式id3.3 Example BasicCustomNotification ExampleAdvancedCustomNotification ExampleOpenAPI Example 3.4 BacisCustomNotificaiton API 默认构造函数构造函数获取状态栏图标设置状态栏图标获取提醒方式设置提醒方式获取Notification Flags参数设置Notificaiton Flags参数获取是否服务端设置优先设置是否服务端优先获取推送前台到达否创建通知参数设置推送前台到达否创建通知参数 3.5 AdvancedCustomNotification API 构造函数设置通知图标获取通知图标 3.6 CustomNotificationBuilder API 获取CustomNotificationBuilder实例注册自定义样式通知 1. CloudPushService接口 以下接口调用时,如有回调,均为异步执行,且回调不能为空。 1.1基本设置 SDK注册 初始化推送SDK,关联到云通道。 参数 context 应用上下文(需要ApplicationContext)callback 回调 void register(Context context, CommonCallback callback); SDK动态注册接口 支持动态设置appKey,appSecret的注册接口 参数 context 应用上下文(需要ApplicationContext)appKey appSecretcallback 回调 void register(Context context, String appKey, String appSecret, CommonCallback callback); 启动信息统计 统计App启动信息。 void onAppStart(); 获取设备标识 获取设备唯一标识。 返回 设备唯一标识。 String getDeviceId(); 设置日志等级 需要在通道初始化之前设置;默认日志等级为CloudPushService.ERROR; 参数 logLevel 支持设置:CloudPushService.ERROR | CloudPushService.INFO | CloudPushService.DEBUG | CloudPushService.OFF(关闭Log) void setLogLevel(int logLevel); V2.3.6及以上版本支持)" class="reference-link">动态设置appKey(V2.3.6及以上版本支持) 动态设置appKey无需在manifest配置appKey务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appKey 需要设置的appKey void setAppKey(String appKey); V2.3.6及以上版本支持)" class="reference-link">动态设置appSecret(V2.3.6及以上版本支持) 动态设置appSecret无需在manifest配置appSecret务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appSecret 需要设置的appSecret void setAppSecret(String appSecret); V3.0.3及以上版本支持)" class="reference-link">打开推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态打开推送通道全量推送场景下,打开推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOnPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">关闭推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态关闭推送通道全量推送场景下,关闭推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOffPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">查询推送通道状态(V3.0.3及以上版本支持) app运行时查询当前推送通道状态如果当前为打开状态,则通过callback.success(String response)回调传入’on’;反之则传入’off’ 参数 callback 回调 void checkPushChannelStatus(CommonCallback callback); V3.0.10及以上版本支持)" class="reference-link">设置消息接收IntentService(V3.0.10及以上版本支持) 通过IntentService组件接收消息回调设置后消息将通过该组件透出,不再通过MessageReceiver设置的IntentService需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关回调方法 参数 messageIntentService 自定义接收消息IntentService的class void setPushIntentService(Class messageIntentService); 1.2 账号API 绑定账号 将应用内账号和推送通道相关联,可以实现按账号的定点消息推送;设备只能绑定一个账号,同一账号可以绑定到多个设备;同一设备更换绑定账号时无需进行解绑,重新调用绑定账号接口即可生效;若业务场景需要先解绑后绑定,在解绑账号成功回调中进行绑定绑定操作,以此保证执行的顺序性;账户名设置支持64字节。 参数 account 绑定账号名callback 回调 void bindAccount(String account, CommonCallback callback); 解绑账号 将应用内账号和推送通道取消关联。 参数 callback 回调 void unbindAccount(CommonCallback callback); 1.3 标签API 绑定标签 绑定标签到指定目标;支持向设备、账号和别名绑定标签,绑定类型由参数target指定;绑定标签在10分钟内生效;App最多支持绑定1万个标签,单个标签最大支持128字符。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void bindTag(int target, String[] tags, String alias, CommonCallback callback); 解绑标签 解绑指定目标标签;支持解绑设备、账号和别名标签,解绑类型由参数target指定;解绑标签在10分钟内生效;解绑标签只是解除设备和标签的绑定关系,不等同于删除标签,即该APP下标签仍然存在,系统目前不支持标签的删除。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名。target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void unbindTag(int target, String[] tags, String alias, CommonCallback callback); 查询标签 查询目标绑定标签,当前仅支持查询设备标签;查询结果可从回调onSuccess(response)的response获取;标签绑定成功且生效(10分钟内)后即可查询。 参数 target 目标类型,1: 本设备target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备;callback 回调 void listTags(int target, CommonCallback callback); 1.4 别名API 添加别名 设备添加别名;单个设备最多添加128个别名,且同一别名最多添加到128个设备;别名支持128字节。 参数 alias 别名callback 回调 void addAlias(String alias, CommonCallback callback); 删除别名 删除设备别名;支持删除指定别名和删除全部别名(alias = null || alias.length = 0)。 参数 alias 别名(alias = null or alias.length = 0时,删除设备全部别名)callback 回调 void removeAlias(String alias, CommonCallback callback); 查询别名 查询设备别名;查询结果可从回调onSuccess(response)的response中获取;从V3.0.9及以上版本开始,接口内部有5s短缓存,5s内多次调用只会请求服务端一次。 参数 callback 回调 void listAliases(CommonCallback callback); 1.5 通知设置API 设置通知声音 设置推送通知声音文件路径;若不调用本接口,默认获取资源id为R.raw.alicloud_notification_sound的资源文件;若没有获取到指定声音文件,取设备设置的消息声音。 参数 filePath 通知声音文件路径 void setNotificationSoundFilePath(String filePath); 设置通知栏图标 设置推送通知栏图标资源Bitmap。若不调用本接口,默认获取id为R.drawable.alicloud_notification_largeIcon的资源文件;若没有获取到指定图标文件,取App启动图标。 参数 icon 图标资源Bitmap void setNotificationLargeIcon(Bitmap icon); 设置状态栏图标 设置推送状态栏图标资源Id;若不调用本接口,默认获取id为R.drawable.alicloud_notification_smallIcon的资源文件;若没有获取到指定资源文件Id,取App启动图标。 参数 iconId 图标资源Id void setNotificationSmallIcon(int iconId); 设置免打扰时段 设置免打扰时间段,过滤所有通知与消息;免打扰时段仅支持设置一次,多次调用以最后一次调用设置时段为准;设置免打扰时段为00:00 - 00:00,可取消免打扰功能;(以下功能支持该用法,V2.3.5及以上版本使用关闭免打扰功能接口)全天免打扰可以设置为”0:0-23:59”免打扰时段设置对小米辅助弹窗通知无效。 参数 startHour 免打扰的起始时间(小时),24小时制,取值范围:0-23startMinute 免打扰起始时间(分钟),取值范围:0-59endHour 免打扰的结束时间(小时),24小时制,取值范围:0-23endMinute 免打扰结束时间(分钟),取值范围:0-59 void setDoNotDisturb(int startHour, int startMinute, int endHour, int endMinute, CommonCallback callback); V2.3.5及以上版本支持)" class="reference-link">关闭免打扰功能(V2.3.5及以上版本支持) 关闭后,先前设置的免打扰时段失效免打扰功能默认是关闭的没有对应的开发免打扰功能接口,调用设置免打扰功能时段功能后自动打开免打扰功能 void closeDoNotDisturbMode(); V2.3.7及以上版本支持)" class="reference-link">删除所有通知接口(V2.3.7及以上版本支持) 删除推送SDK创建的所有通知若需要实现精准删除特定通知可以在onNotification回调中获取通知id,自行删除 void clearNotifications(); V3.0.6及以上版本支持)" class="reference-link">1.6 自建通知统计上报API(V3.0.6及以上版本支持) 本接口主要针对统计用户自建通知(通过阿里云推送发送透传消息,并在onMessage回调中自行创建通知)的删除/点击事件上报,其相关实现可以参考移动推送Android SDK:透传消息+用户自建通知最佳实践,如果您直接通过阿里云推送通知,无需使用相关接口。 自建通知点击上报接口 上报自建通知的点击事件请确保同一消息仅上报一次 参数 message 要上报点击事件的消息实例 void clickMessage(CPushMessage message); 自建通知删除上报接口 上报自建通知的删除事件请确保同一消息仅上报一次 参数 message 要上报删除事件的消息实例 void dismissMessage(CPushMessage message); V3.0.11及以上版本支持)" class="reference-link">1.7 电话API(V3.0.11及以上版本支持) 为提高信息的到达率和实效性,扩展推送的使用场景,我们推出了推送与短信的融合通知模式。开发者可以设置在一定时间内,如果用户未收到或未点击推送,通过短信补发通知用户。具体方案可参考:推送短信融合。 为实现推送短信融合方案,需要在终端接入绑定/解绑电话号接口,接口详情如下。 绑定电话号将设备与电话号绑定 参数 phoneNumber 要绑定的手机号callback 回调 void bindPhoneNumber(String phoneNumber, CommonCallback callback); 解绑电话号解除当前设备与电话号的绑定关系 参数 callback 回调 void unbindPhoneNumber(CommonCallback callback); 2. MessageReceiver/AliyunMessageIntentService 通过继承MessageReciever,可以拦截通知,接收消息,获取推送中的扩展字段。或者在通知打开或删除的时候,切入进行后续处理。如果调用了setPushIntentService,则需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关方法,AliyunMessageIntentService所有消息回调同MessageReceiver一致。 使用方法: MessageReceiver 继承com.alibaba.sdk.android.push.MessageReceiver;在Manifest中找到原来MessageReceiver的配置,将上边的class替换成你自己的receiver[不要配置多个]。 <!--消息接收监听器--><receiver android:name="com.alibaba.sdk.android.push.MessageReceiver <-- 把这里替换成你自己的receiver"> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/> </intent-filter> ... ...</receiver> AliyunMessageIntentService 继承com.alibaba.sdk.android.push.AliyunMessageIntentService并覆写相关方法在Manifest中注册该service <service android:name="MyPushIntentService" > <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.sdk.android.push.RECEIVE" /> </intent-filter> </service> 消息接收回调 用于接收服务端推送的消息。消息不会弹窗,而是回调该方法。 参数 context 上下文环境message CPushMessage类型,可以获取消息Id、消息标题和内容。 void onMessage(Context context, CPushMessage message); 通知接收回调 客户端接收到通知后,回调该方法。可获取到并处理通知相关的参数。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotification(Context context, String title, String summary, Map<String, String> extraMap) 通知打开回调 打开通知时会回调该方法,通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationOpened(Context context, String title, String summary, String extraMap); 无跳转逻辑通知打开回调 打开无跳转逻辑(open=4)通知时回调该方法(v2.3.2及以上版本支持),通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap); 通知删除回调 删除通知时回调该方法,通知删除上报由SDK自动完成。 参数 context 上下文环境messageId 删除通知的Id void onNotificationRemoved(Context context, String messageId); 通知在应用内到达回调 当用户创建自定义通知样式,并且设置推送应用内到达不创建通知弹窗时调用该回调,且此时不调用onNotification回调(v2.3.3及以上版本支持) 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数openType 原本通知打开方式,1:打开APP;2:打开activity;3:打开URL;4:无跳转逻辑openActivity 所要打开的activity的名称,仅当openType=2时有效,其余情况为nullopenUrl 所要打开的URL,仅当openType=3时有效,其余情况为null void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl); V2.3.3及以上版本开始支持)" class="reference-link">3. 自定义样式通知(V2.3.3及以上版本开始支持)Android Push SDK支持用户自定义通知样式,用户可以设定自己的通知样式,涉及的内容包括通知的提醒方式(声音、震动、静默),通知在状态栏的显示图标,推送消息应用内到达时是否创建通知以及自定义通知布局文件等。自定义样式通知的设置包括两部分: 3.1 客户端设置通知样式 用户利用SDK提供的自定义通知样式接口创建自定义样式通知。SDK中有两个自定义样式通知类:1)BasicCustomPushNotification;2)AdvancedCustomPushNotification。其中BasicCustomPushNotification用户设置基础样式,包括提醒方式、状态栏图标以及当推送消息到达时应用正处于前台情况下是否创建该通知等。AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了BasicCustomPushNotification的所有方法,同时还可以设置通知样式布局文件每个样式都需要对应一个特定的整数类型id,如果多个样式设置为同一个id,则最后设置的样式有效。如果SDK没有找到对应id的样式则会创建默认样式的通知样式只需设置一次,SDK会记住这个设置,在需要使用时加载对应样式具体使用例子请参考Demo 3.2 后端推送消息时添加自定义样式id 用户利用OpenApi推送消息时设定特定样式的id服务端不能设置样式,只能指定需要展现的样式id指定id的样式必须在客户端已经进行设置,否则SDK会创建默认样式的通知 3.3 Example BasicCustomPushNotification" class="reference-link">Example-BasicCustomPushNotificationBasicCustomPushNotification notification = new BasicCustomPushNotification();notification.setRemindType(BasicCustomPushNotification.REMIND_TYPE_SOUND);notification.setStatusBarDrawable(R.drawable.logo_yuanjiao_120);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(1, notification); AdvancedCustomPushNotification" class="reference-link">Example-AdvancedCustomPushNotificationAdvancedCustomPushNotification notification = new AdvancedCustomPushNotification(R.layout.notitfication_layout, R.id.m_icon, R.id.m_title, R.id.m_text);notification.setServerOptionFirst(true);notification.setBuildWhenAppInForeground(false);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(2, notification); OpenApi" class="reference-link">Example-OpenApi客户端设置完成后,服务端在推送通知时需要利用OpenApi指明对应的自定义样式ID final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");final String date = dateFormat.format(new Date());PushRequest pushRequest = new PushRequest();// 推送目标pushRequest.setAppKey(appKey);pushRequest.setTarget("device"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部pushRequest.setTargetValue("deviceId"); // 推送配置pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知pushRequest.setTitle(date); // 消息的标题pushRequest.setBody("PushRequest body"); // 消息的内容pushRequest.setSummary("PushRequest summary"); // 通知的摘要pushRequest.setAndroidNotificationBarType(2);//设置的通知样式ID,通知栏自定义样式范围0-100// 推送配置: AndroidpushRequest.setAndroidOpenType("1"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 urlpushRequest.setAndroidExtParameters("{\"_NOTIFICATION_BAR_STYLE_\":\"2\"}"); 3.4 BasicCustomPushNotification API 默认构造函数 BasicCustomPushNotification的默认构造函数,所有配置采用默认设置:通知方式采用震动+通知;NotificationFlag采用Notification.FLAG_AUTO_CANCEL,状态栏图标用的是android.R.drawable.stat_notify_chat。 public BasicCustomPushNotification(); 构造函数参数 drawable 状态栏图标flags NotificationFlags,支持系统Notification下的Flag参数remindType 提醒类型,有BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public BasicCustomPushNotification(int drawable, int flags, int remindType); 获取状态栏图标 获取已设置的状态栏图标 public int getStatusBarDrawable() 设置状态栏图标 更改状态栏图标设置 参数 statusBarDrawable 状态栏图标资源id public void setStatusBarDrawable(int statusBarDrawable); 获取提醒方式 获取已经设置的提醒方式 public int getRemindType(); 设置提醒方式 更改自定义通知的提醒方式 参数 remindType 提醒方式,提供的参数有:BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public void setRemindType(int remindType); 获取Notification Flags参数 获取已经设置的notification flag参数 public int getNotificationFlags(); 设置Notification Flags参数 更改自定义通知的flags参数 参数 notificationFlags 支持系统自带的Notification Flag参数 public void setNotificationFlags(int notificationFlags); 获取是否服务端设置优先 利用OpenApi或者阿里云推送控制台推送消息都可以设置提醒方式,当后端设置的提醒方式和自定义样式提醒方式冲突时,SDK根据serverOptionFirst参数来判断提醒方式策略。如果该参数为true,则采用后端设定的提醒方式;如果该参数为false,则采用自定义样式指定的提醒方式。默认为false public boolean isServerOptionFirst(); 设置是否服务端优先 更改自定义通知的serverOptionFirst参数 参数 serverOptionFirst 是否服务器配置优先 public void setServerOptionFirst(boolean serverOptionFirst); 获取推送前台到达否创建通知参数 当推送到达时,如果应用处在前台,用户可以通过自定义样式决定是否创建通知。默认是创建通知 public boolean isBuildWhenAppInForeground(); 设置推送前台到达否创建通知参数 更改当推送到达时应用处在前台情况下是否创建通知的设置 参数 buildWhenAppInForeground 是否创建通知 public void setBuildWhenAppInForeground(boolean buildWhenAppInForeground); 3.5 AdvancedCustomPushNotification API AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了上文中BasicCustomPushNotification的所有方法。 AdvancedCustomPushNotification构造函数 AdvancedCustomPushNotification类的构造函数,AdvancedCustomPushNotification没有默认构造函数 参数 view 自定义通知布局文件id。注:Notification的自定义布局是RemoteViews,和其他RemoteViews一样,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout三种布局。iconViewId 自定义布局文件中icon的viewIdtitleViewId 自定义布局文件中title的viewIdcontentViewId 自定义布局文件中显示通知正文的viewId public AdvancedCustomPushNotification( int view, int iconViewId, int titleViewId, int contentViewId); 设置通知图标 设置通知栏中显示的图标,该图标显示在iconViewId所指定的控件中。 参数 icon icon图标资源id public void setIcon(int icon); 获取通知图标 获取设置的通知图标 public int getIcon(); 3.6 CustomNotificationBuilder API CustomNotificationBuilder用于注册用户设定好的自定义样式通知 获取CustomNotificationBuilder实例 CustomNotificationBuilder是单例类,必须通过指定接口来获取实例 public static CustomNotificationBuilder getInstance(); 注册自定义样式通知 用户创建好自定义样式通知后需要将其注册,并赋予其一个特定的id 参数 customNotificationId 所注册的自定义样式通知的id,id必须大于0。如果将多个不同的自定义样式通知赋予同一个id,则最后注册的通知有效,其他的通知将会被覆盖notification 创建的通知,该通知可以是BasicCustomPushNotification对象也可以是AdvancedCustomPushNotification对象,但是不能为null 返回 该方法会返回一个boolean类型的结果,如果返回true,则注册成功;反之则失败。 public boolean setCustomNotification(int customNotificationId, BasicCustomPushNotification notification);
2019-12-01 23:11:46 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档Android API Android SDK最新版本v3.0.11。 Android参考Demo。 API索引: 1. CloudPushSDK接口 1.1 基本设置 SDK注册SDK动态注册启动信息统计获取设备标识设置日志等级动态设置appKey动态设置appSecret打开推送通道关闭推送通道查询推送通道状态设置接收消息IntentService 1.2 账号API 绑定账号解绑账号 1.3 标签API 绑定标签解绑标签查询标签 1.4 别名API 添加别名删除别名查询别名 1.5 通知设置API 设置通知声音设置通知栏图标设置状态栏图标设置免打扰时段关闭免打扰功能删除所有通知接口 1.6 自建通知统计上报API 自建通知点击上报接口自建通知删除上报接口 1.7 电话API 绑定电话解绑电话 2. MessageReceiver/AliyunMessageIntentService相关接口 2.1 消息接收回调2.2 通知接收回调2.3 通知打开回调2.4 无跳转逻辑通知打开回调2.5 通知在应用内到达回调 3. 自定义样式通知相关接口 3.1 客户端设置通知样式3.2 后端推送消息时添加自定义样式id3.3 Example BasicCustomNotification ExampleAdvancedCustomNotification ExampleOpenAPI Example 3.4 BacisCustomNotificaiton API 默认构造函数构造函数获取状态栏图标设置状态栏图标获取提醒方式设置提醒方式获取Notification Flags参数设置Notificaiton Flags参数获取是否服务端设置优先设置是否服务端优先获取推送前台到达否创建通知参数设置推送前台到达否创建通知参数 3.5 AdvancedCustomNotification API 构造函数设置通知图标获取通知图标 3.6 CustomNotificationBuilder API 获取CustomNotificationBuilder实例注册自定义样式通知 1. CloudPushService接口 以下接口调用时,如有回调,均为异步执行,且回调不能为空。 1.1基本设置 SDK注册 初始化推送SDK,关联到云通道。 参数 context 应用上下文(需要ApplicationContext)callback 回调 void register(Context context, CommonCallback callback); SDK动态注册接口 支持动态设置appKey,appSecret的注册接口 参数 context 应用上下文(需要ApplicationContext)appKey appSecretcallback 回调 void register(Context context, String appKey, String appSecret, CommonCallback callback); 启动信息统计 统计App启动信息。 void onAppStart(); 获取设备标识 获取设备唯一标识。 返回 设备唯一标识。 String getDeviceId(); 设置日志等级 需要在通道初始化之前设置;默认日志等级为CloudPushService.ERROR; 参数 logLevel 支持设置:CloudPushService.ERROR | CloudPushService.INFO | CloudPushService.DEBUG | CloudPushService.OFF(关闭Log) void setLogLevel(int logLevel); V2.3.6及以上版本支持)" class="reference-link">动态设置appKey(V2.3.6及以上版本支持) 动态设置appKey无需在manifest配置appKey务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appKey 需要设置的appKey void setAppKey(String appKey); V2.3.6及以上版本支持)" class="reference-link">动态设置appSecret(V2.3.6及以上版本支持) 动态设置appSecret无需在manifest配置appSecret务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appSecret 需要设置的appSecret void setAppSecret(String appSecret); V3.0.3及以上版本支持)" class="reference-link">打开推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态打开推送通道全量推送场景下,打开推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOnPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">关闭推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态关闭推送通道全量推送场景下,关闭推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOffPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">查询推送通道状态(V3.0.3及以上版本支持) app运行时查询当前推送通道状态如果当前为打开状态,则通过callback.success(String response)回调传入’on’;反之则传入’off’ 参数 callback 回调 void checkPushChannelStatus(CommonCallback callback); V3.0.10及以上版本支持)" class="reference-link">设置消息接收IntentService(V3.0.10及以上版本支持) 通过IntentService组件接收消息回调设置后消息将通过该组件透出,不再通过MessageReceiver设置的IntentService需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关回调方法 参数 messageIntentService 自定义接收消息IntentService的class void setPushIntentService(Class messageIntentService); 1.2 账号API 绑定账号 将应用内账号和推送通道相关联,可以实现按账号的定点消息推送;设备只能绑定一个账号,同一账号可以绑定到多个设备;同一设备更换绑定账号时无需进行解绑,重新调用绑定账号接口即可生效;若业务场景需要先解绑后绑定,在解绑账号成功回调中进行绑定绑定操作,以此保证执行的顺序性;账户名设置支持64字节。 参数 account 绑定账号名callback 回调 void bindAccount(String account, CommonCallback callback); 解绑账号 将应用内账号和推送通道取消关联。 参数 callback 回调 void unbindAccount(CommonCallback callback); 1.3 标签API 绑定标签 绑定标签到指定目标;支持向设备、账号和别名绑定标签,绑定类型由参数target指定;绑定标签在10分钟内生效;App最多支持绑定1万个标签,单个标签最大支持128字符。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void bindTag(int target, String[] tags, String alias, CommonCallback callback); 解绑标签 解绑指定目标标签;支持解绑设备、账号和别名标签,解绑类型由参数target指定;解绑标签在10分钟内生效;解绑标签只是解除设备和标签的绑定关系,不等同于删除标签,即该APP下标签仍然存在,系统目前不支持标签的删除。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名。target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void unbindTag(int target, String[] tags, String alias, CommonCallback callback); 查询标签 查询目标绑定标签,当前仅支持查询设备标签;查询结果可从回调onSuccess(response)的response获取;标签绑定成功且生效(10分钟内)后即可查询。 参数 target 目标类型,1: 本设备target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备;callback 回调 void listTags(int target, CommonCallback callback); 1.4 别名API 添加别名 设备添加别名;单个设备最多添加128个别名,且同一别名最多添加到128个设备;别名支持128字节。 参数 alias 别名callback 回调 void addAlias(String alias, CommonCallback callback); 删除别名 删除设备别名;支持删除指定别名和删除全部别名(alias = null || alias.length = 0)。 参数 alias 别名(alias = null or alias.length = 0时,删除设备全部别名)callback 回调 void removeAlias(String alias, CommonCallback callback); 查询别名 查询设备别名;查询结果可从回调onSuccess(response)的response中获取;从V3.0.9及以上版本开始,接口内部有5s短缓存,5s内多次调用只会请求服务端一次。 参数 callback 回调 void listAliases(CommonCallback callback); 1.5 通知设置API 设置通知声音 设置推送通知声音文件路径;若不调用本接口,默认获取资源id为R.raw.alicloud_notification_sound的资源文件;若没有获取到指定声音文件,取设备设置的消息声音。 参数 filePath 通知声音文件路径 void setNotificationSoundFilePath(String filePath); 设置通知栏图标 设置推送通知栏图标资源Bitmap。若不调用本接口,默认获取id为R.drawable.alicloud_notification_largeIcon的资源文件;若没有获取到指定图标文件,取App启动图标。 参数 icon 图标资源Bitmap void setNotificationLargeIcon(Bitmap icon); 设置状态栏图标 设置推送状态栏图标资源Id;若不调用本接口,默认获取id为R.drawable.alicloud_notification_smallIcon的资源文件;若没有获取到指定资源文件Id,取App启动图标。 参数 iconId 图标资源Id void setNotificationSmallIcon(int iconId); 设置免打扰时段 设置免打扰时间段,过滤所有通知与消息;免打扰时段仅支持设置一次,多次调用以最后一次调用设置时段为准;设置免打扰时段为00:00 - 00:00,可取消免打扰功能;(以下功能支持该用法,V2.3.5及以上版本使用关闭免打扰功能接口)全天免打扰可以设置为”0:0-23:59”免打扰时段设置对小米辅助弹窗通知无效。 参数 startHour 免打扰的起始时间(小时),24小时制,取值范围:0-23startMinute 免打扰起始时间(分钟),取值范围:0-59endHour 免打扰的结束时间(小时),24小时制,取值范围:0-23endMinute 免打扰结束时间(分钟),取值范围:0-59 void setDoNotDisturb(int startHour, int startMinute, int endHour, int endMinute, CommonCallback callback); V2.3.5及以上版本支持)" class="reference-link">关闭免打扰功能(V2.3.5及以上版本支持) 关闭后,先前设置的免打扰时段失效免打扰功能默认是关闭的没有对应的开发免打扰功能接口,调用设置免打扰功能时段功能后自动打开免打扰功能 void closeDoNotDisturbMode(); V2.3.7及以上版本支持)" class="reference-link">删除所有通知接口(V2.3.7及以上版本支持) 删除推送SDK创建的所有通知若需要实现精准删除特定通知可以在onNotification回调中获取通知id,自行删除 void clearNotifications(); V3.0.6及以上版本支持)" class="reference-link">1.6 自建通知统计上报API(V3.0.6及以上版本支持) 本接口主要针对统计用户自建通知(通过阿里云推送发送透传消息,并在onMessage回调中自行创建通知)的删除/点击事件上报,其相关实现可以参考移动推送Android SDK:透传消息+用户自建通知最佳实践,如果您直接通过阿里云推送通知,无需使用相关接口。 自建通知点击上报接口 上报自建通知的点击事件请确保同一消息仅上报一次 参数 message 要上报点击事件的消息实例 void clickMessage(CPushMessage message); 自建通知删除上报接口 上报自建通知的删除事件请确保同一消息仅上报一次 参数 message 要上报删除事件的消息实例 void dismissMessage(CPushMessage message); V3.0.11及以上版本支持)" class="reference-link">1.7 电话API(V3.0.11及以上版本支持) 为提高信息的到达率和实效性,扩展推送的使用场景,我们推出了推送与短信的融合通知模式。开发者可以设置在一定时间内,如果用户未收到或未点击推送,通过短信补发通知用户。具体方案可参考:推送短信融合。 为实现推送短信融合方案,需要在终端接入绑定/解绑电话号接口,接口详情如下。 绑定电话号将设备与电话号绑定 参数 phoneNumber 要绑定的手机号callback 回调 void bindPhoneNumber(String phoneNumber, CommonCallback callback); 解绑电话号解除当前设备与电话号的绑定关系 参数 callback 回调 void unbindPhoneNumber(CommonCallback callback); 2. MessageReceiver/AliyunMessageIntentService 通过继承MessageReciever,可以拦截通知,接收消息,获取推送中的扩展字段。或者在通知打开或删除的时候,切入进行后续处理。如果调用了setPushIntentService,则需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关方法,AliyunMessageIntentService所有消息回调同MessageReceiver一致。 使用方法: MessageReceiver 继承com.alibaba.sdk.android.push.MessageReceiver;在Manifest中找到原来MessageReceiver的配置,将上边的class替换成你自己的receiver[不要配置多个]。 <!--消息接收监听器--><receiver android:name="com.alibaba.sdk.android.push.MessageReceiver <-- 把这里替换成你自己的receiver"> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/> </intent-filter> ... ...</receiver> AliyunMessageIntentService 继承com.alibaba.sdk.android.push.AliyunMessageIntentService并覆写相关方法在Manifest中注册该service <service android:name="MyPushIntentService" > <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.sdk.android.push.RECEIVE" /> </intent-filter> </service> 消息接收回调 用于接收服务端推送的消息。消息不会弹窗,而是回调该方法。 参数 context 上下文环境message CPushMessage类型,可以获取消息Id、消息标题和内容。 void onMessage(Context context, CPushMessage message); 通知接收回调 客户端接收到通知后,回调该方法。可获取到并处理通知相关的参数。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotification(Context context, String title, String summary, Map<String, String> extraMap) 通知打开回调 打开通知时会回调该方法,通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationOpened(Context context, String title, String summary, String extraMap); 无跳转逻辑通知打开回调 打开无跳转逻辑(open=4)通知时回调该方法(v2.3.2及以上版本支持),通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap); 通知删除回调 删除通知时回调该方法,通知删除上报由SDK自动完成。 参数 context 上下文环境messageId 删除通知的Id void onNotificationRemoved(Context context, String messageId); 通知在应用内到达回调 当用户创建自定义通知样式,并且设置推送应用内到达不创建通知弹窗时调用该回调,且此时不调用onNotification回调(v2.3.3及以上版本支持) 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数openType 原本通知打开方式,1:打开APP;2:打开activity;3:打开URL;4:无跳转逻辑openActivity 所要打开的activity的名称,仅当openType=2时有效,其余情况为nullopenUrl 所要打开的URL,仅当openType=3时有效,其余情况为null void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl); V2.3.3及以上版本开始支持)" class="reference-link">3. 自定义样式通知(V2.3.3及以上版本开始支持)Android Push SDK支持用户自定义通知样式,用户可以设定自己的通知样式,涉及的内容包括通知的提醒方式(声音、震动、静默),通知在状态栏的显示图标,推送消息应用内到达时是否创建通知以及自定义通知布局文件等。自定义样式通知的设置包括两部分: 3.1 客户端设置通知样式 用户利用SDK提供的自定义通知样式接口创建自定义样式通知。SDK中有两个自定义样式通知类:1)BasicCustomPushNotification;2)AdvancedCustomPushNotification。其中BasicCustomPushNotification用户设置基础样式,包括提醒方式、状态栏图标以及当推送消息到达时应用正处于前台情况下是否创建该通知等。AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了BasicCustomPushNotification的所有方法,同时还可以设置通知样式布局文件每个样式都需要对应一个特定的整数类型id,如果多个样式设置为同一个id,则最后设置的样式有效。如果SDK没有找到对应id的样式则会创建默认样式的通知样式只需设置一次,SDK会记住这个设置,在需要使用时加载对应样式具体使用例子请参考Demo 3.2 后端推送消息时添加自定义样式id 用户利用OpenApi推送消息时设定特定样式的id服务端不能设置样式,只能指定需要展现的样式id指定id的样式必须在客户端已经进行设置,否则SDK会创建默认样式的通知 3.3 Example BasicCustomPushNotification" class="reference-link">Example-BasicCustomPushNotificationBasicCustomPushNotification notification = new BasicCustomPushNotification();notification.setRemindType(BasicCustomPushNotification.REMIND_TYPE_SOUND);notification.setStatusBarDrawable(R.drawable.logo_yuanjiao_120);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(1, notification); AdvancedCustomPushNotification" class="reference-link">Example-AdvancedCustomPushNotificationAdvancedCustomPushNotification notification = new AdvancedCustomPushNotification(R.layout.notitfication_layout, R.id.m_icon, R.id.m_title, R.id.m_text);notification.setServerOptionFirst(true);notification.setBuildWhenAppInForeground(false);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(2, notification); OpenApi" class="reference-link">Example-OpenApi客户端设置完成后,服务端在推送通知时需要利用OpenApi指明对应的自定义样式ID final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");final String date = dateFormat.format(new Date());PushRequest pushRequest = new PushRequest();// 推送目标pushRequest.setAppKey(appKey);pushRequest.setTarget("device"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部pushRequest.setTargetValue("deviceId"); // 推送配置pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知pushRequest.setTitle(date); // 消息的标题pushRequest.setBody("PushRequest body"); // 消息的内容pushRequest.setSummary("PushRequest summary"); // 通知的摘要pushRequest.setAndroidNotificationBarType(2);//设置的通知样式ID,通知栏自定义样式范围0-100// 推送配置: AndroidpushRequest.setAndroidOpenType("1"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 urlpushRequest.setAndroidExtParameters("{\"_NOTIFICATION_BAR_STYLE_\":\"2\"}"); 3.4 BasicCustomPushNotification API 默认构造函数 BasicCustomPushNotification的默认构造函数,所有配置采用默认设置:通知方式采用震动+通知;NotificationFlag采用Notification.FLAG_AUTO_CANCEL,状态栏图标用的是android.R.drawable.stat_notify_chat。 public BasicCustomPushNotification(); 构造函数参数 drawable 状态栏图标flags NotificationFlags,支持系统Notification下的Flag参数remindType 提醒类型,有BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public BasicCustomPushNotification(int drawable, int flags, int remindType); 获取状态栏图标 获取已设置的状态栏图标 public int getStatusBarDrawable() 设置状态栏图标 更改状态栏图标设置 参数 statusBarDrawable 状态栏图标资源id public void setStatusBarDrawable(int statusBarDrawable); 获取提醒方式 获取已经设置的提醒方式 public int getRemindType(); 设置提醒方式 更改自定义通知的提醒方式 参数 remindType 提醒方式,提供的参数有:BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public void setRemindType(int remindType); 获取Notification Flags参数 获取已经设置的notification flag参数 public int getNotificationFlags(); 设置Notification Flags参数 更改自定义通知的flags参数 参数 notificationFlags 支持系统自带的Notification Flag参数 public void setNotificationFlags(int notificationFlags); 获取是否服务端设置优先 利用OpenApi或者阿里云推送控制台推送消息都可以设置提醒方式,当后端设置的提醒方式和自定义样式提醒方式冲突时,SDK根据serverOptionFirst参数来判断提醒方式策略。如果该参数为true,则采用后端设定的提醒方式;如果该参数为false,则采用自定义样式指定的提醒方式。默认为false public boolean isServerOptionFirst(); 设置是否服务端优先 更改自定义通知的serverOptionFirst参数 参数 serverOptionFirst 是否服务器配置优先 public void setServerOptionFirst(boolean serverOptionFirst); 获取推送前台到达否创建通知参数 当推送到达时,如果应用处在前台,用户可以通过自定义样式决定是否创建通知。默认是创建通知 public boolean isBuildWhenAppInForeground(); 设置推送前台到达否创建通知参数 更改当推送到达时应用处在前台情况下是否创建通知的设置 参数 buildWhenAppInForeground 是否创建通知 public void setBuildWhenAppInForeground(boolean buildWhenAppInForeground); 3.5 AdvancedCustomPushNotification API AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了上文中BasicCustomPushNotification的所有方法。 AdvancedCustomPushNotification构造函数 AdvancedCustomPushNotification类的构造函数,AdvancedCustomPushNotification没有默认构造函数 参数 view 自定义通知布局文件id。注:Notification的自定义布局是RemoteViews,和其他RemoteViews一样,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout三种布局。iconViewId 自定义布局文件中icon的viewIdtitleViewId 自定义布局文件中title的viewIdcontentViewId 自定义布局文件中显示通知正文的viewId public AdvancedCustomPushNotification( int view, int iconViewId, int titleViewId, int contentViewId); 设置通知图标 设置通知栏中显示的图标,该图标显示在iconViewId所指定的控件中。 参数 icon icon图标资源id public void setIcon(int icon); 获取通知图标 获取设置的通知图标 public int getIcon(); 3.6 CustomNotificationBuilder API CustomNotificationBuilder用于注册用户设定好的自定义样式通知 获取CustomNotificationBuilder实例 CustomNotificationBuilder是单例类,必须通过指定接口来获取实例 public static CustomNotificationBuilder getInstance(); 注册自定义样式通知 用户创建好自定义样式通知后需要将其注册,并赋予其一个特定的id 参数 customNotificationId 所注册的自定义样式通知的id,id必须大于0。如果将多个不同的自定义样式通知赋予同一个id,则最后注册的通知有效,其他的通知将会被覆盖notification 创建的通知,该通知可以是BasicCustomPushNotification对象也可以是AdvancedCustomPushNotification对象,但是不能为null 返回 该方法会返回一个boolean类型的结果,如果返回true,则注册成功;反之则失败。 public boolean setCustomNotification(int customNotificationId, BasicCustomPushNotification notification);
2019-12-01 23:11:49 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档Android API Android SDK最新版本v3.0.11。 Android参考Demo。 API索引: 1. CloudPushSDK接口 1.1 基本设置 SDK注册SDK动态注册启动信息统计获取设备标识设置日志等级动态设置appKey动态设置appSecret打开推送通道关闭推送通道查询推送通道状态设置接收消息IntentService 1.2 账号API 绑定账号解绑账号 1.3 标签API 绑定标签解绑标签查询标签 1.4 别名API 添加别名删除别名查询别名 1.5 通知设置API 设置通知声音设置通知栏图标设置状态栏图标设置免打扰时段关闭免打扰功能删除所有通知接口 1.6 自建通知统计上报API 自建通知点击上报接口自建通知删除上报接口 1.7 电话API 绑定电话解绑电话 2. MessageReceiver/AliyunMessageIntentService相关接口 2.1 消息接收回调2.2 通知接收回调2.3 通知打开回调2.4 无跳转逻辑通知打开回调2.5 通知在应用内到达回调 3. 自定义样式通知相关接口 3.1 客户端设置通知样式3.2 后端推送消息时添加自定义样式id3.3 Example BasicCustomNotification ExampleAdvancedCustomNotification ExampleOpenAPI Example 3.4 BacisCustomNotificaiton API 默认构造函数构造函数获取状态栏图标设置状态栏图标获取提醒方式设置提醒方式获取Notification Flags参数设置Notificaiton Flags参数获取是否服务端设置优先设置是否服务端优先获取推送前台到达否创建通知参数设置推送前台到达否创建通知参数 3.5 AdvancedCustomNotification API 构造函数设置通知图标获取通知图标 3.6 CustomNotificationBuilder API 获取CustomNotificationBuilder实例注册自定义样式通知 1. CloudPushService接口 以下接口调用时,如有回调,均为异步执行,且回调不能为空。 1.1基本设置 SDK注册 初始化推送SDK,关联到云通道。 参数 context 应用上下文(需要ApplicationContext)callback 回调 void register(Context context, CommonCallback callback); SDK动态注册接口 支持动态设置appKey,appSecret的注册接口 参数 context 应用上下文(需要ApplicationContext)appKey appSecretcallback 回调 void register(Context context, String appKey, String appSecret, CommonCallback callback); 启动信息统计 统计App启动信息。 void onAppStart(); 获取设备标识 获取设备唯一标识。 返回 设备唯一标识。 String getDeviceId(); 设置日志等级 需要在通道初始化之前设置;默认日志等级为CloudPushService.ERROR; 参数 logLevel 支持设置:CloudPushService.ERROR | CloudPushService.INFO | CloudPushService.DEBUG | CloudPushService.OFF(关闭Log) void setLogLevel(int logLevel); V2.3.6及以上版本支持)" class="reference-link">动态设置appKey(V2.3.6及以上版本支持) 动态设置appKey无需在manifest配置appKey务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appKey 需要设置的appKey void setAppKey(String appKey); V2.3.6及以上版本支持)" class="reference-link">动态设置appSecret(V2.3.6及以上版本支持) 动态设置appSecret无需在manifest配置appSecret务必在调用register注册接口之前调用该接口,否则动态设置失效 参数 appSecret 需要设置的appSecret void setAppSecret(String appSecret); V3.0.3及以上版本支持)" class="reference-link">打开推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态打开推送通道全量推送场景下,打开推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOnPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">关闭推送通道(V3.0.3及以上版本支持) 用于在程序运行时动态关闭推送通道全量推送场景下,关闭推送通道存在2-3小时延迟。其他场景实时生效 参数 callback 回调 void turnOffPushChannel(CommonCallback callback); V3.0.3及以上版本支持)" class="reference-link">查询推送通道状态(V3.0.3及以上版本支持) app运行时查询当前推送通道状态如果当前为打开状态,则通过callback.success(String response)回调传入’on’;反之则传入’off’ 参数 callback 回调 void checkPushChannelStatus(CommonCallback callback); V3.0.10及以上版本支持)" class="reference-link">设置消息接收IntentService(V3.0.10及以上版本支持) 通过IntentService组件接收消息回调设置后消息将通过该组件透出,不再通过MessageReceiver设置的IntentService需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关回调方法 参数 messageIntentService 自定义接收消息IntentService的class void setPushIntentService(Class messageIntentService); 1.2 账号API 绑定账号 将应用内账号和推送通道相关联,可以实现按账号的定点消息推送;设备只能绑定一个账号,同一账号可以绑定到多个设备;同一设备更换绑定账号时无需进行解绑,重新调用绑定账号接口即可生效;若业务场景需要先解绑后绑定,在解绑账号成功回调中进行绑定绑定操作,以此保证执行的顺序性;账户名设置支持64字节。 参数 account 绑定账号名callback 回调 void bindAccount(String account, CommonCallback callback); 解绑账号 将应用内账号和推送通道取消关联。 参数 callback 回调 void unbindAccount(CommonCallback callback); 1.3 标签API 绑定标签 绑定标签到指定目标;支持向设备、账号和别名绑定标签,绑定类型由参数target指定;绑定标签在10分钟内生效;App最多支持绑定1万个标签,单个标签最大支持128字符。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void bindTag(int target, String[] tags, String alias, CommonCallback callback); 解绑标签 解绑指定目标标签;支持解绑设备、账号和别名标签,解绑类型由参数target指定;解绑标签在10分钟内生效;解绑标签只是解除设备和标签的绑定关系,不等同于删除标签,即该APP下标签仍然存在,系统目前不支持标签的删除。 参数 target 目标类型,1:本设备; 2:本设备绑定账号; 3:别名。target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备; CloudPushService.ACCOUNT_TARGET:本账号; CloudPushService.ALIAS_TARGET:别名tags 标签(数组输入)alias 别名(仅当target = 3时生效)callback 回调 void unbindTag(int target, String[] tags, String alias, CommonCallback callback); 查询标签 查询目标绑定标签,当前仅支持查询设备标签;查询结果可从回调onSuccess(response)的response获取;标签绑定成功且生效(10分钟内)后即可查询。 参数 target 目标类型,1: 本设备target(V2.3.5及以上版本) 目标类型,CloudPushService.DEVICE_TARGET:本设备;callback 回调 void listTags(int target, CommonCallback callback); 1.4 别名API 添加别名 设备添加别名;单个设备最多添加128个别名,且同一别名最多添加到128个设备;别名支持128字节。 参数 alias 别名callback 回调 void addAlias(String alias, CommonCallback callback); 删除别名 删除设备别名;支持删除指定别名和删除全部别名(alias = null || alias.length = 0)。 参数 alias 别名(alias = null or alias.length = 0时,删除设备全部别名)callback 回调 void removeAlias(String alias, CommonCallback callback); 查询别名 查询设备别名;查询结果可从回调onSuccess(response)的response中获取;从V3.0.9及以上版本开始,接口内部有5s短缓存,5s内多次调用只会请求服务端一次。 参数 callback 回调 void listAliases(CommonCallback callback); 1.5 通知设置API 设置通知声音 设置推送通知声音文件路径;若不调用本接口,默认获取资源id为R.raw.alicloud_notification_sound的资源文件;若没有获取到指定声音文件,取设备设置的消息声音。 参数 filePath 通知声音文件路径 void setNotificationSoundFilePath(String filePath); 设置通知栏图标 设置推送通知栏图标资源Bitmap。若不调用本接口,默认获取id为R.drawable.alicloud_notification_largeIcon的资源文件;若没有获取到指定图标文件,取App启动图标。 参数 icon 图标资源Bitmap void setNotificationLargeIcon(Bitmap icon); 设置状态栏图标 设置推送状态栏图标资源Id;若不调用本接口,默认获取id为R.drawable.alicloud_notification_smallIcon的资源文件;若没有获取到指定资源文件Id,取App启动图标。 参数 iconId 图标资源Id void setNotificationSmallIcon(int iconId); 设置免打扰时段 设置免打扰时间段,过滤所有通知与消息;免打扰时段仅支持设置一次,多次调用以最后一次调用设置时段为准;设置免打扰时段为00:00 - 00:00,可取消免打扰功能;(以下功能支持该用法,V2.3.5及以上版本使用关闭免打扰功能接口)全天免打扰可以设置为”0:0-23:59”免打扰时段设置对小米辅助弹窗通知无效。 参数 startHour 免打扰的起始时间(小时),24小时制,取值范围:0-23startMinute 免打扰起始时间(分钟),取值范围:0-59endHour 免打扰的结束时间(小时),24小时制,取值范围:0-23endMinute 免打扰结束时间(分钟),取值范围:0-59 void setDoNotDisturb(int startHour, int startMinute, int endHour, int endMinute, CommonCallback callback); V2.3.5及以上版本支持)" class="reference-link">关闭免打扰功能(V2.3.5及以上版本支持) 关闭后,先前设置的免打扰时段失效免打扰功能默认是关闭的没有对应的开发免打扰功能接口,调用设置免打扰功能时段功能后自动打开免打扰功能 void closeDoNotDisturbMode(); V2.3.7及以上版本支持)" class="reference-link">删除所有通知接口(V2.3.7及以上版本支持) 删除推送SDK创建的所有通知若需要实现精准删除特定通知可以在onNotification回调中获取通知id,自行删除 void clearNotifications(); V3.0.6及以上版本支持)" class="reference-link">1.6 自建通知统计上报API(V3.0.6及以上版本支持) 本接口主要针对统计用户自建通知(通过阿里云推送发送透传消息,并在onMessage回调中自行创建通知)的删除/点击事件上报,其相关实现可以参考移动推送Android SDK:透传消息+用户自建通知最佳实践,如果您直接通过阿里云推送通知,无需使用相关接口。 自建通知点击上报接口 上报自建通知的点击事件请确保同一消息仅上报一次 参数 message 要上报点击事件的消息实例 void clickMessage(CPushMessage message); 自建通知删除上报接口 上报自建通知的删除事件请确保同一消息仅上报一次 参数 message 要上报删除事件的消息实例 void dismissMessage(CPushMessage message); V3.0.11及以上版本支持)" class="reference-link">1.7 电话API(V3.0.11及以上版本支持) 为提高信息的到达率和实效性,扩展推送的使用场景,我们推出了推送与短信的融合通知模式。开发者可以设置在一定时间内,如果用户未收到或未点击推送,通过短信补发通知用户。具体方案可参考:推送短信融合。 为实现推送短信融合方案,需要在终端接入绑定/解绑电话号接口,接口详情如下。 绑定电话号将设备与电话号绑定 参数 phoneNumber 要绑定的手机号callback 回调 void bindPhoneNumber(String phoneNumber, CommonCallback callback); 解绑电话号解除当前设备与电话号的绑定关系 参数 callback 回调 void unbindPhoneNumber(CommonCallback callback); 2. MessageReceiver/AliyunMessageIntentService 通过继承MessageReciever,可以拦截通知,接收消息,获取推送中的扩展字段。或者在通知打开或删除的时候,切入进行后续处理。如果调用了setPushIntentService,则需继承com.alibaba.sdk.android.push.AliyunMessageIntentService,并覆写相关方法,AliyunMessageIntentService所有消息回调同MessageReceiver一致。 使用方法: MessageReceiver 继承com.alibaba.sdk.android.push.MessageReceiver;在Manifest中找到原来MessageReceiver的配置,将上边的class替换成你自己的receiver[不要配置多个]。 <!--消息接收监听器--><receiver android:name="com.alibaba.sdk.android.push.MessageReceiver <-- 把这里替换成你自己的receiver"> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/> </intent-filter> ... ...</receiver> AliyunMessageIntentService 继承com.alibaba.sdk.android.push.AliyunMessageIntentService并覆写相关方法在Manifest中注册该service <service android:name="MyPushIntentService" > <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" /> </intent-filter> <intent-filter> <action android:name="com.alibaba.sdk.android.push.RECEIVE" /> </intent-filter> </service> 消息接收回调 用于接收服务端推送的消息。消息不会弹窗,而是回调该方法。 参数 context 上下文环境message CPushMessage类型,可以获取消息Id、消息标题和内容。 void onMessage(Context context, CPushMessage message); 通知接收回调 客户端接收到通知后,回调该方法。可获取到并处理通知相关的参数。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotification(Context context, String title, String summary, Map<String, String> extraMap) 通知打开回调 打开通知时会回调该方法,通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationOpened(Context context, String title, String summary, String extraMap); 无跳转逻辑通知打开回调 打开无跳转逻辑(open=4)通知时回调该方法(v2.3.2及以上版本支持),通知打开上报由SDK自动完成。 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数,包括部分系统自带参数: _ALIYUN_NOTIFICATION_ID_(V2.3.5及以上):创建通知对应id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上):创建通知对应id。默认不带,需要通过OpenApi设置 void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap); 通知删除回调 删除通知时回调该方法,通知删除上报由SDK自动完成。 参数 context 上下文环境messageId 删除通知的Id void onNotificationRemoved(Context context, String messageId); 通知在应用内到达回调 当用户创建自定义通知样式,并且设置推送应用内到达不创建通知弹窗时调用该回调,且此时不调用onNotification回调(v2.3.3及以上版本支持) 参数 context 上下文环境title 通知标题summary 通知内容extraMap 通知额外参数openType 原本通知打开方式,1:打开APP;2:打开activity;3:打开URL;4:无跳转逻辑openActivity 所要打开的activity的名称,仅当openType=2时有效,其余情况为nullopenUrl 所要打开的URL,仅当openType=3时有效,其余情况为null void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl); V2.3.3及以上版本开始支持)" class="reference-link">3. 自定义样式通知(V2.3.3及以上版本开始支持)Android Push SDK支持用户自定义通知样式,用户可以设定自己的通知样式,涉及的内容包括通知的提醒方式(声音、震动、静默),通知在状态栏的显示图标,推送消息应用内到达时是否创建通知以及自定义通知布局文件等。自定义样式通知的设置包括两部分: 3.1 客户端设置通知样式 用户利用SDK提供的自定义通知样式接口创建自定义样式通知。SDK中有两个自定义样式通知类:1)BasicCustomPushNotification;2)AdvancedCustomPushNotification。其中BasicCustomPushNotification用户设置基础样式,包括提醒方式、状态栏图标以及当推送消息到达时应用正处于前台情况下是否创建该通知等。AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了BasicCustomPushNotification的所有方法,同时还可以设置通知样式布局文件每个样式都需要对应一个特定的整数类型id,如果多个样式设置为同一个id,则最后设置的样式有效。如果SDK没有找到对应id的样式则会创建默认样式的通知样式只需设置一次,SDK会记住这个设置,在需要使用时加载对应样式具体使用例子请参考Demo 3.2 后端推送消息时添加自定义样式id 用户利用OpenApi推送消息时设定特定样式的id服务端不能设置样式,只能指定需要展现的样式id指定id的样式必须在客户端已经进行设置,否则SDK会创建默认样式的通知 3.3 Example BasicCustomPushNotification" class="reference-link">Example-BasicCustomPushNotificationBasicCustomPushNotification notification = new BasicCustomPushNotification();notification.setRemindType(BasicCustomPushNotification.REMIND_TYPE_SOUND);notification.setStatusBarDrawable(R.drawable.logo_yuanjiao_120);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(1, notification); AdvancedCustomPushNotification" class="reference-link">Example-AdvancedCustomPushNotificationAdvancedCustomPushNotification notification = new AdvancedCustomPushNotification(R.layout.notitfication_layout, R.id.m_icon, R.id.m_title, R.id.m_text);notification.setServerOptionFirst(true);notification.setBuildWhenAppInForeground(false);boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(2, notification); OpenApi" class="reference-link">Example-OpenApi客户端设置完成后,服务端在推送通知时需要利用OpenApi指明对应的自定义样式ID final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");final String date = dateFormat.format(new Date());PushRequest pushRequest = new PushRequest();// 推送目标pushRequest.setAppKey(appKey);pushRequest.setTarget("device"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部pushRequest.setTargetValue("deviceId"); // 推送配置pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知pushRequest.setTitle(date); // 消息的标题pushRequest.setBody("PushRequest body"); // 消息的内容pushRequest.setSummary("PushRequest summary"); // 通知的摘要pushRequest.setAndroidNotificationBarType(2);//设置的通知样式ID,通知栏自定义样式范围0-100// 推送配置: AndroidpushRequest.setAndroidOpenType("1"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 urlpushRequest.setAndroidExtParameters("{\"_NOTIFICATION_BAR_STYLE_\":\"2\"}"); 3.4 BasicCustomPushNotification API 默认构造函数 BasicCustomPushNotification的默认构造函数,所有配置采用默认设置:通知方式采用震动+通知;NotificationFlag采用Notification.FLAG_AUTO_CANCEL,状态栏图标用的是android.R.drawable.stat_notify_chat。 public BasicCustomPushNotification(); 构造函数参数 drawable 状态栏图标flags NotificationFlags,支持系统Notification下的Flag参数remindType 提醒类型,有BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public BasicCustomPushNotification(int drawable, int flags, int remindType); 获取状态栏图标 获取已设置的状态栏图标 public int getStatusBarDrawable() 设置状态栏图标 更改状态栏图标设置 参数 statusBarDrawable 状态栏图标资源id public void setStatusBarDrawable(int statusBarDrawable); 获取提醒方式 获取已经设置的提醒方式 public int getRemindType(); 设置提醒方式 更改自定义通知的提醒方式 参数 remindType 提醒方式,提供的参数有:BasicCustomPushNotification.REMIND_TYPE_SILENT:静默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震动;BasicCustomPushNotification.REMIND_TYPE_SOUND:声音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:声音+震动 public void setRemindType(int remindType); 获取Notification Flags参数 获取已经设置的notification flag参数 public int getNotificationFlags(); 设置Notification Flags参数 更改自定义通知的flags参数 参数 notificationFlags 支持系统自带的Notification Flag参数 public void setNotificationFlags(int notificationFlags); 获取是否服务端设置优先 利用OpenApi或者阿里云推送控制台推送消息都可以设置提醒方式,当后端设置的提醒方式和自定义样式提醒方式冲突时,SDK根据serverOptionFirst参数来判断提醒方式策略。如果该参数为true,则采用后端设定的提醒方式;如果该参数为false,则采用自定义样式指定的提醒方式。默认为false public boolean isServerOptionFirst(); 设置是否服务端优先 更改自定义通知的serverOptionFirst参数 参数 serverOptionFirst 是否服务器配置优先 public void setServerOptionFirst(boolean serverOptionFirst); 获取推送前台到达否创建通知参数 当推送到达时,如果应用处在前台,用户可以通过自定义样式决定是否创建通知。默认是创建通知 public boolean isBuildWhenAppInForeground(); 设置推送前台到达否创建通知参数 更改当推送到达时应用处在前台情况下是否创建通知的设置 参数 buildWhenAppInForeground 是否创建通知 public void setBuildWhenAppInForeground(boolean buildWhenAppInForeground); 3.5 AdvancedCustomPushNotification API AdvancedCustomPushNotification是BasicCustomPushNotification的子类,继承了上文中BasicCustomPushNotification的所有方法。 AdvancedCustomPushNotification构造函数 AdvancedCustomPushNotification类的构造函数,AdvancedCustomPushNotification没有默认构造函数 参数 view 自定义通知布局文件id。注:Notification的自定义布局是RemoteViews,和其他RemoteViews一样,在自定义视图布局文件中,仅支持FrameLayout、LinearLayout、RelativeLayout三种布局。iconViewId 自定义布局文件中icon的viewIdtitleViewId 自定义布局文件中title的viewIdcontentViewId 自定义布局文件中显示通知正文的viewId public AdvancedCustomPushNotification( int view, int iconViewId, int titleViewId, int contentViewId); 设置通知图标 设置通知栏中显示的图标,该图标显示在iconViewId所指定的控件中。 参数 icon icon图标资源id public void setIcon(int icon); 获取通知图标 获取设置的通知图标 public int getIcon(); 3.6 CustomNotificationBuilder API CustomNotificationBuilder用于注册用户设定好的自定义样式通知 获取CustomNotificationBuilder实例 CustomNotificationBuilder是单例类,必须通过指定接口来获取实例 public static CustomNotificationBuilder getInstance(); 注册自定义样式通知 用户创建好自定义样式通知后需要将其注册,并赋予其一个特定的id 参数 customNotificationId 所注册的自定义样式通知的id,id必须大于0。如果将多个不同的自定义样式通知赋予同一个id,则最后注册的通知有效,其他的通知将会被覆盖notification 创建的通知,该通知可以是BasicCustomPushNotification对象也可以是AdvancedCustomPushNotification对象,但是不能为null 返回 该方法会返回一个boolean类型的结果,如果返回true,则注册成功;反之则失败。 public boolean setCustomNotification(int customNotificationId, BasicCustomPushNotification notification);
2019-12-01 23:11:49 0 浏览量 回答数 0

问题

【分享】WeX5的正确打开方式(3)——绑定机制

  今天整理一下WeX5的绑定机制。 原生的问题   假设我们做一个订单系统,需要显示商品单价,然后可以根据输入数量计算出总价并显示出来。使用原生代码也很容易实现,效果:    ...
小太阳1号 2019-12-01 21:23:54 5393 浏览量 回答数 3

回答

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension ,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。 什么是“状态管理模式”? 让我们从一个简单的 Vue 计数应用开始: new Vue({ // state data () { return { count: 0 } }, // view template: <div>{{ count }}</div>, // actions methods: { increment () { this.count++ } } }) 这个状态自管理应用包含以下几个部分: state,驱动应用的数据源; view,以声明方式将 state 映射到视图; actions,响应在 view 上的用户输入导致的状态变化。 以下是一个表示“单向数据流”理念的简单示意: 但是,当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏: 多个视图依赖于同一状态。 来自不同视图的行为需要变更同一状态。 对于问题一,传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。对于问题二,我们经常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。以上的这些模式非常脆弱,通常会导致无法维护的代码。 因此,我们为什么不把组件的共享状态抽取出来,以一个全局单例模式管理呢?在这种模式下,我们的组件树构成了一个巨大的“视图”,不管在树的哪个位置,任何组件都能获取状态或者触发行为! 通过定义和隔离状态管理中的各种概念并通过强制规则维持视图和状态间的独立性,我们的代码将会变得更结构化且易维护。 这就是 Vuex 背后的基本思想,借鉴了 Flux 、Redux 和 The Elm Architecture 。与其他模式不同的是,Vuex 是专门为 Vue.js 设计的状态管理库,以利用 Vue.js 的细粒度数据响应机制来进行高效的状态更新。 如果你想交互式地学习 Vuex,可以看这个 Scrimba 上的 Vuex 课程 ,它将录屏和代码试验场混合在了一起,你可以随时暂停并尝试。 vuex 什么情况下我应该使用 Vuex? Vuex 可以帮助我们管理共享状态,并附带了更多的概念和框架。这需要对短期和长期效益进行权衡。 如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。确实是如此——如果您的应用够简单,您最好不要使用 Vuex。一个简单的 store 模式 就足够您所需了。但是,如果您需要构建一个中大型单页应用,您很可能会考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择。引用 Redux 的作者 Dan Abramov 的话说就是: Flux 架构就像眼镜:您自会知道什么时候需要它。
景凌凯 2020-03-25 22:32:44 0 浏览量 回答数 0

问题

SSH面试题

1.什么是struts2?struts的工作原理? struts2:1)经典的  mvc (Model  View  Controller) 框架                          ...
琴瑟 2019-12-01 21:46:22 3489 浏览量 回答数 0

问题

百问百答 《文娱移动端技术》

阿里文娱移动端技术中定义一个客户端应有的标准化是什么? 阿里文娱移动端技术中提到优酷的标准化实践有哪些? 阿里文娱移动端技术中提到优酷一个应用通常是由什么组成? 阿里文娱移动端技术中提到数据模...
不语奈何 2021-03-25 13:32:35 25 浏览量 回答数 1

问题

提高工作效率的16条Android开发小经验:报错

笔者在经历了多个Android开发项目之后,个人积累也从别处学习了很多在Android开发中非常实用的小经验。下面从中选择了最实用的16条,分享给大家。 1.TextView中的getTextSize返回...
kun坤 2020-06-14 14:25:15 0 浏览量 回答数 0

问题

移植到 Direct3D 11:报错 

图形处理 Graphic (Drawing & Animation) 1 绘制基本图形 2 使用位图绘制图像 3 实现三维效果 Windows8提供的动画 情节提要动画 关键帧动画 缓动函数动画 视觉状态的情节提要动画 Window...
kun坤 2020-06-04 21:07:16 6 浏览量 回答数 1

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT