# 开通

  • 登录DCloud开发者中心,通过实名认证后,可通过以下入口进入UniPush的Web控制台进行配置
    • HBuilderX中打开项目的manifest.json文件,在“App模块配置”项的“Push(消息推送)”->“UniPush”下点击配置
    • 登录DCloud开发者中心,在“我的应用”列表中选择进入应用管理页面,点击上方选项卡中的“uniPush”,然后点击“应用信息”
  • 在UniPush开通界面配置“Android包名”、“Android应用签名”、“iOS Bundle Id”等信息,点击“开通”
  • 开通后可进行其它消息推送参数配置
    • Android平台
      为了提升App离线送达率,建议配置厂商推送设置
    • iOS平台
      需配置推送证书,在“UniPush”页面的“配置管理”->“应用配置”可上传推送证书

更多信息详见 UniPush开通指南

# 配置

在manifest.json文件“App模块配置”项的“Push(消息推送)”下,勾选“UniPush”

注意

# FCM配置

# 概述

在海外网络环境下,部分网络在连接UniPush技术支持供应商个推的推送服务时,可能出现不稳定的情况。此时,开发者可以接入 FCM 辅助通道,当在个推服务断线的情况下,通过谷歌的 FCM 推送通道下发消息,提升推送到达率。

使用FCM时手机端需安装Google移动服务(GMS),并且可以正常连接Google服务(国内网络需要翻墙)

使用FCM必须先开通使用UniPush:

# 从谷歌后台申请key信息

进入 Firebase官网创建项目,获取google-services.json文件及Server key。

登录google账号,如果没有账号请先注册

登录后点击右上角的“Go to console”

打开项目列表页面,点击“Add project”创建项目

输入项目名称(根据自己应用取名),点击“Continue”

确认是否需要使用Google Analytics服务(根据自己需要开启或关闭),点击“Continue”

确认后创建项目,点击“Continue”

进入项目详情页面,点击“Android”图标添加Android应用

输入Android应用信息(包名、昵称、证书SHA-1),点击“Register App”

注册Android应用后下载配置文件“google-services.json”,保存google-services.json文件后面需要使用 点击“Next”继续

此步骤中的操作云端打包机已经处理,忽略提示信息,继续点击“Next”,进入下一步 完成注册Android应用,点击“Continue to console”回到项目详情页面

点击“Project settings”,进入项目设置页面

切换到服务账号项,点击生成新的私钥保存私钥json文件到本地,后面需要使用

# UniPush后台配置FCM参数

配置FCM需先开通UniPush,如应用未开通UniPush请先开通。 在HBuilderX的mainfest.json页面,在“App SDK配置”项下的“uniPush”栏点击“配置”

打开DCloud的开发者中心后台进入应用列表,点击应用名称进入详情,点击上方“uniPush”选项卡,点击“厂商推送设置”按钮进入配置UniPush的FCM参数

保存成功后在HBuilderX中重新提交云端打包,并在“App-云打包”界面选择google play 渠道包:

如果你已经完成了uniPush的代码开发,只需完成上述配置和打包即可,不用修改代码。

如果你还没有开发过推送代码,参考App端使用UniPush参考:https://ask.dcloud.net.cn/article/35622

# 本地离线打包

Android平台离线sdk集成UniPush支持FCM可参考:Push(消息推送)

# 注意事项

** FCM 离线消息仅支持GOOGLE 推送,暂不支持国内设备商的海外发行版本**

# Android平台推送图标配置

UniPush和个推推送模块支持设置自定义推送图标,包括push图标和推送小图标(small)

  • push图标
    默认使用应用图标
  • 推送小图标(small)
    默认使用个推提供的小图标

显示效果如下图所示:

# 源码视图配置

打开项目的manifest.json文件,切换到“源码视图”,手动设置推送图标。 在 "app-plus" -> "distribute" -> "sdkConfigs" -> "push" -> "unipush" -> "icons"节点下配置推送图标

{
    "unipush": {                    //可选,JSON对象,使用UniPush SDK配置,无需手动配置参数,云端打包自动获取配置参数
        "icons": {                          //可选,JSON对象,推送图标配置
            "push": {                               //可选,JSON对象,Push图标配置
                "ldpi": "",                                 //可选,字符串类型,普通屏设备推送图标路径,分辨率要求48x48
                "mdpi": "",                                 //可选,字符串类型,大屏设备设备推送图标路径,分辨率要求64x64
                "hdpi": "",                                 //可选,字符串类型,高分屏设备推送图标路径,分辨率要求96x96
                "xhdpi": "",                                 //可选,字符串类型,720P高分屏设备推送图标路径,分辨率要求128x128
                "xxhdpi": "",                                //可选,字符串类型,1080P高密度屏幕推送图标路径,分辨率要求192x192
            },
            "small": {                               //可选,JSON对象,Push小图标配置
                "ldpi": "",                                 //可选,字符串类型,普通屏设备推送小图标路径,分辨率要求18x18
                "mdpi": "",                                 //可选,字符串类型,大屏设备设备推送小图标路径,分辨率要求24x24
                "hdpi": "",                                 //可选,字符串类型,高分屏设备推送小图标路径,分辨率要求36x36
                "xhdpi": "",                                 //可选,字符串类型,720P高分屏设备推送小图标路径,分辨率要求48x48
                "xxhdpi": "",                                //可选,字符串类型,1080P高密度屏幕推送小图标路径,分辨率要求72x72
                "xxxhdpi": "",                               //可选,字符串类型,4K屏设备推送小图标路径,分辨率要求96x96
            }
        }
    }
}

也可在HBuilder X(3.5.1+ 版本) 中可视化配置

注意事项

  • 5+ App项目在manifest.json文件的 "plus" -> "distribute" -> "plugins" -> "push" -> "unipush" -> "icons"节点下配置推送图标
  • “个推推送”模块已不再维护,推荐使用UniPush模块,如需继续使用“个推推送”模块,可将“unipush”节点名称修改为“igexin”进行配置,完整配置信息可参考App完整manifest.json
# 推送小图标(small)要求

设计规范需要注意:

  1. 必须是带 Alpha 透明通道的 PNG 图片。
  2. 背景必须是透明的。 (如果非透明就会显示为白色方块)

# 使用UniPush

# 常见问题

# iOS启动时弹出发送通知授权框的问题

App勾选“Push(消息推送)”模块后,默认应用启动会立即申请推送消息权限,弹出系统发送通知授权框,如下:

如果希望应用启动不申请推送消息权限(不弹出系统发送通知授权框),可以在manifest.json文件的源码视图中配置"app-plus" -> "distribute" -> "ios" -> "pushRegisterMode"字段值为"manual",如下:

{
	"app-plus": {
		"distribute": {
			"ios": {
				"pushRegisterMode": "manual"
			}
		}
	}
}

需提交云端打包后生效
配置为"manual",需要在App代码中调用uni.getPushClientId触发申请推送消息权限,用户同意返回客户端推送标识

# iOS勾选推送并且基于HBuilderX 3.6.14+打包ipa变大的问题

  1. 为什么会变大?
    原因是推送SDK升级需要支持Swift环境,之前工程如果不包含Swift环境需要添加Swift环境(打包使用Swift语言开发的原生插件同样有类似问题)。
  2. 为什么只有生产包变大?
    只有用生产证书+AppStore类型的描述文件打出来的ipa会增大80M左右,苹果为了兼容iOS12.2之前的Swift版本,打包AppStore类型的ipa需要将全部版本的Swift环境添加到ipa的根目录,而测试证书以及adhoc描述文件打的包不会添加多个版本的Swift环境。 另:设置支持系统大于iOS12.2也可解决以上问题 设置iOS支持的最低版本
  3. ipa变大会导致用户下载的应用变大吗?
    大约只会增到2-3M左右。ipa上传的AppStore后苹果会根据用户手机系统最终只会保留一份Swift环境,用户实际下载的安装包不会大特别多。