方舟智能分析
产品功能SDK指南API
  • 产品简介
  • 快速上手
    • Step 1 安装部署
    • Step 2 激活系统创建项目
    • Step 3 开启您的分析旅程
      • 1. 集成 SDK
      • 2. 可视化埋点
      • 3. 创建分析模型
    • 附:埋点方案设计
    • 附:数据分析思路
  • 产品更新日志
    • V5.3.3 UI 升级、分布分析重构、维度表动态更新、细节优化等
    • V5.2.0 新增归因分析、消息中心、重构埋点方案、优化看数据体验……
    • V5.1.0317 体验优化& Bug修复
    • V5.1.0 升级可视化埋点、增强权限控制……
  • 我要反馈
  • 🐱Part I 产品功能说明
    • 名词解释
    • 指标说明
    • 看板
    • 分析
      • 事件分析
      • 渠道分析
        • 渠道相关名词解释
        • 来源识别规则
        • 搜索引擎
        • 社交媒体
        • 小程序场景值
        • Session 规则
      • Session 分析
      • 实时分析
      • 留存分析
      • 转化漏斗
      • 智能路径
      • 归因分析(Beta)
      • 热图分析
        • Web/H5 热图
        • APP 热图
      • 分布分析
      • 间隔分析
      • 属性分析
      • 自定义查询
    • 用户
      • 用户探查
      • 用户分群
      • 用户标签
        • 标签体系
        • 标签加工
          • 如何自定义SQL创建标签
        • 标签生命周期管理
        • 标签体系应用概览
      • 单用户档案
    • 运营
      • 电子邮件
      • 短信
      • 消息通知
      • 广告跟踪
      • App 推广监测(Beta)
    • 项目管理
      • 项目概览
      • 项目角色管理
      • 项目成员管理
      • 数据接入管理
        • 埋点方案
        • 可视化埋点
        • 集成SDK接入数据
        • 数据验证
        • 用户数据导入
      • 元数据管理
        • 元事件
        • 虚拟事件
        • 事件属性
        • 用户属性
        • Session 管理
        • 页面组管理
        • 维度表
      • 服务集成配置
      • 监控告警
        • 智能监控
        • 自定义监控
    • 平台管理
      • 企业概览
      • 项目管理
      • 成员管理
      • 安全设置
      • 企业设置
      • 日志管理
      • 帐号设置
  • 🐵Part II 技术文档
    • 技术接入准备工作
      • 部署环境检测工具
      • 数据模型
      • 数据格式
      • 预置事件和属性
        • App预置事件/属性
        • JS 预置事件/属性
      • 如何准确识别用户
      • 如何设计埋点方案
      • 分平台上报数据 vs 跨平台打通
    • SDK 指南
      • Android SDK
        • 快速集成
        • 全埋点模块
        • 消息推送模块
        • Android Hybrid模式
        • SDK Gradle集成方式
        • 多渠道打包
        • 易观小工具
        • 合规相关
      • iOS SDK
        • 快速集成
        • 全埋点介绍
        • iOS Hybrid模式
        • 消息推送模块
      • JS SDK
        • 快速集成
        • JS SDK基础版
        • JS SDK插件
      • 微信小程序 SDK
        • 快速集成
        • 微信小程序标准版
        • 微信小程序插件版
        • 微信小程序通用框架版
      • 支付宝小程序 SDK
        • 支付宝小程序标准版
        • 支付宝小程序通用框架版
      • 字节跳动小程序 SDK
        • 字节跳动小程序标准版
        • 字节跳动小程序通用框架版
      • 百度小程序 SDK
        • 百度小程序标准版
        • 百度小程序通用框架版
      • 钉钉小程序 SDK
        • 钉钉小程序标准版
        • 钉钉小程序通用框架版
      • QQ小程序 SDK
        • QQ小程序标准版
        • QQ小程序通用框架版
      • 快应用 SDK
      • 华为WeCode小程序
        • WeCode SDK 标准版
        • WeCode SDK插件
      • PhoneGap SDK
      • mPaaS SDK
      • ReactNative SDK
      • Flutter SDK
      • Java SDK
      • Python SDK
      • PHP SDK
      • C++ SDK
      • C# SDK
      • Node JS SDK
      • Lua SDK
      • Golang SDK
      • SDK FAQ
        • identify与alias的区别
        • 爬虫数据如何识别?
        • 页面停留如何获取时间?
        • 如果获取SDK及更新日志
        • 代码埋点和无埋点有什么区别
        • Web页面中发现丢失某一个事件
        • 自研 SDK 注意事项
        • 页面时长统计功能
    • 数据验证
      • 客户端埋点验证
      • Debug 数据验证
      • 数据入库验证
    • 数据导入
      • 接口导入
      • JAVA工具包
        • 标准json文件导入
        • csv格式导入
      • 数据导入FAQ
    • 数据导出
      • JAVA工具包
        • 事件数据导出
        • 用户数据导出
      • 直接从Kafka中消费数据
      • 使用程序访问数据库
    • 脚本工具
    • API
      • 分析API
        • 事件分析
        • 留存分析
        • 转化漏斗
        • 属性分析
        • Session分析
        • 渠道分析
        • 分布分析
        • 自定义查询
      • 用户API
        • 分群查询
        • 用户档案
        • 分群管理
      • 管理API
        • 权限管理
        • 元数据管理
        • 埋点方案管理
        • 维度表管理
      • 运营API
        • 广告跟踪
      • 平台管理API
        • 项目管理
        • 成员管理
    • 第三方登录
      • OAuth2.0登录
      • LDAP登录
    • GDPR 合规
  • �� Part III 常见问题
    • License 许可
    • 产品试用及采购
    • 参与贡献
由 GitBook 提供支持
在本页
  • 简介
  • 设置设备推送 ID
  • 极光推送
  • 百度推送
  • 小米推送
  • 个推推送
  • 阿里云推送
  • 信鸽推送
  • 统计活动推广信息
  • 极光推送
  • 百度推送
  • 小米推送
  • 个推推送
  • 阿里云推送
  • 信鸽推送
  • iOS 10.0以下回调方法统一调用的方法:

这有帮助吗?

  1. Part II 技术文档
  2. SDK 指南
  3. iOS SDK

消息推送模块

以下接口生效依赖于推送模块,需集成推送相关AnalysysPush.framework文件,请正确集成。

简介

推送消息是一种常用的运营方法。在合适的时间把合适的内容通过合适的方式推送给合适的人群,不仅能促进用户活跃,也能极大提升用户对产品的体验。 易观推送现在支持极光、个推、百度、小米等平台。支持通过易观开发者平台设置以下三种类型的推送消息内容:

  • 下发通知,点击通知,打开宿主 App

  • 下发通知,点击通知,打开宿主 App 的特定页面

  • 下发通知,点击通知,触发打开特定的 URL 页面

首先,开发者需要在 App 中集成第三方推送系统的 SDK,并在 App 初始化过程中获取设备推送 ID,并保存在方舟分析的用户信息中。以下简要说明集成第三方推送系统的集成方式

设置设备推送 ID

该接口用于设置推送平台(provider)提供的设备推送ID。

+ (void)setPushProvider:(AnalysysPushProvider)provider pushID:(NSString *)pushID;
  • provider 推送提供方标识,目前只 AnalysysPushProvider 枚举中的类型

  • pushID 第三方推送标识。如:极光的 registrationID,个推的 clientId,百度的 channelid,小米的 xmRegId

调用方法,以极光为例:

[AnalysysAgent setPushProvider:AnalysysPushJiGuang pushID:@"191e35f7e01617e5181"];

Swift示例:

AnalysysAgent.setPushProvider(.jiGuang, pushID: "191e35f7e01617e5181")

极光推送

在 iOS App 中,首先获取 APNs 的 Device Token,然后注册极光推送,成功后极光推送会返回 registrationID,将此 registrationID 回传方舟 SDK 即可。

@interface AppDelegate () <JPUSHRegisterDelegate>

@end
#import <AnalysysAgent/AnalysysAgent.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // 初始化极光SDK后,获取 registrationID 并回传
    [JPUSHService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
        if(resCode == 0){
            //  回传
            [AnalysysAgent setPushProvider:AnalysysPushJiGuang pushID:registrationID];
        } else{
            NSLog(@"registrationID获取失败,code:%d",resCode);
        }
    }];
}

//  获取 APNS Token 值
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    //  向极光注册 deviceToken
    [JPUSHService registerDeviceToken:deviceToken];
}

百度推送

在 iOS App 中,首先获取 APNs 的 Device Token,然后注册百度推送,成功后百度推送会返回 channelid,将此 channelid 回传方舟 SDK 即可。

@interface AppDelegate () <UIApplicationDelegate,UNUserNotificationCenterDelegate>

@end
#import <AnalysysAgent/AnalysysAgent.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // 初始化百度SDK后,获取 channelid 并回传
    [BPush bindChannelWithCompleteHandler:^(id result, NSError *error) {
        if (error) {
            return ;
        }
        if (result) {
            if ([result[@"error_code"]intValue]!=0) {
                return;
            }
            NSString *channelid = [BPush getChannelId];
            //  回传
            [AnalysysAgent setPushProvider:AnalysysPushBaiDu pushID:channelid];
        }
    }];
}

//  获取 APNS Token 值
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    //  向百度注册 deviceToken
    [BPush registerDeviceToken:deviceToken];
}

小米推送

在 iOS App 中,首先获取 APNs 的 Device Token,然后注册小米推送,成功后小米推送会返回 regid,将此 regid 回传方舟 SDK 即可。

@interface AppDelegate () <MiPushSDKDelegate,UNUserNotificationCenterDelegate>

@end
#import <AnalysysAgent/AnalysysAgent.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 只启动APNs.
    [MiPushSDK registerMiPush:self];
}

//  获取 APNS Token 值
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    //  向小米注册 deviceToken
    [MiPushSDK bindDeviceToken:deviceToken];
}

#pragma mark *** MiPushSDKDelegate ***
- (void)miPushRequestSuccWithSelector:(NSString *)selector data:(NSDictionary *)data {
    if ([selector isEqualToString:@"bindDeviceToken:"]) {
        NSString *xmRegId = data[@"regid"];
        //  回传
        [AnalysysAgent setPushProvider:AnalysysPushXiaoMi pushID:xmRegId];
    }
}

个推推送

在 iOS App 中,首先获取 APNs 的 Device Token,然后注册个推推送,成功后个推推送会返回 clientId,将此 clientId 回传方舟 SDK 即可。

@interface AppDelegate () <UIApplicationDelegate, GeTuiSdkDelegate, UNUserNotificationCenterDelegate>

@end
#import <AnalysysAgent/AnalysysAgent.h>
//  获取 APNS Token 值
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    //  向个推注册 deviceToken
    [GeTuiSdk registerDeviceToken:token];
}

#pragma mark *** GeTuiSdkDelegate ***
/** SDK启动成功返回cid */
- (void)GeTuiSdkDidRegisterClient:(NSString *)clientId {
    //  回传
    [AnalysysAgent setPushProvider:AnalysysPushGeTui pushID:clientId];
}

阿里云推送

注册方舟推送标识:注册阿里云推送成功后,会返回 DeviceId,将此 DeviceId 回传方舟SDK即可。

#import <AnalysysAgent/AnalysysAgent.h>

@interface AppDelegate () <UIApplicationDelegate, UNUserNotificationCenterDelegate>

@end

//  获取 APNS Token 值
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

   [CloudPushSDK asyncInit:@"*****" appSecret:@"*****" callback:^(CloudPushCallbackResult *res) {
        if (res.success) {
            //   回传方舟阿里云推送标识
            [AnalysysAgent setPushProvider:AnalysysPushALi pushID:[CloudPushSDK getDeviceId]];
        } else {
            NSLog(@"Push SDK init failed, error: %@", res.error);
        }
    }];
}

信鸽推送

注册方舟推送标识:注册信鸽推送成功后,会返回 deviceToken,将此 deviceToken 回传方舟SDK即可。

@interface AppDelegate () <XGPushDelegate>

@end

- (void)xgPushDidRegisteredDeviceToken:(nullable NSString *)deviceToken error:(nullable NSError *)error {
    NSLog(@"deviceToken:%@ error:%@", deviceToken, error.description);
    //  回传方舟推送设备标识
    [AnalysysAgent setPushProvider:AnalysysPushXinGe pushID:deviceToken];
}

统计活动推广信息

追踪记录 provider 对应平台的消息推送的信息。

接口如下:

+ (void)trackCampaign:(id)userInfo isClick:(BOOL)isClick;

+ (void)trackCampaign:(id)userInfo isClick:(BOOL)isClick userCallback:(void(^)(id campaignInfo))userCallback;
  • userInfo:推送携带的参数信息

  • isClick:YES:用户点击通知;NO:接收到消息通知

  • userCallback:将解析后的用户下发活动信息回调用户

三方推送平台 SDK 集成及示例代码

首先,开发者需要在 App 中集成第三方推送系统的 SDK,并在 App 初始化过程中获取设备推送 ID,并保存在方舟分析的用户信息中。目前易观 SDK 支持极光、百度、小米、个推四家第三方推送统计的支持。以下简要说明集成第三方推送系统的集成方式。

极光推送

#pragma mark *** JPUSHRegisterDelegate ***

// >= iOS 10 Support , App Forground
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
    NSDictionary * userInfo = notification.request.content.userInfo;

    if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        //  收到推送消息,追踪"App 消息推送"事件
        [AnalysysAgent trackCampaign:userInfo isClick:NO userCallback:^(id campaignInfo) {
            NSLog(@"此处可根据需要处理数据 : %@",campaignInfo);
        }];

        [JPUSHService handleRemoteNotification:userInfo];
    }
    completionHandler(UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert); // 需要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型可以选择设置
}

// iOS 10 Support, App Background
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
    NSDictionary *userInfo = response.notification.request.content.userInfo;

    if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        //  点击通知栏打开消息,记录"App 点击通知"事件
        [AnalysysAgent trackCampaign:userInfo isClick:YES userCallback:^(id campaignInfo) {
            NSLog(@"此处可根据需要处理数据 : %@",campaignInfo);
        }];

        [JPUSHService handleRemoteNotification:userInfo];
    }
    completionHandler();
}

//  >= iOS 7 <iOS 10
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    [JPUSHService handleRemoteNotification:userInfo];

    completionHandler(UIBackgroundFetchResultNewData);

    [self handleRemoteNotificationWithApplication:application userInfo:userInfo];
}

// < iOS 7
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    [JPUSHService handleRemoteNotification:userInfo];

    [self handleRemoteNotificationWithApplication:application userInfo:userInfo];
}

百度推送

#pragma mark *** UNUserNotificationCenterDelegate ***
// >= iOS 10 Support , App Forground
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
    NSDictionary * userInfo = notification.request.content.userInfo;

    if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        [BPush handleNotification:userInfo];
        //  收到推送消息,追踪"App 消息推送"事件
        [AnalysysAgent trackCampaign:userInfo isClick:NO userCallback:^(id campaignInfo) {
            NSLog(@"此处可根据需要处理数据 : %@",campaignInfo);
        }];
    }

    // 根据APP需要,判断是否要提示用户Badge、Sound、Alert
    completionHandler(UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);
}

// iOS 10 Support, App Background
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
    NSDictionary *userInfo = response.notification.request.content.userInfo;

    if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        //  点击通知栏打开消息,记录"App 点击通知"事件
        [AnalysysAgent trackCampaign:userInfo isClick:YES userCallback:^(id campaignInfo) {
            NSLog(@"此处可根据需要处理数据 : %@",campaignInfo);
        }];

        [BPush handleNotification:userInfo];
    }
    completionHandler();
}

//  >= iOS 7 <iOS 10
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    [BPush handleNotification:userInfo];

    completionHandler(UIBackgroundFetchResultNewData);

    [self handleRemoteNotificationWithApplication:application userInfo:userInfo];
}

// < iOS 7
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    [BPush handleNotification:userInfo];

    [self handleRemoteNotificationWithApplication:application userInfo:userInfo];
}

小米推送

#pragma mark *** UNUserNotificationCenterDelegate ***
// >= iOS 10 Support , App Forground
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
    NSDictionary * userInfo = notification.request.content.userInfo;

    if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        [MiPushSDK handleReceiveRemoteNotification:userInfo];
        //  收到推送消息,追踪"App 消息推送"事件
        [AnalysysAgent trackCampaign:userInfo isClick:NO userCallback:^(id campaignInfo) {
            NSLog(@"此处可根据需要处理数据 : %@",campaignInfo);
        }];
    }

    // 根据APP需要,判断是否要提示用户Badge、Sound、Alert
    completionHandler(UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);
}

// iOS 10 Support, App Background
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
    NSDictionary *userInfo = response.notification.request.content.userInfo;

    if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        //  点击通知栏打开消息,记录"App 点击通知"事件
        [AnalysysAgent trackCampaign:userInfo isClick:YES userCallback:^(id campaignInfo) {
            NSLog(@"此处可根据需要处理数据 : %@",campaignInfo);
        }];

        [MiPushSDK handleReceiveRemoteNotification:userInfo];
    }
    completionHandler();
}

//  >= iOS 7 <iOS 10
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    [MiPushSDK handleReceiveRemoteNotification:userInfo];

    completionHandler(UIBackgroundFetchResultNewData);

    [self handleRemoteNotificationWithApplication:application userInfo:userInfo];
}

// < iOS 7
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    [MiPushSDK handleReceiveRemoteNotification:userInfo];

    [self handleRemoteNotificationWithApplication:application userInfo:userInfo];
}

个推推送

// iOS 10 Support, App Background
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
    NSDictionary *userInfo = response.notification.request.content.userInfo;

    if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        //  点击通知栏打开消息,记录"App 点击通知"事件
        [AnalysysAgent trackCampaign:userInfo isClick:YES userCallback:^(id campaignInfo) {
            NSLog(@"此处可根据需要处理数据 : %@",campaignInfo);
        }];

        [GeTuiSdk handleRemoteNotification:userInfo];
    }
    completionHandler();
}

//  >= iOS 7 <iOS 10
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    [GeTuiSdk handleRemoteNotification:userInfo];

    completionHandler(UIBackgroundFetchResultNewData);

    [self handleRemoteNotificationWithApplication:application userInfo:userInfo];
}

#pragma mark *** GeTuiSdkDelegate ***
/** SDK收到透传消息回调 */
- (void)GeTuiSdkDidReceivePayloadData:(NSData *)payloadData andTaskId:(NSString *)taskId andMsgId:(NSString *)msgId andOffLine:(BOOL)offLine fromGtAppId:(NSString *)appId {
    // [ GTSdk ]:汇报个推自定义事件(反馈透传消息)
    [GeTuiSdk sendFeedbackMessage:90001 andTaskId:taskId andMsgId:msgId];

    // 数据转换
    NSString *payloadMsg = nil;
    if (payloadData) {
        payloadMsg = [[NSString alloc] initWithBytes:payloadData.bytes length:payloadData.length encoding:NSUTF8StringEncoding];

        //  若App在前台时用户做弹框等处理,请适当调整isClick:参数(是否用户点击)
        [AnalysysAgent trackCampaign:payloadMsg isClick:NO userCallback:^(id campaignInfo) {
            NSLog(@"此处可根据需要处理数据 : %@",campaignInfo);
        }];
    }
}

阿里云推送

#pragma mark - UIApplicationDelegate

// 收到通知 >= iOS 7 <iOS 10
//  默认前台
//  后台通知需设置Capabilities 开启Remote notifications
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    
     //  方舟SDK推送处理(方法见文档尾部)
     [self handleRemoteNotificationWithApplication:application userInfo:userInfo];
     
    completionHandler(UIBackgroundFetchResultNewData);
}

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
//  iOS 10: App在前台获取到通知
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler  API_AVAILABLE(ios(10.0)){

    NSDictionary * userInfo = notification.request.content.userInfo;
    
    if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        //  方舟SDK推送处理
        //  收到推送消息,追踪"App 消息推送"事件
        [AnalysysAgent trackCampaign:userInfo isClick:NO userCallback:^(id campaignInfo) {
            NSLog(@"campaignInfo:%@", campaignInfo);
        }];
    }
    
    completionHandler(UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);
}

//  iOS 10: 点击通知进入App时触发
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler API_AVAILABLE(ios(10.0)){

    NSDictionary *userInfo = response.notification.request.content.userInfo;
    
    if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        //  方舟SDK推送处理
        //  点击通知栏打开消息,记录"App 点击通知"事件
        [AnalysysAgent trackCampaign:userInfo isClick:YES userCallback:^(id campaignInfo) {
            NSLog(@"campaignInfo:%@", campaignInfo);
        }];
    }
    
    completionHandler();
}
#endif

信鸽推送

- (void)xgPushDidReceiveRemoteNotification:(id)notification withCompletionHandler:(void (^)(NSUInteger))completionHandler {
    
    if (@available(iOS 10.0, *)) {
        if ([notification isKindOfClass:[UNNotification class]]) {
            UNNotification *not = (UNNotification *)notification;
            //  方舟SDK推送处理
            [AnalysysAgent trackCampaign:not.request.content.userInfo isClick:NO userCallback:^(id campaignInfo) {
                NSLog(@"信鸽:receive campaignInfo:%@", campaignInfo);
            }];
            
            [[XGPush defaultManager] reportXGNotificationInfo:((UNNotification *)notification).request.content.userInfo];
            completionHandler(UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);
        }
    } else {
        if ([notification isKindOfClass:[NSDictionary class]]) {
        
           //  方舟SDK推送处理(方法见文档尾部)
            [self handleRemoteNotificationWithApplication:[UIApplication sharedApplication] userInfo:notification];
            
            [[XGPush defaultManager] reportXGNotificationInfo:(NSDictionary *)notification];
            completionHandler(UIBackgroundFetchResultNewData);
        }
    }
}

iOS 10.0以下回调方法统一调用的方法:

//  <iOS 10 版本统一处理通知回调方法
- (void)handleRemoteNotificationWithApplication:(UIApplication *)application userInfo:(NSDictionary *)userInfo{
    if (application.applicationState == UIApplicationStateActive) {
        //  App前台 收到推送消息,追踪"App 消息推送"事件
        [AnalysysAgent trackCampaign:userInfo isClick:NO userCallback:^(id campaignInfo) {
            NSLog(@"此处可根据需要处理数据 : %@",campaignInfo);
        }];

    } else if (application.applicationState == UIApplicationStateBackground) {
        //  App后台 收到推送消息,追踪"App 消息推送"事件
        [AnalysysAgent trackCampaign:userInfo isClick:NO userCallback:^(id campaignInfo) {
            NSLog(@"此处可根据需要处理数据 : %@",campaignInfo);
        }];
    } else {
        //  App非活动状态
        //  点击通知栏打开消息,记录"App 点击通知"事件
        [AnalysysAgent trackCampaign:userInfo isClick:YES userCallback:^(id campaignInfo) {
            NSLog(@"此处可根据需要处理数据 : %@",campaignInfo);
        }];
    }
}
上一页iOS Hybrid模式下一页JS SDK

最后更新于5年前

这有帮助吗?

请下载最新的极光推送 SDK,并根据将SDK集成至开发者App中。并集成并初始化方舟SDK。

请下载最新的百度推送 SDK,并根据将 SDK 集成至开发者App中。并集成并初始化方舟SDK。

请下载最新的小米推送 SDK,并根据将 SDK 集成至开发者 App 中。并集成并初始化方舟SDK。

请下载最新的个推推送 SDK,并根据将 SDK 集成至开发者 App 中。并集成并初始化方舟 SDK。

请下载最新的阿里云推送SDK,并根据正确集成至App中。

请下载最新的腾讯信鸽推送SDK,并根据正确集成至App中。

🐵
《iOS SDK 集成指南》
《百度Push服务SDK用户手册(iOS版)》
《小米推送服务iOS客户端SDK使用指南》
《iOS端 > Xcode集成》
《iOS SDK配置》
《iOS集成接入指南》