腾讯移动推送
Unity3D
概述
接入向导
腾讯移动推送
发送推送消息
添加本地推送
标签推送
厂商通道推送
常见问题
Android
概述
接入向导
腾讯移动推送
发送推送消息
添加本地推送
标签推送
厂商通道推送
常见问题
IOS
概述
接入向导
腾讯移动推送
发送推送消息
添加本地推送
标签推送
常见问题
其他
数据结构
系统工具
腾讯移动推送 / Unity3D / 概述

概述

推送功能可以实现在游戏未运行的情况下给玩家手机推送游戏相关的信息,如各种节假日活动、周年庆活动等。推送效果如下图所示:

显示详情

接入向导

1 前置条件

1)您已经按MSDK unity接入配置模块说明完成 接入配置,确保推送开关PUSH已勾选。

2)MSDK iOS推送依赖苹果APNS实现,需要各业务PM或腾讯侧接口人在腾讯内网KeyStore飞鹰系统配置相关证书

2 iOS配置证书

配置证书仅针对iOS端,Android端可忽略该项。

1 申请证书

2 制作SSL证书

3 上传SSL证书

1 申请证书

产品需在KeyStore(腾讯内网,需业务PM或腾讯侧接口人操作)申请推送和发布证书,具体事宜详询KeyStore-helper(证书助手)。

2 制作SSL证书

1)从KeyStore(腾讯内网,需业务PM或腾讯侧接口人操作)上下载P12证书,具体路径:游戏产品->发布管理->证书管理,以MSDK为例如下图所示:

2)在打开的界面中下载发布证书下的xxx_push.p12文件
3)打开终端进入到xxx_push.p12文件所在的目录执行以下命令:
openssl pkcs12 -in xxx_push.p12 -out xxx_push.pem -nodes

3 上传SSL证书

进入飞鹰系统(腾讯内网,需业务PM或腾讯侧接口人操作),点击左侧导航栏:MSDK接入->腾讯移动推送->苹果平台->证书配置,如下图所示:

上传步骤2 制作SSL证书中生成的pem证书至生产环境,密码无需填写。上传成功后点击左上角 更新游戏证书信息 按钮保存。开发环境证书无需理会,至此,证书已设置完成。

iOS 添加推送相关代码

OC接口和C++接口二选一使用

1 以下接口为OC接口

您还需要在AppDelegate.mm中添加推送相关的5个方法:

1) 注册推送

签名文件配置正确才能成功注册推送。游戏需要在didFinishLaunchingWithOptions方法中调用MSDK的WGRegisterAPNSPushNotification方法进行推送注册。代码示例:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    …
    [MSDKXG WGRegisterAPNSPushNotification:launchOptions];
    …
}

2) 注册成功

注册成功游戏会收到didRegisterForRemoteNotificationsWithDeviceToken回调方法,游戏需要在此方法中调用WGSuccessedRegisterdAPNSWithToken方法将deviceToken上报到MSDK。 代码示例:

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
  [MSDKXG WGSuccessedRegisterdAPNSWithToken:deviceToken];
}

3) 注册失败

注册失败游戏会收到didFailToRegisterForRemoteNotificationsWithError方法回调,游戏需要调用WGFailedRegisteredAPNS方法通知MSDK注册推送失败。 示例代码:

-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
  [MSDKXG WGFailedRegisteredAPNS];
}

4) 接收消息

成功注册推送后,应用收到推送消息会进入didReceiveRemoteNotification方法。游戏需要在此方法中调用WGReceivedMSGFromAPNSWithDict方法,将推送消息给MSDK做解析,解析结果通知给游戏。 示例代码:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
  [MSDKXG WGReceivedMSGFromAPNSWithDict:userInfo];
}

5) 清空badge

应用需要在applicationDidBecomeActive中调用WGCleanBadgeNumber方法将应用桌面图标右上角的推送条目清空。 示例代码:

-(void)applicationDidBecomeActive:(UIApplication *)application
{
  [MSDKXG WGCleanBadgeNumber];
}

2 以下接口为C++接口

您还需要在AppDelegate.mm中添加推送相关的5个方法:

1) 注册推送

  • 功能描述

注册消息推送,签名文件配置正确才能成功注册推送。游戏需要在didFinishLaunchingWithOptions方法中调用MSDK的WGRegisterAPNSPushNotification方法进行推送注册。

  • 接口声明
void WGRegisterAPNSPushNotification(unsigned char *launchOptions);
  • 参数说明
参数名称 类型 说明
launchOptions unsigned char* "-application:didFinishLaunchingWithOptions:"中的(NSDictionary *)launchOptions参数转换为json字符串

2) 注册成功

  • 功能描述

注册成功游戏会收到didRegisterForRemoteNotificationsWithDeviceToken回调方法,游戏需要在此方法中调用WGSuccessedRegisterdAPNSWithToken方法将deviceToken上报到MSDK。

  • 接口声明
void WGSuccessedRegisterdAPNSWithToken(unsigned char *deviceToken);
  • 参数说明
参数名称 类型 说明
deviceToken unsigned char* "-application:didRegisterForRemoteNotificationsWithDeviceToken:"中的(NSData *)deviceToken参数转换为字符串

3) 注册失败

  • 功能描述

注册失败游戏会收到didFailToRegisterForRemoteNotificationsWithError方法回调,游戏需要调用WGFailedRegisteredAPNS方法通知MSDK注册推送失败。

  • 接口声明
void WGFailedRegisteredAPNS();
  • 参数说明

4) 接收消息

  • 功能描述

成功注册推送后,应用收到推送消息会进入didReceiveRemoteNotification方法。游戏需要在此方法中调用WGReceivedMSGFromAPNS方法,将推送消息给MSDK做解析,解析结果通知给游戏。

  • 接口声明
void WGReceivedMSGFromAPNS(unsigned char *userInfo);
  • 参数说明
参数名称 类型 说明
userInfo unsigned char* "-application:didReceiveRemoteNotification:"中的(NSDictionary *)userInfo参数转换为json字符串

5) 清空badge

  • 功能描述

应用需要在applicationDidBecomeActive中调用WGCleanBadgeNumber方法将应用桌面图标右上角的推送条目清空。

  • 接口声明
void WGCleanBadgeNumber();
  • 参数说明

腾讯移动推送 TPNS

腾讯移动推送为收费版本。接入需要重新申请accessId和accessKey。MSDKV3客户端从3.3.12版本开始集成腾讯移动推送,目前支持可插件化接入。

重要:为避免华为厂商推送异常,接入方必须于 2021 年 6 月 30 日前,升级版本至 MSDK3.3.16(XG1.2.0.4) 或以上版本。

1 申请accessId和accessKey

accessId和accessKey可直接在飞鹰系统(内网访问)注册申请,需联系MSDK助手协助注册

若该游戏已在腾讯云管理端注册腾讯云账号且已有腾讯移动推送账号,也可迁移到飞鹰系统,需联系MSDK助手协助迁移

2 Android 客户端接入说明

MSDK3.3.18 版本开始,腾讯移动推送被单独抽离成 TPNSSDK 和 HWPushSDK 插件提供。

  • TPNSSDK: 腾讯移动推送和厂商渠道推送(MEIZU、VIVO、OPPO、XIAOMI)
  • HWPushSDK: 华为厂商渠道推送

Unity 版本默认使用 TPNSSDK 和 HWPushSDK,如果不使用的话,可以删除 TPNSSDK 和 HWPushSDK 插件,并注释如下代码(路径:\Assets\Msdk\Editor\Scripts\Deploy\DeployAndroid.cs):

/* 7) TPNSSDK */
DeployTPNSSDK();

/* 8) HWPushSDK */
DeployHWPushSDK();

注意:

  • 从 MSDK3.3.18 版本开始,华为渠道需要在工程 assets 目录下添加华为推送配置文件,即 agconnect-services.json 文件,获取该文件路径如下:登录华为开放平台,进入【我的项目】> 选择项目 > 【项目设置】,下载华为应用最新配置文件 agconnect-services.json。
  • 从 MSDK3.3.18 版本开始,华为厂商渠道推送 AndroidManifest.xml 中配置有变化,详情可参考厂商渠道组件配置 处理。

Unity 64 位打包指引文档地址:\Assets\Msdk\Editor\Librarys\Android3.2\Gradle

2.1 向AndroidManifest.xml中添加权限及组件和应用信息配置

详情可参考腾讯移动推送客户端配置 (搜索:腾讯移动推送所需权限、腾讯移动推送组件配置)

如果接入点为上海集群,需要处理以下配置

在 AndroidManifest.xml 添加以下节点

<!-- XG 1.1.6.3 及之前的版本 XG_GUID_SERVER、XG_STAT_SERVER 和 XG_LOG_SERVER 配置生效, 1.1.6.3 以后的版本 XG_SERVER_SUFFIX 生效,建议都加上防止后面升级出现不兼容的问题-->

<meta-data
    android:name="XG_GUID_SERVER"
    android:value="https://guid.tpns.sh.tencent.com/guid/api/GetGuidAndMqttServer" />
<meta-data
    android:name="XG_STAT_SERVER"
    android:value="https://stat.tpns.sh.tencent.com/log/statistics/push" />
<meta-data
    android:name="XG_LOG_SERVER"
    android:value="https://log.tpns.sh.tencent.com/v3/mobile/log/upload" />
<meta-data
    android:name="XG_SERVER_SUFFIX"
    android:value="tpns.sh.tencent.com" />
  • XG_GUID_SERVER、XG_STAT_SERVER 和 XG_LOG_SERVER 需要带 https 头,XG_SERVER_SUFFIX 不带 https 头

2.2 添加accessId 和 accessKey配置

腾讯移动推送需要配置 accessId 和 accessKey 信息。有两种方法完成配置,一个是AndroidManifest.xml,一个是在msdkconfig.ini中。以下给出msdkconfig.ini的参考示例:

XG_V2_ACCESS_ID=xxx
XG_V2_ACCESS_KEY=xxx

注意:XG_V2_ACCESS_ID为一串整形数字符串。如果AndroidManifest.xml和msdkconfig.ini同时设置了该配置项,以后者为准。

2.3 注销信鸽免费版本

注销方式是在AndroidManifest.xml中配置信鸽免费版本的accessId。配置示例如下:

<application>
...
    <meta-data
            android:name="XG_OLD_ACCESS_ID"
            android:value="xxx" />
...
</application>

其中,old_access_id填写升级腾讯移动推送版本前免费版本信鸽的accessId,如果不知道,可以在飞鹰系统SDK参数处查询。

2.4 厂商通道

腾讯移动推送支持华为、小米、魅族、OPPO、vivo、荣耀厂商通道。业务需要自行申请各个通道的app id、app key和app secret(OPPO厂商涉及),并将相应的结果填到腾讯云管理端和客户端。具体接入指引参考厂商通道推送。MSDK 3.3.255 版本开始,去除了华为、小米、vivo 厂商通道相关能力;MSDK 3.3.256 版本开始,去除了魅族厂商通道相关能力;MSDK 3.3.28 版本更新 TPNS 到 1.3.7.2 版本,恢复了华为、小米、vivo、魅族厂商通道推送能力。MSDK 3.3.30 版本开始,去除了小米厂商通道相关能力。MSDK 3.3.32 版本开始支持荣耀厂商通道推送。

2.5 删除腾讯移动推送

如果不接入腾讯移动推送,需要修改并删除以下内容,如下:

  • msdkconfig.ini中PUSH设置为false
  • 删除AndroidManifest.xml, msdkconfig.ini中关于腾讯移动推送的配置,即删除2.1、2.2、2.3 中配置说明
  • 删除全部MSDKLibrary/libs/tpns-*.jar文件(3.3.18版本开始需同步删除与MSDKLibrary同级下的TPNSSDK和HWPushSDK插件)
  • 厂商通道请按照厂商通道指引删除

3 iOS 客户端接入说明

由于数据上报能力腾讯移动推送侧为反射调用,因此需要各业务自行添加对腾讯移动推送的依赖。接入推送能力除添加MSDKPush/MSDKPush.framework外还需添加MSDKPush/XG目录下的腾讯移动推送库及头文件。

3.1 向info.plist中添加配置

腾讯移动推送需要配置 accessId 和 accessKey 信息。accessId和accessKey请配置到info.plist,其中,accessId为Number类型,accessKey为字符串类型。配置示例如下:

    <key>XG_V2_ACCESS_ID</key>
    <integer>xxx</integer>
    <key>XG_V2_ACCESS_KEY</key>
    <string>xxx</string>

如果接入点为上海集群,需要处理以下配置

在项目工程的 info.plist 添加

<!-- 3.3.15及之前版本配置 -->
<key>XG_HOST</key>
<string>https://guid.tpns.sh.tencent.com</string>
<key>XG_PORT</key>
<integer>0</integer>
<key>XG_STAT_HOST</key>
<string>https://stat.tpns.sh.tencent.com</string>
<key>XG_STAT_PORT</key>
<integer>0</integer>

<!-- 3.3.16版本配置 -->
<key>XG_HOST</key>
<string>https://api.tpns.sh.tencent.com</string>
<key>XG_PORT</key>
<integer>0</integer>
<key>XG_STAT_HOST</key>
<string>https://stat.tpns.sh.tencent.com</string>
<key>XG_STAT_PORT</key>
<integer>0</integer>

<!-- 3.3.17及以上版本配置 -->
<key>XG_HOST</key>
<string>tpns.sh.tencent.com</string>
  • XG_HOSTXG_STAT_HOST 需要带 https 头
  • 3.3.16 版本 XG_HOST 需要修改为 https://api.tpns.sh.tencent.com
  • 3.3.17 版本开始需要删除 XG_PORTXG_STAT_HOSTXG_STAT_PORT 配置,并将 XG_HOST 修改为 tpns.sh.tencent.com (注意:不需要带 https 头)

3.2 注销信鸽免费版本

注销方式是在info.plist中配置信鸽免费版本的accessId。请在info.plist中添加XG_FREE_ACCESS_ID配置,类型为Number。相应的Key和配置示例如下:

    <key>XG_FREE_ACCESS_ID</key>
    <integer>xxx</integer>

其中,XG_FREE_ACCESS_ID 填写升级腾讯移动推送版本前免费版本信鸽的accessId,如果不知道,可以在飞鹰系统SDK参数处查询。

3.3 删除腾讯移动推送

如果不接入腾讯移动推送,需要修改并删除以下内容,如下:

  • info.plist中将MSDK_PUSH_SWITCH设置为false
  • 将3.1、3.2中的腾讯移动推送配置删除
  • 删除MSDKPush.framwork

注意事项

  • iOS端如果希望游戏在前台时仍可收到推送,则需要在info.plist文件中配置 MSDK_PUSH_AT_FOREGROUND 为 true,该配置默认为关闭。

4 管理端配置说明

4.1 创建产品和应用

创建产品和应用,详情参考:腾讯移动推送-创建产品和应用文档

4.2 申请试用

点击页面中【申请试用/测试】,企业名称统一填写“腾讯”,联系电话&邮箱可按填写人信息录入,申请后可联系MSDK助手对接激活试用。

4.3 iOS 证书配置

证书配置方法,详情参考:腾讯移动推送-上传推送证书方法文档

4.4 创建推送任务及推送测试方法

创建推送任务及推送测试方法,详情参考:腾讯移动推送-创建推送任务及推送测试方法文档

5 腾讯移动推送服务付费说明

付费说明,详情参考:付费说明文档

接口人:腾讯云助手(cloud IT support)

6 iOS 通知服务扩展插件配置(统计抵达必备插件)

MSDK 仅携带 TPNS 扩展库,需要游戏业务集成接入,具体接入请参考 TPNS 指引文档:通知服务扩展的使用说明

接口人:腾讯云助手(cloud IT support)

MSDK V3.3.15 及以后版本新增以下接口

1 账号绑定

1)功能描述

开发者可以针对不同的用户绑定自定义账号,然后对该账号进行推送,账号不能为空。单个应用最多可以有10000个自定义标签/账号, 每个设备token最多可绑定100个自定义标签/账号。

  • 这里的账号可以是邮箱、QQ 号、手机号、用户名等任意类别的业务账号
  • 同一个账号绑定多个设备时,后台将默认推送消息到最后绑定的设备
2)接口声明

声明及相关参数说明可在WGPlatform.h文件中查看

void WGSetPushAccount(string account);
3)参数说明
参数名称 类型 说明
account string 账号
4)示例代码
WGPlatform.Instance.WGSetPushAccount("account");

2 解除账号绑定

1)功能描述

对已绑定的自定义账号进行解绑,账号不能为空。

  • 账号解绑只是解除 Token 与 App 账号的关联,若使用全量/标签/Token 推送仍然能收到通知/消息
2)接口声明

声明及相关参数说明可在WGPlatform.h文件中查看

void WGDeletePushAccount(string account);
3)参数说明
参数名称 类型 说明
account string 账号
4)示例代码
WGPlatform.Instance.WGDeletePushAccount("account");

3 反注册

1)功能描述

当用户已退出或 App 被关闭,不再需要接收推送时,可以取消注册 App,即反注册。(一旦设备反注册,直到这个设备重新注册成功期间内,下发的消息该设备都无法收到)。

  • 反注册操作切勿过于频繁,可能会造成后台同步延时
  • 切换账号无需反注册,多次注册自动会以最后一次为准
2)接口声明

声明及相关参数说明可在WGPlatform.h文件中查看

void WGUnregisterPush();
3)参数说明

4)示例代码
WGPlatform.Instance.WGUnregisterPush();

发送推送消息

进入飞鹰系统(腾讯内网,需业务PM或腾讯侧接口人操作),点击左侧导航栏:MSDK接入->腾讯移动推送(无权限的可内网联系MSDK助手对接),进入页面配置即可,如下图所示:

注意:

测试推送消息时切忌勿全量推送,可使用单个账号或者批量账号测试,以免全网用户收到测试的推送消息。

添加本地推送

除了远程推送外,游戏还可进行本地消息推送,例如体力恢复提醒的场景。

1 iOS本地推送

2 Android本地推送

3 清除本地推送

1 iOS本地推送

1)功能描述

本地推送是相对于远程推送而言,无需同远程服务器交互在本地就可完成的消息通知,主要应用于体力恢复提醒等场景。

2)接口声明
long WGAddLocalNotification(LocalMessageIOS localMessage);
3)参数说明
参数名称 类型 说明
localMessage LocalMessageIOS 类 跳转查看
4)返回值

1 添加成功,0 添加失败

5)示例代码
//若当前时间为2015-09-17 17:00:00,十秒钟后推送
LocalMessageIOS massage = new LocalMessageIOS();
message.fireDate = "2015-09-17 17:00:10";
message.alertBody = "Local Notification";
message.badge = 1;
message.alertAction = "Start";
WGPlatform.Instance.WGAddLocalNotification(massage);
6)特殊说明

7)名词解释

2 Android本地推送

1)功能描述

本地推送是相对于远程推送而言,无需同远程服务器交互在本地就可完成的消息通知,主要应用于体力恢复提醒等场景。

2)接口声明
long WGAddLocalNotification(LocalMessageAndroid msg);
3)参数说明
参数名称 类型 说明
msg LocalMessageAndroid 类 跳转查看
4)返回值

1 添加成功,0 添加失败

5)示例代码
string[] times = Regex.Split ("20150917 17 00", " ");
LocalMessageAndroid msg = new LocalMessageAndroid();
msg.type = 1;
msg.action_type = 1;
msg.content = "TPNS本地推送测试";
msg.title = "您有新的消息";
msg.date = times[0];
msg.hour = times[1];
msg.min = times[2];
WGPlatform.Instance.WGAddLocalNotification(msg);
6)特殊说明

7)名词解释

3 清除本地推送

1)功能描述

游戏可以清除本地所有已经添加的但还未执行的推送通知。

2)接口声明
void WGClearLocalNotifications();
3)参数说明

4)返回值

5)示例代码
WGPlatform.Instance.WGClearLocalNotifications();
6)特殊说明

7)名词解释

标签推送

游戏可以针对用户设置标签,如性别、年龄、学历、爱好等,另SDK中预置的有默认标签,推送时可根据不同的标签有针对的进行推送。

1 预置标签

2 设置标签

3 删除标签

4 发送标签推送消息

1 预置标签

目前腾讯移动推送提供以下三类预置标签,游戏无需另外设置:

地理位置(省一级)
应用版本号
流失用户(3天or7天)

2 设置标签

1)功能描述

游戏可以针对不同的用户设置标签,一款游戏最多共可设置10000个标签, 每个用户在某一款游戏下最多可设置100个标签,设置标签时注意标签中不可包含空格。

2)接口声明
void WGSetPushTag(string tag);
3)参数说明
参数名称 类型 说明
tag string 不能为null或包含空格
4)返回值

5)示例代码:
WGPlatform.Instance.WGSetPushTag("Student");
6)特殊说明

7)名词解释

3 删除标签

1)功能描述

删除所设置的用户标签,推送时此用户将无法接收到此标签下的推送消息。

2)接口声明
void WGDeletePushTag(string tag);
3)参数说明
参数名称 类型 说明
tag string 不能为null或包含空格
4)返回值

5)示例代码
WGPlatform.Instance.WGDeletePushTag("Student");
6)特殊说明

7)名词解释

4 发送标签推送消息

发送标签推送消息同发送推送消息一样,只是在添加推送消息时“推送目标”需选择标签,如下图所示:

iOS 点击推送消息回调

1)功能描述

提供 iOS TPNS 推送点击回调 `OnReceiveNotificationResponseNotify`,可通过回调获取 userInfo 字段转化后的 json 字符串。3.3.26 版本开始新增该接口。

2)示例代码


//设置回调
MyObserver* ob = MyObserver::GetInstance();
WGPlatform::GetInstance()->WGSetObserver(ob);

//回调示例
void MyObserver::OnReceiveNotificationResponseNotify(const char *userInfo)
{
	...
}

厂商通道推送

1 功能描述

Android厂商通道,由 Android 手机厂商提供的系统级推送通道,可以实现不启动应用就接收并展现消息。该功能能够解决部分厂商手机在杀死进程的情况下接收不到通知的问题,提高消息的抵达率。目前,MSDK腾讯移动推送渠道接入支持的厂商通道包括:华为、小米、魅族、OPPO、vivo、荣耀。3.3.11版本开始新增该能力。MSDK 3.3.255 版本开始,去除了华为、小米、vivo 厂商通道相关能力;MSDK 3.3.256 版本开始,去除了魅族厂商通道相关能力;MSDK 3.3.28 版本更新 TPNS 到 1.3.7.2 版本,恢复了华为、小米、vivo、魅族厂商通道推送能力。MSDK 3.3.30 版本开始,去除了小米厂商通道相关能力。MSDK 3.3.32 版本开始支持荣耀厂商通道推送。

Unity 3.3.256.1 版本接入方更新部署 MSDK 之后需根据自身需求手动删除 TPNS 厂商通道的 jar 包,部署后厂商通道 SDK 路径:

  • 华为:/Assets/Msdk/Editor/Librarys/Android3.2/HWPushSDK
  • 其他厂商:/Assets/Msdk/Editor/Librarys/Android3.2/TPNSSDK/libs

Unity 3.3.256.3 及以后版本 MSDK 已自动处理

2 接入配置

厂商通道由于涉及到不同的厂商,且厂商之间也存在着少量的差异,因此,接入过程相对麻烦。经过MSDK封装后,业务只需要下载SDK,添加相应的配置,主要配置内容有两大项:客户端配置和管理端配置。

2.1 客户端配置

1) 向AndroidManifest.xml中添加权限及厂商通道组件配置

详情可参考Android 原生 AndroidManifest.xml 配置 (搜索:腾讯移动推送厂商通道权限配置、腾讯移动推送厂商通道组件配置)

2) 配置魅族、小米的通道信息以及开启厂商通道功能

打开游戏项目assets目录下msdkconfig.ini文件,添加相关配置信息,所需appId及appKey等来源可参考腾讯移动推送官网说明:

华为小米魅族OPPO

参考示例如下:

; 是否开启厂商通道,true:是,false,否;默认情况不开启厂商通道
XG_OTHER_PUSH_ENABLE=true
; 小米通道的appId
XG_OTHER_PUSH_XIAOMI_APPID={小米appId}
; 小米通道的appKey
XG_OTHER_PUSH_XIAOMI_APPKEY={小米appKey}
; 魅族通道的appId
XG_OTHER_PUSH_MEIZU_APPID={魅族appId}
; 魅族通道的appKey
XG_OTHER_PUSH_MEIZU_APPKEY={魅族appKey}
; OPPO通道的appId(注意:填写OPPO通道的appKey)
XG_OTHER_PUSH_OPPO_APPID={OPPO appKey}
; OPPO通道的appSecret
XG_OTHER_PUSH_OPPO_APPSECRET={OPPO appSecret}

备注:

  1. 华为通道的appKey需要在AndroidManifest.xml配置
  2. OPPO通道的appId处要填写通道的appKey
3) 添加魅族通知图标

低版本魅族手机(魅族 Flyme6.0 及以下的手机)需要在res/drawable目录添加一张名为 stat_sys_third_app_notify.png 的图片,大小一般为64*64,如果有多个分辨率,建议每个分辨率中添加一张。

如果没有这张图片,低版本魅族手机收到消息后可能不显示。当然,如果不考虑魅族低版本手机,该步骤可以忽略。

4) 代码混淆
-ignorewarning
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
-keep class com.huawei.android.hms.agent.**{*;}
-keep class com.xiaomi.**{*;}
-keep public class * extends com.xiaomi.mipush.sdk.PushMessageReceiver
-dontwarn com.meizu.cloud.pushsdk.**
-keep class com.meizu.cloud.pushsdk.**{*;}
-keep class com.hihonor.push.framework.aidl.**{*;}
-keep class com.hihonor.push.sdk.**{*;}

2.2 管理端配置

可以使用飞鹰系统管理端,也可以直接使用腾讯云管理端,都需要在厂商配置中开启并设置厂商通道。
飞鹰系统为例,首先在自己的应用中打开消息管理,并打开应用配置,相应的设置示例如下:

设置完成后,几分钟到一个小时内生效。

3 验证方法

各个通道验证过程相同,当杀死进程后,依然能够收到通知表示功能正常。具体步骤参考:

(1)确认已在飞鹰系统腾讯移动推送管理台中「应用配置-厂商&海外通道」中填写相关的应用信息。通常,相关配置将在1个小时后生效,请您耐心等待,待生效后再进行下一个步骤

(2)将集成好的App(测试版本)安装在测试机上,并且运行App

(3)保持App在前台运行,尝试对设备进行单推/全推

(4)如果应用收到消息,将App退到后台,并且杀掉所有App进程

(5)再次进行单推/全推,如果能够收到推送,则表明厂商通道集成成功

4 删除厂商通道

因为厂商通道需要引入较多依赖,对于不需要厂商通道的业务,可以删除相应的依赖项,以减少依赖。

如果已经配置了AndroidManifest.xml以及msdkconfig.ini,请参考2.1 客户端配置说明进行还原。

常见问题

一、信鸽免费版本升级到腾讯移动推送版本需删除以下内容

信鸽免费版本升级到腾讯移动推送版本存在旧版本文件、配置需要清理。

Android

涉及权限、组件配置及MSDKLibrary目录下的jar、so文件的清理,建议通过整体替换的方式避免手动修改有遗漏。删除内容如下:

1.删除AndroidManifest.xml相关配置

AndroidManifest.xml中主要去除两部分内容,免费版权限配置和组件配置。

  • 在原版本基础上可通过搜索“接入信鸽需要的其他权限 START、接入信鸽需要的其他权限 END”“信鸽配置 START、信鸽配置 END” 关键字来快速查找到免费版相关配置,然后将相应部分的START到END中间的内容删除。
  • 如果之前有接入厂商通道且腾讯移动推送版本不再需要厂商通道,请相应删除厂商通道相应配置,可通过搜索“厂商通道组件配置 START、厂商通道组件配置 END” 关键字来快速查找到厂商通道相关配置,然后将相应部分的START到END中间的内容删除,如需要厂商通道则可保留厂商通道相关配置。

2.删除msdkconfig.ini相关配置

如果之前有接入厂商通道且腾讯移动推送版本不再需要厂商通道,请相应删除厂商通道相应配置,如需要厂商通道则可保留厂商通道相关配置。

;腾讯移动推送厂商渠道配置,发布版本默认关闭,如果开启,请设置相应渠道的appId和appKey,华为渠道在Manifest配置
XG_OTHER_PUSH_ENABLE=false
XG_OTHER_PUSH_XIAOMI_APPID=xxx
XG_OTHER_PUSH_XIAOMI_APPKEY=xxx
XG_OTHER_PUSH_MEIZU_APPID=xxx
XG_OTHER_PUSH_MEIZU_APPKEY=xxx

3.删除文件列表

升级前,请确认删除如下文件,或者确认已经整体替换MSDKLibrary目录。

  • libs/Xg_sdk_4.x.x_2019xxxx_xxxx.jar
  • libs/wup-1.0.0.E-SNAPSHOT.jar
  • libs/abieabi_xxx/libtpnsSecurity.so
  • libs/abieabi_xxx/libxguardian.so(3.3.7a及以上版本无libxguardian.so)

如果之前有接入厂商通道,请依次删除(腾讯移动推送厂商通道需要导入新的):

  • MSDKLibrary/libs/XG4HWPush.jar
  • MSDKLibrary/libs/XG4MZPush.jar
  • MSDKLibrary/libs/XG4XMPush.jar

二、腾讯移动推送联合保活能力相关配置

MSDK V3.3.131 版本开始新增该能力。腾讯移动推送 Android 支持对联合保活能力进行配置,默认关闭,可防止自身应用拉起其他应用,无需额外配置。若有以下日志打印,则表明联合保活能力已经关闭:

I/TPNS: [ServiceUtil] disable pull up other app

如需开启联合保活能力,在 assets/msdkconfig.ini 文件中增加如下配置:

XG_PULL_UP_OTHER_APP_ENABLE = true

此外,可在 AndroidManifest.xml 文件中修改以下节点,配置自身应用不被其他应用拉起

   <!-- 在自身应用的AndroidManifest.xml文件中修改如下结点,其中 xxx 为任意自定义名称: -->     
   <!-- 关闭与 TPNS 应用的联合保活功能,请配置 -->
   <provider
       android:name="com.tencent.android.tpush.XGPushProvider"
       tools:replace="android:authorities"
       android:authorities="应用包名.xxx.XGVIP_PUSH_AUTH"
       android:exported="false" />

三、小米厂商渠道频繁采集设备信息解决方案

参照 wiki 中 Android 推送模块的常见问题。

iOS

iOS端信鸽免费版直接集成到了MSDK的framework中,只需要替换旧的MSDK Framework就能够实现升级,不需要删除额外文件。iOS端腾讯移动推送采用了插件化,注意添加相应的framework。

四、Android 更新 TPNS SDK 1.4.3.1 版本注意事项

概述

Android 端本地推送功能变更:目前,厂商逐步对 App 开发者的本地通知根据分类进行限额限频,也以此保证终端用户不被过度骚扰,不同的消息分类主要通过通知 category 进行区分。TPNS 结合厂商的要求,对于本地通知和自建通道下发通知增加了 category 和 importance 的支持。从 MSDK V3.3.31 开始,LocalMessageAndroid 结构体新增字段 category、 importance,在增加本地通知时,可以指定通知 category 和通知 channel importance。

字段说明
成员变量名称 类型 说明
category string 设置本地消息分类,详情可参考:https://cloud.tencent.com/document/product/548/97927
importance int 设置本地消息的重要程度,详情可参考:https://cloud.tencent.com/document/product/548/97927

当业务未显式设置时,MSDK 默认消息 category 为 _CATEGORY_MESSAGE_(关于 category 的官方说明:https://developer.android.com/reference/android/app/Notification#CATEGORY_MESSAGE);

默认消息 importance 为 _IMPORTANCE_DEFAULT_(关于 importance 的官方说明:https://developer.android.com/reference/android/app/NotificationManager#IMPORTANCE_DEFAULT)。