tencent cloud

移动推送

产品动态
公告
产品功能动态
Android SDK 发布动态
iOS SDK 发布动态
macOS SDK 发布动态
产品简介
产品概述
产品优势
应用场景
全球化部署
购买指南
价格总览
购买指引
计费模式
免费试用
欠费说明
快速入门
创建产品和应用
Android 快速接入
iOS 快速接入
创建推送任务
查询推送记录
推送测试方法指引
产品限制说明
操作指南
推送管理
推送高级功能
实践教程
iOS 平台角标功能实践
API 文档
简介
API 概览
调用方式
推送相关接口
标签相关接口
账号相关接口
统计相关接口
用户属性相关接口
服务端错误码
服务端 SDK
API(Java)
SDK 文档
Android 接入指南
iOS 接入指南
客户端集成插件
macOS接入指南
用户及权限
快速入门配置
进阶自定义配置
资源标签
服务协议
服务等级协议
开发者协议
常见问题
iOS 常见问题
Android 常见问题
Flutter 常见问题
其他问题
移动推送政策
移动推送隐私协议
TPNS 数据处理和安全协议
Developer Agreement
联系我们
词汇表

SDK 集成

PDF
聚焦模式
字号
最后更新时间: 2024-01-16 17:42:20

操作场景

本文档提供关于 SDK 接入以及开启推送服务的示例代码。

SDK 组成

doc 文件夹:移动推送 macOS SDK 开发指南。
demo 文件夹:主要包含样例工程,移动推送 SDK。

集成步骤

接入前准备

1. 登录 移动推送控制台,单击左侧菜单栏产品管理
2. 进入产品管理页面,单击新增产品
3. 进入新增产品页面,填写产品名称、产品详情,选择产品分类,单击确定,即可完成产品新增。
4. 产品创建完成后,选择左侧菜单配置管理 > 基础配置,在应用信息一栏中获取应用AccessIDAccessKEY

导入 SDK(二选一)

方式一:Cocoapods 导入 通过 Cocoapods 下载地址:
pod 'TPNS-macOS'
方式二:手动导入 进入控制台,单击左侧菜单栏【SDK 下载】,进入下载页面,选择 macOS 平台,在其操作栏下单击【下载】即可导入。
1.1 打开 demo 目录下的 XG-Demo-macOS 文件夹,将 XG_SDK_Cloud_macOS.framework 及 XGMTACloud_macOS.framework 添加到工程。
1.2 在 Build Phases 下添加以下 Framework:
* XG_SDK_Cloud_macOS.framework
* XGMTACloud_macOS.framework
* UserNotifications.framework(10.14+)
1.3 添加完成以后,TARGETS->General->Frameworks,Libraries,and Embedded Content选项下Embed选择Embed&Sign 如下图:



工程配置

1. 在工程配置中打开推送,如下图:


2. Build Settings->Other Linker Flags添加编译参数 -ObjC


注意:
如 checkTargetOtherLinkFlagForObjc 报错,是因为 build setting 中,Other link flags 未添加 -ObjC。

接入样例

调用启动移动推送 的 API,并根据需要实现 XGPushDelegate 协议中的方法,开启推送服务。
1. 启动移动推送服务,以下是在 AppDelegate 中做演示:
(void)applicationDidFinishLaunching:(NSNotification *)aNotification { /// 打开 Debug 模式,即可在终端查看详细的移动推送 TPNS Debug 信息,方便定位问题。 // [[XGPush defaultManager] setEnableDebug:YES]; [XGPush defaultManager].launchOptions = [[aNotification userInfo] mutableCopy]; [[XGPush defaultManager] startXGWithAccessID:TPNS_ACCESS_ID accessKey:TPNS_ACCESS_KEY delegate:self]; }
2. AppDelegate中选择实现 XGPushDelegate 协议中的方法:
/// 注册推送服务成功回调 /// @param deviceToken APNs 生成的Device Token /// @param xgToken TPNS 生成的 Token,推送消息时需要使用此值。TPNS 维护此值与APNs 的 Device Token的映射关系 /// @param error 错误信息,若error为nil则注册推送服务成功
(void)xgPushDidRegisteredDeviceToken:(NSString *)deviceToken xgToken:(NSString *)xgToken error:(NSError *)error { if (!error) { NSLog(@"%s, register success, deviceToken:%@, xgToken:%@", FUNCTION, deviceToken, xgToken); } else { NSLog(@"%s, register failed:%@, deviceToken:%@, xgToken:%@", FUNCTION,error.description, deviceToken, xgToken); } }
// 统一收到通知消息的回调 /// @param notification 消息对象 /// @param completionHandler 完成回调 /// 区分消息类型说明:xg字段里的msgtype为1则代表通知消息msgtype为2则代表静默消息 /// notification消息对象说明:有2种类型NSDictionary和UNNotification具体解析参考示例代码
(void)xgPushDidReceiveRemoteNotification:(id)notification withCompletionHandler:(void (^)(NSUInteger))completionHandler { NSLog(@"[TPNS Demo] receive notification: %@", notification); } /// 统一点击回调 /// @param response 如果iOS 10+/macOS 10.14+则为UNNotificationResponse,低于目标版本则为NSDictionary /// 区分消息类型说明:xg字段里的msgtype为1则代表通知消息,msgtype为9则代表本地通知
(void)xgPushDidReceiveNotificationResponse:(nonnull id)response withCompletionHandler:(nonnull void (^)(void))completionHandler { if ([response isKindOfClass:[UNNotificationResponse class]]) { NSLog(@"[TPNS Demo] click notification: %@", ((UNNotificationResponse *)response).notification.request.content.userInfo); } else if ([response isKindOfClass:[NSDictionary class]]) { NSLog(@"[TPNS Demo] click notification: %@", response); } completionHandler(); }

观察日志

如果 Xcode 控制台显示如下相似日志,表明客户端已经正确集成 SDK。
javascript
[TPNS] Current device token is 2117b45c7e32bcdae2939f******57e420a376bdd44cf6f58613129d2065370
[TPNS] Current TPNS token is 0304b8f5d4e*****0af06b37d8b850d95606
[TPNS] The server responds correctly, registering device successfully

集成建议

获取 Token (非必选)

建议您完成 SDK 集成后,在 App 的【关于】、【意见反馈】等比较不常用的 UI 中,通过手势或者其他方式显示 Token,该操作便于我们后续进行问题排查。

示例代码

objective-c
//获取 TPNS 生成的 Token
[[XGPushTokenManager defaultTokenManager] xgTokenString];
//获取 APNs 生成的 DeviceToken
[[XGPushTokenManager defaultTokenManager] deviceTokenString];


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈