2023年制作直播类APP推荐使用一门APP在线开发平台,本土化中文化的APP开发工具

2023年制作直播类APP推荐使用一门APP在线开发平台,本土化中文化的APP开发工具

  最近几年,直播行业一直是互联网非常火热的热点,很多创业者纷纷选用了直播来创业,不过怎么制作出一种直播类的移动应用来完成自己的创业梦想一直有很多制作者很疑惑,一门APP本次就为大家安排了一次直播类移动应用来做分享。

邀请了一门APP制作者技术大神为大家分享直播类移动应用的制作经验!

  讲师介绍:

  卢智华-一门APP早期制作者,俗称拓荒牛,拥有多个项目制作经验,涉及金融、社交、招聘、商城、资讯等领域。

热衷探索各种UX工程化构建工具及框架,旨于提升效率,现在担任公司技术负责人。

  大纲

  一、 主体功能分解

  推流(主播)

  拉流(观众)

  连麦

  聊天室

  文字消息

  弹幕消息

  礼物消息

  支付

  2、主要技术储备

  直播服务商:阿里云、乐视云、亲加云、7牛云、AnyRTC、网易云…本次以亲加云为聊一聊案例

  即时通讯:融云、环信

  多媒体资源储存:7牛、又拍云、阿里云

  分享:QQ、微信、微博

  推送:极光、信鸽…

  支付:微信支付、支付宝、苹果内购(非Apple Pay)

  Apple pay和程在线生成app的平台序内购买的区别:Apple Pay用于销售物理商品,比如食品杂货、衣服和电器,也能用于支付俱乐部的会员资格、酒店预订以及演出门票;另一方面,应用内支付只用于销售虚拟物品,如您的移动应用里的消耗类内容(宝石/金币),以及订阅服务内容。

  利用Ping++迅速集成微信支付与支付宝

  3、技术实践(以亲加云平台DEMO为准)

  体验Demo

  前期准备

  项目架构

  推流流程

  拉流流程

  聊天室消息机制

  连麦流程

  4、常见问题

  苹果支付内购测试

  在线人数实时统计

  提现

  移动应用崩溃闪退

  技术实践

  亲加平台非常有担当的提供了一种基于一门APP制作的Demo,因此,对于制作者来看,是一件很幸福的事情,能够少走了很多弯路。

想当初直播模块刚推出的时候,没有平台的demo,所有代码的组织都是要自己摸索,Bug又是一大堆,简直是半步一种坑,举步维艰,说出来都是泪啊~!(ㄒoㄒ)~~

  体验Demo

  前期准备

  找亲加申请开通一种测试账号,用于登录亲加后台获取appKey与accessSecret

  登录后,创建好一种直播间

  在github 下载Demo源码

  项目架构

  是因为亲加demo的主要javascript业务逻辑都写在了html里面,因此我们想要先厘清各个html文件的作用:

  亲加Demo|-html |-p二p.html – 连麦 |-player.html – 拉流播放器(观众端),负责渲染视频画面 |-player_mask.html – 观众端交互层,处于视频画面上层 |-publisher.html – 实现推流(主播),负责采集视频、音频 |-publisher_mask.html – 主播端交互层,同理,也是处于窗口的最上层 |-settings_frm.html – 设置页,填写appKey与accessSecret |-settings_win.html – 不解释,您懂的|-index.html – 程序入口

  对应7个页面的预览图

  index.html – 首页

  首先栏为房间号;第2栏为进入房间所需的密码;第3栏是昵称,可随意填写

  settings_win.html && settings_frm.html – 高级设置

  首先次使用该Demo时,必须先填写好appKey与accessSecret,亦能够在程序里赋值好。

  publisher.html && publisher_mask.html – 主播端

  player.html && player_mask.html – 观众端

  p二p.html – 连麦

  此Demo的连麦是由主播在观众列表选用观众发起的

  项目想要的模块

  亲加通讯云包括了基础模块(gotyeLiveCore)、聊天室模块(gotyeLiveChat)、h5转ios app播放器模块(gotyeLivePlayer)、直播模块(gotyeLivePublisher)、连麦模块(gotyeLiveP二P)共5大模块,用户的角色,想要用到的模块也不同;

  gotyeLiveCore 为基础模块,需第一调用。

通过该模块的authRoomSession接口验证房间信息。

其中session参数的内容为上文中提到的房间ID、密码、昵称。

验证通过后,依据回调返回的角色,再调用对应的后续模块。

  gotyeLivePublisher 为直播模块,若用户角色为主播,使用该模块即可进行直播,以及直播时可使用到的摄像头前后切换、分享、横竖屏切换、闪光灯开启、美颜、静音等功能。

  gotyeLiveChat 为聊天模块,若想要看到其它用户的聊天信息或者自己发出聊天内容,则想要使用该模块

  gotyeLivePlayer 为播放器模块,若用户角色为助理或观众,使用该模块即可看到直播内容。

  gotyeLiveP二P 为连麦模块,需由主播发起,观众或助理可选用接受连麦或拒绝连麦,接受后即建立连麦连接,可相互看到对方的画面。

  还有,dialogBox 模块并非来自亲加平台,核心用于交互上的对话提示框。

  Demo体验完之后,能够开始分析代码了,看看移动应用如何运作的。

  拿到源码后,想要在config.xml把widget标签的id改为自己项目的id值,要不然不能上传代码云编译。

  同时,还要把下方的appKey和accessSecret这两个配置项换成自己的。

假设没有也没关系,是因为我发现平台Demo内设的配置参数全部是有效的,包括:appKey、accessSecret、房间号、房间密码。

(不排除后期这些参数会失效,学生党体验就趁早)

  一切顺利的话,就能够上传代码,编译个自定义AppLoader

  index.html 页面核心是处理gotyeLiveCore模块的业务逻辑

  在 check() 方法里的调用了 core.registerApp 其实能够不调用,是因为假设在config.xml文件中配置了appKey以及accessSecret的信息,这么在模块初始化的时候底层会自动调用此接口,无需再手动调用。

  …//这部分代码能够去掉var settings=$api.getStorage(‘settings’); if(settings){ core.registerApp({ appKey: settings.appKey, accessSecret: settings.accessSecret });}…

  这里有个细节要注意,authRoomSession 的 roomId 参数类型是字符串,并不是数字类型,虽然Android能够兼容两个类型,不过IOS就不行,因此要小心。

  publisher.html && publisher_mask.html

  主播界面由两个视图层重叠构成,交互层在图像层之上

  因此在打开 publisher_mask.html 页面是一定要把背景设置为透明:

  api.openFrame 的 bgColor 设置为 transparent

  把 hmlt 与 body 这两个标签的背景颜色设置为透明,代码如下:

  body, html { background: transparent;}

  publisher_mask.html 的初始化主体逻辑(apiready)

  推流流程(主播)

  推流事件(按照示例代码的事件注册顺序)

  推流的准备工作都完成后,就能够开始推流了,对应 publisher_mask.html页面的 startPublisher 函数。

  player.html && player_mask.html

  观众界面的视图结构跟主播界面同样,这里就不多说了。

  player_mask.html 的初始化主体逻辑(apiready)

  拉流流程(观众)

  拉流事件(按照示例代码的事件注册顺序)

  publisher_mask.html && player_mask.html

  聊天室的业务逻辑都放在交互层页面上,初始化流程:

  主播跟观众的聊天室初始化流程其实大同小异,区别在于主播多了一种 定时获取聊天室用户列表 的操作,是因为连麦是由主播主动选用观众发起的,因此想要这个操作。

  聊天室事件(按照示例代码的事件注册顺序)

  主播与观众的聊天室监听事件都是 receiveMsg 与 forceLogout 这两个;其中,receiveMsg 不止仅接收文字消息,还能够有 礼物消息、 弹幕消息、 连麦消息 等。

  聊天室消息机制

  现在Demo的聊天室只有两种消息类型:文字消息 和 连麦消息。

  发送文字消息的逻辑也很轻松,调用 chat.sendText 接口发送,然后做好监听,输出消息,完了。

在Demo上对应逻辑打包在 sendChart 函数里。

  连麦功能是基于聊天室消息机制触发的,Demo的连麦流程如下:

  是因为 ios 与 android 的机制不同样,因此连麦的 joinRoom 要分开官方处理。

  p二p.html 只针对 ios 上使用,与主播连麦时,作为观众端本地预览的小窗口; android就不同样,它会把主播的推流和副主播的推流合成在一起进行渲染,简称,合流,就是说两个画面合成在一起。

  温馨提示:现在yimenapp官方上的亲加模块的连麦功能只支持1对1,1对多的功能还没有自由出来。

  连麦事件

  joinedRoom – 成功连接视频房间

  connected – 成功建立视频通话连接

  disconnected – 视频通话断开连接

  error – 发生错误

  主播辅助功能

  切换前后摄像头 – switchCamera()

  闪光灯 – setTorch() 这里有个细节要注意,要打开闪光灯必须得切换到后置摄像头

  美颜滤镜 – setFilter()

  观众辅助功能

  切换横竖屏 – setScreen()

  清晰度设置 – onQualityClick() onQualityItemClick() 观众端切换观看的清晰度是基于原始流在后端进行转码后的效果,这部分转码的功能是视频传输云端去完成的,但是通常不意见做过多的转码服务,是因为转码后的流会有一种叠加延时,用户体验不好,更关键的是该服务是要还有收费的!

  常见问题

  移动应用崩溃闪退

  在制作直播类移动应用时候,闪退问题能够说是家常便饭,不管大家信不信,反正我过去的制作经验证明了这一点,因此,前期要研究好闪退日志收集梳理的问题,我介绍大家集成一种闪退日志收集梳理模块 loweb免费生成appgCrash ,虽然这个模块想要收费,但重要是能发现问题并解决,这一点至关重要。

总体感觉不错,根本上一发生闪退,就能够马上上报到后台。

2023年制作直播类APP推荐使用一门APP在线开发平台,本土化中文化的APP开发工具

转到APP设置 APP开发实现APP本地通知能力

用做网页的技术做APP
一门提供标准化的jsbridge-mini.js库,您只需要在页面引用执行JS即可实现各种原生APP、原生PC的功能能力。

==================APP端==================
【APP端】(安卓版&苹果版)目前提供200+原生功能,2000+JS映射接口,用做网站的技术即可实现各种原生APP能力、APP demo地址https://www.yimenapp.com/doc/demo.cshtml下载教程:
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
一门APP开发平台通用JS

转到APP设置 APP开发实现APP本地通知能力

核心代码示例,详情参阅demo

jsBridge.appSettings();

A标签执行JS示例代码

<a href="javascript:void(0)" onclick="zhixing()">执行</a> 
<!-- 写入一个A标签href值为"javascript:void(0)",定义点击事件onclick;-->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- 在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接;-->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.appSettings();

}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->

按钮执行JS示例代码

<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.appSettings();

}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->

notify 本地通知 示例四 APP开发实现本地消息通知能力

notify 本地通知 示例四 APP开发实现本地消息通知能力

请仔细阅读本说明:
♦ 发送延时(interval 参数大于 0 秒)或即时本地通知;
♦ 发送后请打开设备通知栏查看;
♦ 点击通知会自动激活APP,如提供了 url 参数,同时会打开此链接(openUrlInApp 参数为 true 表示在App内打开,否则在系统浏览器打开);
♦ 有未读通知的时候,桌面APP图标一般会显示数字角标(badge);
♦ 部分 Android 设备默认是禁用通知的,可调用 requestAuth 检查是否允许通知;
♦ 如未允许通知,可调用 jsBridge.appSettings() 跳转到APP设置界面,让用户开启通知;
♦ 如需显示悬浮或锁屏通知,部分设备可能需要人工开启对应权限;
♦ 在延时结束之前(interval 参数指定的)可调用 cancelAll 取消通知,这样就不会收到还没发送的通知了;
♦ Android 特性:在 interval 参数延迟结束之间要确保APP进程处于存活状态,否则可能收不到通知;
♦ iOS 特性:如果APP处于前台激活状态,仅弹出通知提示,不会发送到通知栏;如果APP处于后台、杀死或锁屏状态,会发送到通知栏;

核心代码示例,详情参阅demo

jsBridge.notification.notify({
  title  : "妈妈的消息",
  content: "你妈喊你回家吃饭了,速回~~~"
}, function(succ, data) {
  if (succ) {
    console.log("已发送");
  } else {
    alert(JSON.stringify(data));
  }
});

A标签执行JS示例代码

<a href="javascript:void(0)" onclick="zhixing()">执行</a> 
<!-- 写入一个A标签href值为"javascript:void(0)",定义点击事件onclick;-->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- 在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接;-->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.notification.notify({
  title  : "妈妈的消息",
  content: "你妈喊你回家吃饭了,速回~~~"
}, function(succ, data) {
  if (succ) {
    console.log("已发送");
  } else {
    alert(JSON.stringify(data));
  }
});

}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->

按钮执行JS示例代码

<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.notification.notify({
  title  : "妈妈的消息",
  content: "你妈喊你回家吃饭了,速回~~~"
}, function(succ, data) {
  if (succ) {
    console.log("已发送");
  } else {
    alert(JSON.stringify(data));
  }
});

}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->

notify 本地通知 示例二 APP开发实现APP本地通知消息功能

notify 本地通知 示例二 APP开发实现APP本地通知消息功能

请仔细阅读本说明:
♦ 发送延时(interval 参数大于 0 秒)或即时本地通知;
♦ 发送后请打开设备通知栏查看;
♦ 点击通知会自动激活APP,如提供了 url 参数,同时会打开此链接(openUrlInApp 参数为 true 表示在App内打开,否则在系统浏览器打开);
♦ 有未读通知的时候,桌面APP图标一般会显示数字角标(badge);
♦ 部分 Android 设备默认是禁用通知的,可调用 requestAuth 检查是否允许通知;
♦ 如未允许通知,可调用 jsBridge.appSettings() 跳转到APP设置界面,让用户开启通知;
♦ 如需显示悬浮或锁屏通知,部分设备可能需要人工开启对应权限;
♦ 在延时结束之前(interval 参数指定的)可调用 cancelAll 取消通知,这样就不会收到还没发送的通知了;
♦ Android 特性:在 interval 参数延迟结束之间要确保APP进程处于存活状态,否则可能收不到通知;
♦ iOS 特性:如果APP处于前台激活状态,仅弹出通知提示,不会发送到通知栏;如果APP处于后台、杀死或锁屏状态,会发送到通知栏;

用做网页的技术做APP
一门提供标准化的jsbridge-mini.js库,您只需要在页面引用执行JS即可实现各种原生APP、原生PC的功能能力。

==================APP端==================
【APP端】(安卓版&苹果版)目前提供200+原生功能,2000+JS映射接口,用做网站的技术即可实现各种原生APP能力、APP demo地址https://www.yimenapp.com/doc/demo.cshtml下载教程:
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
一门APP开发平台通用JS

核心代码示例,详情参阅demo

//iOS 苹果端执行本接口后把App推到后台或者锁屏手机,3秒后会收到通知。
jsBridge.notification.notify({
  title  : "打开百度的通知",
  content: "这是通知内容。点击在系统浏览器中打开百度...",
  url    : "https://m.baidu.com",
  openUrlInApp: false,
  interval    : 3
}, function(succ, data) {
  if (succ) {
    console.log("3秒后发送通知");
  } else {
    alert(JSON.stringify(data));
  }
});

A标签执行JS示例代码

<a href="javascript:void(0)" onclick="zhixing()">执行</a> 
<!-- 写入一个A标签href值为"javascript:void(0)",定义点击事件onclick;-->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- 在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接;-->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
//iOS 苹果端执行本接口后把App推到后台或者锁屏手机,3秒后会收到通知。
jsBridge.notification.notify({
  title  : "打开百度的通知",
  content: "这是通知内容。点击在系统浏览器中打开百度...",
  url    : "https://m.baidu.com",
  openUrlInApp: false,
  interval    : 3
}, function(succ, data) {
  if (succ) {
    console.log("3秒后发送通知");
  } else {
    alert(JSON.stringify(data));
  }
});

}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->

按钮执行JS示例代码

<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
//iOS 苹果端执行本接口后把App推到后台或者锁屏手机,3秒后会收到通知。
jsBridge.notification.notify({
  title  : "打开百度的通知",
  content: "这是通知内容。点击在系统浏览器中打开百度...",
  url    : "https://m.baidu.com",
  openUrlInApp: false,
  interval    : 3
}, function(succ, data) {
  if (succ) {
    console.log("3秒后发送通知");
  } else {
    alert(JSON.stringify(data));
  }
});

}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->

notify 本地通知 示例一 APP开发实现APP本地通知能力

notify 本地通知 示例一 APP开发实现APP本地通知能力

本地通知应用举例:

1. 用户将App推到后台或退出App时发送一个延时10分钟的本地通知,10分钟后手机会收到这条消息,可提示用户继续未完成的工作。

2. App有个计时任务,可以在任务开始时发送一个延时任务时长的通知,当任务结束时用户会收到此通知。

用做网页的技术做APP
一门提供标准化的jsbridge-mini.js库,您只需要在页面引用执行JS即可实现各种原生APP、原生PC的功能能力。

==================APP端==================
【APP端】(安卓版&苹果版)目前提供200+原生功能,2000+JS映射接口,用做网站的技术即可实现各种原生APP能力、APP demo地址https://www.yimenapp.com/doc/demo.cshtml下载教程:
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
一门APP开发平台通用JS

请仔细阅读本说明:
♦ 发送延时(interval 参数大于 0 秒)或即时本地通知;
♦ 发送后请打开设备通知栏查看;
♦ 点击通知会自动激活APP,如提供了 url 参数,同时会打开此链接(openUrlInApp 参数为 true 表示在App内打开,否则在系统浏览器打开);
♦ 有未读通知的时候,桌面APP图标一般会显示数字角标(badge);
♦ 部分 Android 设备默认是禁用通知的,可调用 requestAuth 检查是否允许通知;
♦ 如未允许通知,可调用 jsBridge.appSettings() 跳转到APP设置界面,让用户开启通知;
♦ 如需显示悬浮或锁屏通知,部分设备可能需要人工开启对应权限;
♦ 在延时结束之前(interval 参数指定的)可调用 cancelAll 取消通知,这样就不会收到还没发送的通知了;
♦ Android 特性:在 interval 参数延迟结束之间要确保APP进程处于存活状态,否则可能收不到通知;
♦ iOS 特性:如果APP处于前台激活状态,仅弹出通知提示,不会发送到通知栏;如果APP处于后台、杀死或锁屏状态,会发送到通知栏;

核心代码示例,详情参阅demo

jsBridge.notification.notify({
  //通知标题(必须)
  title  : "Hello World!",
  //通知内容(必须)
  content: "这是通知内容。Hi, nice to meet you~",
  //点击通知可打开此链接(可选)
  url    : "https://m.baidu.com",
  //如果提供了url参数,可指定点击通知时是否在APP内打开url,默认 true(可选)
  //true  在APP内打开url
  //false 在系统浏览器内打开url
  openUrlInApp: true,
  //延迟发送通知(秒)(可选),默认0(立即发送)
  //注意:
  //1.Android 版:在 interval 延迟结束之间要确保APP进程处于存活状态,否则可能收不到通知
  //2.iOS 版:如果APP处于前台激活状态,仅弹出通知提示,不会发送到通知栏;如果APP处于后台、杀死或锁屏状态,会发送到通知栏
  interval    : 2,
  //桌面APP图标的角标数字(可选),默认无(仅支持 iOS)
  badge       : 1
}, function(succ, data) {
  if (succ) {
    console.log("2秒后发送通知");
  } else {
    alert(JSON.stringify(data));
  }
});

A标签执行JS示例代码

<a href="javascript:void(0)" onclick="zhixing()">执行</a> 
<!-- 写入一个A标签href值为"javascript:void(0)",定义点击事件onclick;-->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- 在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接;-->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.notification.notify({
  //通知标题(必须)
  title  : "Hello World!",
  //通知内容(必须)
  content: "这是通知内容。Hi, nice to meet you~",
  //点击通知可打开此链接(可选)
  url    : "https://m.baidu.com",
  //如果提供了url参数,可指定点击通知时是否在APP内打开url,默认 true(可选)
  //true  在APP内打开url
  //false 在系统浏览器内打开url
  openUrlInApp: true,
  //延迟发送通知(秒)(可选),默认0(立即发送)
  //注意:
  //1.Android 版:在 interval 延迟结束之间要确保APP进程处于存活状态,否则可能收不到通知
  //2.iOS 版:如果APP处于前台激活状态,仅弹出通知提示,不会发送到通知栏;如果APP处于后台、杀死或锁屏状态,会发送到通知栏
  interval    : 2,
  //桌面APP图标的角标数字(可选),默认无(仅支持 iOS)
  badge       : 1
}, function(succ, data) {
  if (succ) {
    console.log("2秒后发送通知");
  } else {
    alert(JSON.stringify(data));
  }
});

}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->

按钮执行JS示例代码

<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.notification.notify({
  //通知标题(必须)
  title  : "Hello World!",
  //通知内容(必须)
  content: "这是通知内容。Hi, nice to meet you~",
  //点击通知可打开此链接(可选)
  url    : "https://m.baidu.com",
  //如果提供了url参数,可指定点击通知时是否在APP内打开url,默认 true(可选)
  //true  在APP内打开url
  //false 在系统浏览器内打开url
  openUrlInApp: true,
  //延迟发送通知(秒)(可选),默认0(立即发送)
  //注意:
  //1.Android 版:在 interval 延迟结束之间要确保APP进程处于存活状态,否则可能收不到通知
  //2.iOS 版:如果APP处于前台激活状态,仅弹出通知提示,不会发送到通知栏;如果APP处于后台、杀死或锁屏状态,会发送到通知栏
  interval    : 2,
  //桌面APP图标的角标数字(可选),默认无(仅支持 iOS)
  badge       : 1
}, function(succ, data) {
  if (succ) {
    console.log("2秒后发送通知");
  } else {
    alert(JSON.stringify(data));
  }
});

}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->

极光消息推送如何实现数字角标?

极光消息推送如何实现数字角标?

通道支持说明

由于不同手机系统的限制,仅部分通道支持角标展示,支持情况如下:

手机类型极光通道厂商通道是否需要配置
iOS支持
华为支持​支持
小米支持支持
vivo支持不支持
OPPO不支持不支持
魅族不支持不支持

注意:仅 JPush SDK 4.4.0 及以上版本支持 vivo 角标。

iOS 角标

 JPush 封装 badge 功能,允许应用上传 badge 值至 JPush 服务器,由 JPush 后台帮助管理每个用户所对应的推送 badge 值,简化了设置推送 badge 的操作。

支持的版本

开始支持的版本:1.7.4

上传本地角标值

设置 JPush 服务器中存储的 badge 值,接口如下:

          + (BOOL)setBadge:(int)value

        
  • value 取值范围:[0,99999]
  • 本地仍须调用 [application setApplicationIconBadgeNumber:0] 函数设置图标上显示的 badge 值。

服务端设置

服务端推送时需要在 ios 字段下设置 badge 值。

关键字类型选项含义说明
badgeint可选应用角标可设置为 N、+N、-N,N 的取值范围为 [0,99]。若上传的角标值 value 为 10,表示角标会设置为 N、10+N、10-N(值小于 0 时默认清除角标)。为 0 或空字符串,则表示清除角标。如果不填,表示不改变角标数字。JPush 官方服务端 SDK 会默认填充 badge 值为 “+1″,详情参考:badge +1
          //服务端发送 json 消息串
{
    "notification": {
        "ios": {
            "alert": "hello, JPush!",
            "badge": "+1" //可传值为N,+N,-N, 0表示清除。
        }
    }
}

        

清除角标

1.点击通知时,客户端需要调用原生接口 setApplicationIconBadgeNumber 清除本地角标显示值。

          - (void)applicationWillEnterForeground:(UIApplication *)application {
  [application setApplicationIconBadgeNumber:0];
  [application cancelAllLocalNotifications];
}

        

2.清空 JPush 服务器中存储的 badge 值,即 [setBadge:0],接口如下:

          + (void)resetBadge

        

华为/荣耀角标

支持的版本

华为开始支持的版本:3.3.6 荣耀开始支持的版本:4.7.0

客户端配置

华为设备 EMUI 8.0 及以上、荣耀设备 Magic UI 5.0+ 支持数字角标展示,需要在 AndroidManifest.xml 里配置指定的权限 :

          <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE "/>
<uses-permission android:name="com.hihonor.android.launcher.permission.CHANGE_BADGE" />

        

服务端设置

完成客户端配置后,服务端推送时在 android 字段下配置 badge_class、badge_add_num 或 badge_set_num 字段,则可显示角标。

  • badge_add_num 表示设置角标数字累加值,在原角标的基础上进行累加。
  • badge_set_num 表示设置角标数字固定值。
关键字类型选项含义说明
badge_add_numint可选设置角标数字累加值,在原角标的基础上进行累加此属性目前仅针对华为 EMUI 8.0 及以上、小米 MIUI 6 及以上、vivo、荣耀设备生效。此字段如果不填,表示不改变角标数字。取值范围为:1-99,若设置了取值范围内的数字,下一条通知栏消息配置的 badge_add_num 数据会和原角标数量进行相加,建议取值为 1。
举例:badge_add_num 取值为 1,原角标数为 2,发送此角标消息后,应用角标数显示为 3。针对华为 / 荣耀通道,如果 badge_set_num 与 badge_add_num 同时存在,则以 badge_set_num 为准。
badge_set_numint可选设置角标数字固定值此属性目前仅针对华为 EMUI 8.0 及以上、荣耀设备走厂商通道时生效,如果 badge_set_num 与 badge_add_num 同时存在,则以 badge_set_num 为准。取值范围为:1-99,若设置了取值范围内的数字,对应下一条通知栏消息配置的 badge_set_num 数字则为角标数值,举例:badge_set_num 取值为 1,无论应用之前角标数为多少,发送此角标消息后,应用角标数均显示为 1。
badge_classstring可选桌面图标对应的应用入口 Activity 类, 比如“com.test.badge.MainActivity”仅华为和荣耀通道推送时生效,此值如果填写非主 Activity 类,以厂商限制逻辑为准。若需要实现角标累加功能,需配合 badge_add_num 使用,二者需要共存,缺少其一不可。若需要实现角标固定值功能,需配合 badge_set_num 使用,二者需要共存,缺少其一不可。
          //服务端发送 json 消息串
{
    "notification": {
        "android": {
            "alert": "hello, JPush!",
            "badge_add_num": 1, //角标增加值,取值范围1-99
            "badge_set_num": 1, //角标固定值,取值范围1-99
            "badge_class": "com.test.badge.MainActivity", //默认为 APP 的主 Activity
        }
    }
}

        

控制台设置

需要在【消息推送】-【推送设置】-【集成设置】-【华为/荣耀】点击编辑配置应用入口 Activity 类。注意必须是应用入口 Activity 类,且荣耀和华为厂商配置一致,否则无法显示角标。

清除角标

点击通知时,客户端需要手动清除角标数:

接口定义

          public static void setBadgeNumber(Context context, int num)

        

参数说明

  • context 是应用的 ApplicationContext
  • num 新的角标数字,传入负数将会修正为0

示例如下:

          JPushInterface.setBadgeNumber(this,0);

        

小米角标

小米 MIUI 6 及以上设备支持数字角标,小米系统自动处理数字角标展示功能,默认收到通知+1处理,打开 App 清零。

vivo 角标

vivo 设备仅支持走极光通道时可以显示角标。

支持版本

开始支持的版本:4.4.5

客户端配置

1.vivo 需要在 AndroidManifest.xml 里配置指定的权限:

          <uses-permission android:name="com.vivo.notification.permission.BADGE_ICON" /> />

        

2.“桌面图标角标”默认关闭,需要用户手动开启。

  • 开启路径:“设置”-“通知与状态栏”-“应用通知管理”-应用名称-“桌面图标角标”。
  • 未成功接入“桌面图标角标”的应用,无“桌面图标角标”选项。
  • 视OS版本差异,“桌面图标角标”名称可能为“应用图标标记”或“桌面角标”。

3.只有走极光通道,有 onNotifyMessageArrived 回调的前提下,角标才可生效。

服务端设置

完成客户端配置后,服务端推送时在 android 字段下配置 badge_add_num 和 badge_class 字段,则可显示角标。

关键字类型选项含义说明
badge_add_numint可选角标数字,取值范围1-99此字段如果不填,表示不改变角标数字;若设置了取值范围内的数字,下一条通知栏消息配置的 badge_add_num 数据会和之前角标数量进行增加。
建议 badge_add_num 配置为1; 举例:badge_add_num 配置1,应用之前角标数为2,发送此角标消息后,应用角标数显示为3。
          //服务端发送 json 消息串
{
    "notification": {
        "android": {
            "alert": "hello, JPush!",
            "badge_add_num": 1, //角标增加值,取值范围1-99
            "badge_class": "com.test.badge.MainActivity", //默认为 APP 的主 Activity
        }
    }
}

        

清除角标

点击通知时,客户端需要手动清除角标数:

接口定义

          public static void setBadgeNumber(Context context, int num)

        

参数说明

  • context 是应用的 ApplicationContext
  • num 新的角标数字,传入负数将会修正为0

示例如下:

          JPushInterface.setBadgeNumber(this,0);

极光消息推送安全管理操作教程

极光消息推送安全管理操作教程

为了防止推送事故,极光控制台提供安全管理设置。本文旨在指导用户如何在极光控制台设置安全管理。

IP 白名单

说明

不填该项表示 API 调用无 IP 限制;一旦填写,则表示该 AppKey 仅接受指定 IP 的推送请求。

设置

进入【消息推送】-【推送设置】-【安全管理】-【IP 白名单】页面,填写可以调用的 IP 地址并点击保存。

推送审核

说明

创建推送后,需要审核人员审核通过后才能下发消息。

即使您拥有此应用的审核权限,您也无法审核自身账号发出的推送请求。

审核人员

  • 您可以选择任意有审核权限的账号进行审核操作。
  • 默认管理员拥有审核权限,您也可以选择管理员下面的子账号对此应用的推送进行审核操作。
  • 如果没有其它子账号,可联系管理员添加子账号并且给子账号分配此应用的推送审核权限。

审核目标

  • 目前仅支持针对在极光官网页面发出的推送请求进行审核。

设置

1.点击开启“启用推送审核”。
2.选择审核人员,点击保存。

黑词管理

说明

启用后,发送消息时将对消息内容进行黑词检测,最多可添加 100 个黑词。

设置

1.点击开启“进行推送内容黑词检测”。
2.添加黑词,选择开启/关闭。

避免重复发送

说明

开启后从技术层面绝对避免同样的消息在同一天内重复发送给单个用户。

设置

点击开启“避免重复发送”。

极光消息推送标签管理查看教程

极光消息推送标签管理查看教程

标签查询

进入【极光控制台】-【消息推送】-【配置管理】-【标签管理】页面,输入标签/Registration ID,可以查询该标签/Registration ID 是否存在。

点击详情可以查看该标签下的所有 Registration ID。

Registration ID 获取方法

客户端初始化 JPush 成功后,JPush 服务端会分配一个 Registration ID,作为此设备的标识(同一个手机不同 App 的 Registration ID 是不同的),因此排查时需要获取 Registration ID 定位问题,获取方法:AndroidiOS

标签绑定

若查询当前 Registration ID 没有绑定该标签,需要你重新绑定标签后再推送。

添加标签

若需要新增标签,点击“添加标签”,填写标签和 Registration ID/Alias(别名) 即可添加绑定关系。

添加 Registration ID

若该标签需要绑定新的设备,点击 “RID 绑定”,填写需要绑定设备的 Registration ID 即可添加绑定关系。

标签删除

若需要删除标签,点击“删除”操作,该标签以及标签和应用所有设备的绑定关系均被删除。

标签解绑

若需要删除标签下的部分设备,可以进入标签详情页面,点击“解绑”即可删除标签与该设备的的绑定关系。

极光消息推送别名管理操作教程

极光消息推送别名管理操作教程

别名查询

进入【极光控制台】-【消息推送】-【配置管理】-【别名管理】页面,输入别名/Registration ID,可以查询该别名/Registration ID 是否存在。

点击详情可以查看该别名下的所有 Registration ID。

Registration ID 获取方法

客户端初始化 JPush 成功后,JPush 服务端会分配一个 Registration ID,作为此设备的标识(同一个手机不同 App 的 Registration ID 是不同的),因此排查时需要获取 Registration ID 定位问题,获取方法:AndroidiOS

别名绑定

若查询当前 Registration ID 没有绑定该别名,需要你重新绑定别名后再推送。

添加别名

若需要新增别名,点击“添加别名”,填写别名和 Registration ID 即可添加绑定关系。

添加 Registration ID

若该别名需要绑定新的设备,点击 “RID 绑定”,填写需要绑定设备的 Registration ID 即可添加绑定关系。

别名删除

若需要删除别名,点击“删除”操作,该别名以及别名和应用所有设备的绑定关系均被删除。

别名解绑

若需要删除别名下的部分设备,可以进入别名详情页面,点击“解绑”即可删除别名与该设备的的绑定关系。

极光消息推送后台查看推送历史

极光消息推送后台查看推送历史

本文旨在指导客户如何在极光控制台上快速查看推送记录。

推送记录

推送成功后,点击“去看看”,进入推送记录页面。


推送记录页面会显示 Message ID、推送状态等内容,点击“详情”可以查看通知详情。

推送状态为“推送失败”时,该条推送显示为红色,点击“推送失败”右侧符号可以查看详细错误信息。

通知详情

基本消息

点击消息体,可以查看这条推送的 json 消息体。

通知消息

选择对应的平台,可以查看该平台不同通道的详细推送数据。

折损原因分析

点击环形区域可以查看细分的折损原因。

getAllTags 获取当前绑定的所有标签 APP开发接入极光消息推送能力

用做网页的技术做APP
一门提供标准化的jsbridge-mini.js库,您只需要在页面引用执行JS即可实现各种原生APP、原生PC的功能能力。

==================APP端==================
【APP端】(安卓版&苹果版)目前提供200+原生功能,2000+JS映射接口,用做网站的技术即可实现各种原生APP能力、APP demo地址https://www.yimenapp.com/doc/demo.cshtml下载教程:
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
一门APP开发平台通用JS

getAllTags 获取当前绑定的所有标签 APP开发接入极光消息推送能力

♦ 回调方法参数返回标签数组

核心代码示例,详情参阅demo

jsBridge.jiguang.getAllTags(function(tags){
  alert(JSON.stringify(tags));
});

A标签执行JS示例代码

<a href="javascript:void(0)" onclick="zhixing()">执行</a> 
<!-- 写入一个A标签href值为"javascript:void(0)",定义点击事件onclick;-->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- 在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接;-->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.jiguang.getAllTags(function(tags){
  alert(JSON.stringify(tags));
});

}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->

按钮执行JS示例代码

<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.jiguang.getAllTags(function(tags){
  alert(JSON.stringify(tags));
});

}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->

deleteTags 删除指定标签 APP开发接入极光消息推送能力

用做网页的技术做APP
一门提供标准化的jsbridge-mini.js库,您只需要在页面引用执行JS即可实现各种原生APP、原生PC的功能能力。

==================APP端==================
【APP端】(安卓版&苹果版)目前提供200+原生功能,2000+JS映射接口,用做网站的技术即可实现各种原生APP能力、APP demo地址https://www.yimenapp.com/doc/demo.cshtml下载教程:
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
一门APP开发平台通用JS

deleteTags 删除指定标签 APP开发接入极光消息推送能力

核心代码示例,详情参阅demo

jsBridge.jiguang.deleteTags(['tag3', 'tag4'], function(tags){
  alert(JSON.stringify(tags));
});

A标签执行JS示例代码

<a href="javascript:void(0)" onclick="zhixing()">执行</a> 
<!-- 写入一个A标签href值为"javascript:void(0)",定义点击事件onclick;-->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- 在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接;-->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.jiguang.deleteTags(['tag3', 'tag4'], function(tags){
  alert(JSON.stringify(tags));
});

}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->

按钮执行JS示例代码

<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.jiguang.deleteTags(['tag3', 'tag4'], function(tags){
  alert(JSON.stringify(tags));
});

}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->

setTags 设置标签 APP开发接入极光消息推送能力

用做网页的技术做APP
一门提供标准化的jsbridge-mini.js库,您只需要在页面引用执行JS即可实现各种原生APP、原生PC的功能能力。

==================APP端==================
【APP端】(安卓版&苹果版)目前提供200+原生功能,2000+JS映射接口,用做网站的技术即可实现各种原生APP能力、APP demo地址https://www.yimenapp.com/doc/demo.cshtml下载教程:
♦ JS-SDK 引用方式:
♦ 普通网页 script 方式加载:下载最新版,请在页面上调用 jsBridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge 具体请参考 npm package
一门APP开发平台通用JS

setTags 设置标签 APP开发接入极光消息推送能力

♦ 注意这个接口是覆盖逻辑,而不是增量逻辑。即新的调用会覆盖之前的设置。

核心代码示例,详情参阅demo

jsBridge.jiguang.setTags(['tag1', 'tag2', 'tag3'], function(tags){
  alert(JSON.stringify(tags));
});

A标签执行JS示例代码

<a href="javascript:void(0)" onclick="zhixing()">执行</a> 
<!-- 写入一个A标签href值为"javascript:void(0)",定义点击事件onclick;-->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- 在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接;-->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.jiguang.setTags(['tag1', 'tag2', 'tag3'], function(tags){
  alert(JSON.stringify(tags));
});

}
</script>
<!--执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可;-->

按钮执行JS示例代码

<button onclick="zhixing()" >执行</button>
<!-- //写一个按钮,定义点击执行事件; -->
<script src="您的服务器URL/jsbridge-mini.js"></script>
<!-- //在您的服务器引入一门JS地址,请下载jsbridge-mini.js上传您自己的服务器获取链接; -->
<script type="text/javascript">
function zhixing() {


<!--这里可以直接复制JS核心代码到此{}括号内-->
jsBridge.jiguang.setTags(['tag1', 'tag2', 'tag3'], function(tags){
  alert(JSON.stringify(tags));
});

}
</script>
<!-- //执行核心代码;
//如果需要进入页面就执行,去掉点击事件即可; -->

个推推送自定义通知图标

个推推送自定义通知图标

一、需求背景

1.1 背景描述

通知图标可做为一个应用的标识,方便在手机通知栏显示应用的通知推送消息,也便于用户在第一时间辨识是哪个应用都消息做出对应的消息处理。

如果需要根据不同推送场景进行推送,还可以设置多套图标区分应用场景。

比如:微信和QQ是通讯工具,通知栏收到微信或者QQ的消息后,通知中心会在消息文本前显示微信或者QQ的图标,方便第一时间处理通讯消息。

1.2 名称解释

名词解释
小图标push_small.png会展示在顶部状态栏和通知左上角位置,push_small 只能内置, 不能修改
通知图标push.png将会作为通知展示图标,会展示在通知内容右侧。

1.3 各渠道支持情况

渠道小图标(push_small.png)右侧通知图标(push.png)
个推支持支持
APNs支持支持
华为支持不支持
荣耀支持支持
小米支持不支持
魅族支持不支持
OPPO支持不支持
VIVO支持不支持

二、功能实现

  • Android 在线个推通道支持设置小图标push_small.png和右侧通知图标push.png;离线厂商通道小图标可客户端嵌入设置,通知图标暂不支持配置(通知图片内容可看下各厂商富文本处理)。
  • iOS在线需要走透传渠道,暂不支持动态设置小图标和通知图标;离线apns通道可通过多媒体设置通知图标。
  • 开发者可通过调用 个推服务端 api 或者直接从 个推开发者中心 页面推送。

2.1 Android

2.1.1 客户端

设置通知栏及通知栏顶部图标

2.1.2 服务端 API

小图标push_small.png

只支持客户端嵌入,服务端暂不支持动态推送时设置小图标。

通知图标push.png

如果您需要根据不同推送场景切换不同通知栏图标或者其他配置多套通知栏图标的场景

  • 先在资源目录的 res/drawable-ldpi/、res/drawable-mdpi/、res/drawable-hdpi/、res/drawable-xhdpi/、res/drawable-xxhdpi/ 等各分辨率目录下放置相应的多套通知图标,例如 push1.pngpush2.png等
  • 通过 服务端推送 API 参数指定通知栏图标名称,如:
名称类型是否必需默认值描述
titleString通知消息标题,长度 ≤ 50
bodyString通知消息内容,长度 ≤ 256
logoString通知的图标名称,包含后缀名(需要在客户端开发时嵌入),如“push.png”,长度 ≤ 64
{
    "push_message":{
        "notification":{
            "title":"请填写你的通知标题",
            "body":"请填写你的通知内容",
            "logo":"logo.png",
            "click_type":"intent",
            "intent":"intent:#Intent;action=;end"
        }
    }
}

2.1.3 个推开发者中心

2.2 iOS

2.2.1 客户端

支持版本:

iOS 10 及以上的系统

客户端设置

  • 在集成个推SDK时,可以添加 Notification Service Extension,实现 多媒体展示

涉及代码:

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {

    self.contentHandler = contentHandler;
    self.bestAttemptContent = [request.content mutableCopy];

    NSLog(@"----将APNs信息交由个推处理----");

    [GeTuiExtSdk handelNotificationServiceRequest:request withAttachmentsComplete:^(NSArray *attachments, NSArray* errors) {

        //注意:是否修改下发后的title内容以项目实际需求而定
        //self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [需求而定]", self.bestAttemptContent.title];

        self.bestAttemptContent.attachments = attachments; //设置通知中的多媒体附件

        NSLog(@"个推处理APNs消息遇到错误:%@",errors); //如果APNs处理有错误,可以在这里查看相关错误详情

        self.contentHandler(self.bestAttemptContent); //展示推送的回调处理需要放到个推回执完成的回调中
    }];
}

2.2.2 服务端 API

multimedia说明

该字段为Array类型,最多可设置3个子项,每个参数定义如下所示:

名称类型是否必需默认值描述
urlString多媒体资源地址
typeNumber资源类型(1.图片,2.音频,3.视频)
only_wifiBooleanfalse是否只在wifi环境下加载,如果设置成true,但未使用wifi时,会展示成普通通知
{
    "ios":{
        "type":"notify",
        "payload":"自定义消息",
        "aps":{
            "alert":{
                "title":"通知标题",
                "body":"通知内容"
            },
            "content-available":0,
            "sound":"com.gexin.ios.silence",
            "category":"ACTIONABLE"
        },
        "auto_badge":"+1",
        "multimedia": [{
            "url": "https://xxx",
            "type": 1,
            "only_wifi": false
        }]
    }
}

2.2.3 个推开发者中心后台

个推自定义事件是什么意思?

个推自定义事件是什么意思?

自定义事件

个推透传及部分厂商返回的推送报表数据不包含展示数和点击数。可通过自定义事件来统计,先定义好自定义事件的名称及编号,在需要埋点的地方,调用对应方法来提交统计,补全相应数据。也可用于应用内部的某个事件统计,如点击某个按钮、跳转动作等。

什么是个推A/B分组推送?

什么是个推A/B分组推送?

A/B分组推送

功能说明:在同一个推送计划中,添加2-5条文案/人群进行对比测试,通过对各测试组的到达、展示、点击数据的监测分析,筛选出最优文案/人群,并支持实时及定时地按最优测试组补发剩余用户,提高通知消息点击率,助力运营提效。

应用场景:①确定人群,对比文案,看哪个文案的点击率更高;②确定内容,对比人群,看该商品/内容,哪个人群点击率更高,接受度更高。

使用说明:个推开发者中心–消息推送-创建推送-分组对比