最新版:本站同款主题全量文件----持续更新

优采云 发布时间: 2022-11-13 16:32

  最新版:本站同款主题全量文件----持续更新

  点击广告查看隐藏内容......

  测试付费阅读,无内容

  此处内容作者设置了支付0.01元(点此支付,支付后请刷新界面)可见支付后1天内有效

  使用Joe主题的朋友,有没有遇到过主题频繁更新,导致修改的文件被覆盖的场景?确保以前实现的功能不被覆盖;

  {tabs-pane label="最新更新"}

  继续更新历史版本......

  60、修复php升级后文章目录树无法显示的问题;

  61、修复文章中的广告无法旋转的问题;

  62、底部增加美化,显示好久不见的图标;

  63、增加LOGO扫一扫效果;

  64.新增首页大图功能,可指定图片并填写url;

  65、增加匿名评论功能,可在后台开启;

  66.增加顶部进度条功能;

  67、新增首页和文章显示顶部彩虹条;

  68、增加来访问候弹窗;

  69.新增评论输入框特效;

  70.增加了底部跳鱼;

  71.在底部添加文章自定义信息;

  72.新增文章列表开启方式;

  73.新增鼠标点击效果,每次点击可以显示对应的文字或图标;

  74.开启静态文件分享功能,使用该主题的用户可以贡献自己的带宽,用爱发电;

  75.增加付费阅读功能;

  76.付费阅读功能支持对接轻松支付;

  77、付费阅读功能支持对接码支付;

  未完待续...

  {/标签窗格}

  {tabs-pane label="历史更新内容"}

  修改如下:

  1.主题增加打赏功能。打开后会在文章底部显示奖励按钮

  2.主题增加弹幕功能,打开后界面显示弹幕。

  3. 主题新增在线人数统计,打开后在线人数会显示在底部

  4.主题增加互动阅读器侧边栏,打开后侧边栏显示活跃用户

  5.主题新增文章字数和阅读时间统计,打开后文章底部显示文章字数和阅读时间

  6.主题新增转载来源,文章内容输入已建立的内容,在版权处显示转载地址

  7、主题增加了移动端登录和注册功能。打开后,手机侧边栏可以登录注册。

  8. 主题增加了全站变灰功能。打开后网站界面会灰显

  9、主题增加QQ打开跳转浏览器功能。打开后QQ打开网址可以跳转到浏览器。

  10、添加到主题中的纯数字评论可以直接审批。开通后可直接审核纯数字评论。

  11、主题编辑器新增订阅地址,支持将订阅地址插入文章任意位置,方便用户订阅

  12.主题新增CNZZ统计,选择不同的CNZZ风格,底部显示对应的CNZZ统计

  13.主题增加了海报功能。使用插件,打开后文章底部会显示一个海报按钮。

  14、主题后台设置新增订阅设置,方便站长向读者发布订阅功能

  15.主题编辑器新增字体颜色功能,可以插入自己喜欢的字体颜色,从第一版的输入颜色到可以选择的颜色,方便用户使用

  16.主题在手机侧边栏增加了文章今天发布数量的显示,打开后侧边栏会显示文章的数量

  17.主题增加评论楼层展示。打开后,评论区会显示在右侧。

  18. 主题新增评论等级显示。打开后会显示评论者的等级信息。

  19.修改文章底部版权中的“Obstinence Blog”,采用自动获取文章的作者,使用该主题的用户不再需要自行修改代码

  20.头像上的呼吸灯闪烁

  21.主题设置新增采集设置

  22.修复版权链接为本站的问题

  23.底部新增百度收录号码显示

  24.在文章底部添加版权声明,打开文章地址后显示版权声明

  25、评论区增加了操作按钮,可以直接在前台操作评论删除和移动到垃圾箱。

  26.修复不能使用分页功能的bug,可以在主题设置中切换分页样式

  27.增加好友链界面样式选项,可以选择不同的好友链样式

  28.友情链界面新增随机排序,使得每个友情链请求的显示顺序不一致

  29.调整百度自动推送,是否推送收录

  30、新增友谊链在线申请功能。访客可以直接在线申请友谊链,然后通过电子邮件通知管理员批准。

  31.增加图片评论功能。打开后,用户可以直接在评论区对图片进行评论。

  32.在编辑器中增加了上传图床的按钮,可以直接将图片上传到图床,然后返回链接给编辑器

  33.增加链接跳转页面功能。打开链接,先跳转到跳转页面。3秒后,链接会自动打开。您可以自行配置和调整页面地址。

  34. 增加显示回复可见的功能。打开开关后,文章的所有隐藏内容不再需要回复,直接显示即可

  35、修复主题设置中的备份无法使用的问题;

  36.主题增加自动更新功能,可一键更新到最新版本

  37、手机底部新增菜单设置,可自行设置菜单数量和跳转地址;

  38、支持多种首页广告,优化展示风格,实现图片适配;

  39.修复评论和作者头像无法显示的问题;

  40、首页广告支持输入广告有效期,方便站长记忆;

  41、增加首页广告过期自动删除功能,无需站长后台删除

  42.新增头部呼吸灯开关,可开启或关闭

  43.评论新增滑动验证码功能,可开启或关闭

  44.首页广告支持平铺和轮播样式,可自行选择

  45.后台新增爱情计时设置,添加侧边栏后显示爱情计时

  46.新增最新文章高亮

  47.修复打开验证码后无法评论图纸的问题;

  48.增加文章目录树功能。打开后,文章在左侧显示目录树;

  49.修复奖励按钮中图片无法显示的问题;

  50、修复百度收录无法显示的问题;

  51、新增后台资源搜索功能,方便站长采集各种资源;

  52.支持在编辑器图床中选择多张图片并上传图床功能;

  53、修复typecho1.2升级后报错问题;

  54、新增文章顶部轮播广告;

  55、新增文章底部轮播广告;

  56.Jsdelivr远程文件本地化-第一版;

  57.Jsdelivr远程文件本地化-最终版;

  58、增加评论者归属地展示功能;

  59.新增网站统计,51la统计;

  未完待续...

  {/标签窗格}

  下载地址如下:

  本文共1656字,平均阅读时间≈5分钟

  点击广告查看隐藏内容......

  

  点击广告查看隐藏内容......

  测试付费阅读,无内容

  此处内容作者设置了支付0.01元(点此支付,支付后请刷新界面)可见支付后1天内有效

  使用Joe主题的朋友,有没有遇到过主题频繁更新,导致修改的文件被覆盖的场景?确保以前实现的功能不被覆盖;

  {tabs-pane label="最新更新"}

  继续更新历史版本......

  60、修复php升级后文章目录树无法显示的问题;

  61、修复文章中的广告无法旋转的问题;

  62、底部增加美化,显示好久不见的图标;

  63、增加LOGO扫一扫效果;

  64.新增首页大图功能,可指定图片并填写url;

  65、增加匿名评论功能,可在后台开启;

  66.增加顶部进度条功能;

  67、新增首页和文章显示顶部彩虹条;

  68、增加来访问候弹窗;

  69.新增评论输入框特效;

  70.增加了底部跳鱼;

  71.在底部添加文章自定义信息;

  72.新增文章列表开启方式;

  73.新增鼠标点击效果,每次点击可以显示对应的文字或图标;

  74.开启静态文件分享功能,使用该主题的用户可以贡献自己的带宽,用爱发电;

  75.增加付费阅读功能;

  76.付费阅读功能支持对接轻松支付;

  77、付费阅读功能支持对接码支付;

  未完待续...

  {/标签窗格}

  {tabs-pane label="历史更新内容"}

  修改如下:

  1.主题增加打赏功能。打开后会在文章底部显示奖励按钮

  2.主题增加弹幕功能,打开后界面显示弹幕。

  3. 主题新增在线人数统计,打开后在线人数会显示在底部

  4.主题增加互动阅读器侧边栏,打开后侧边栏显示活跃用户

  5.主题新增文章字数和阅读时间统计,打开后文章底部显示文章字数和阅读时间

  6.主题新增转载来源,文章内容输入已建立的内容,在版权处显示转载地址

  7、主题增加了移动端登录和注册功能。打开后,手机侧边栏可以登录注册。

  8. 主题增加了全站变灰功能。打开后网站界面会灰显

  9、主题增加QQ打开跳转浏览器功能。打开后QQ打开网址可以跳转到浏览器。

  10、添加到主题中的纯数字评论可以直接审批。开通后可直接审核纯数字评论。

  11、主题编辑器新增订阅地址,支持将订阅地址插入文章任意位置,方便用户订阅

  12.主题新增CNZZ统计,选择不同的CNZZ风格,底部显示对应的CNZZ统计

  13.主题增加了海报功能。使用插件,打开后文章底部会显示一个海报按钮。

  14、主题后台设置新增订阅设置,方便站长向读者发布订阅功能

  15.主题编辑器新增字体颜色功能,可以插入自己喜欢的字体颜色,从第一版的输入颜色到可以选择的颜色,方便用户使用

  16.主题在手机侧边栏增加了文章今天发布数量的显示,打开后侧边栏会显示文章的数量

  17.主题增加评论楼层展示。打开后,评论区会显示在右侧。

  18. 主题新增评论等级显示。打开后会显示评论者的等级信息。

  19.修改文章底部版权中的“Obstinence Blog”,采用自动获取文章的作者,使用该主题的用户不再需要自行修改代码

  20.头像上的呼吸灯闪烁

  21.主题设置新增采集设置

  22.修复版权链接为本站的问题

  23.底部新增百度收录号码显示

  24.在文章底部添加版权声明,打开文章地址后显示版权声明

  25、评论区增加了操作按钮,可以直接在前台操作评论删除和移动到垃圾箱。

  26.修复不能使用分页功能的bug,可以在主题设置中切换分页样式

  27.增加好友链界面样式选项,可以选择不同的好友链样式

  28.友情链界面新增随机排序,使得每个友情链请求的显示顺序不一致

  29.调整百度自动推送,是否推送收录

  30、新增友谊链在线申请功能。访客可以直接在线申请友谊链,然后通过电子邮件通知管理员批准。

  31.增加图片评论功能。打开后,用户可以直接在评论区对图片进行评论。

  32.在编辑器中增加了上传图床的按钮,可以直接将图片上传到图床,然后返回链接给编辑器

  33.增加链接跳转页面功能。打开链接,先跳转到跳转页面。3秒后,链接会自动打开。您可以自行配置和调整页面地址。

  34. 增加显示回复可见的功能。打开开关后,文章的所有隐藏内容不再需要回复,直接显示即可

  35、修复主题设置中的备份无法使用的问题;

  36.主题增加自动更新功能,可一键更新到最新版本

  37、手机底部新增菜单设置,可自行设置菜单数量和跳转地址;

  38、支持多种首页广告,优化展示风格,实现图片适配;

  39.修复评论和作者头像无法显示的问题;

  40、首页广告支持输入广告有效期,方便站长记忆;

  41、增加首页广告过期自动删除功能,无需站长后台删除

  42.新增头部呼吸灯开关,可开启或关闭

  43.评论新增滑动验证码功能,可开启或关闭

  44.首页广告支持平铺和轮播样式,可自行选择

  45.后台新增爱情计时设置,添加侧边栏后显示爱情计时

  46.新增最新文章高亮

  47.修复打开验证码后无法评论图纸的问题;

  48.增加文章目录树功能。打开后,文章在左侧显示目录树;

  49.修复奖励按钮中图片无法显示的问题;

  50、修复百度收录无法显示的问题;

  51、新增后台资源搜索功能,方便站长采集各种资源;

  52.支持在编辑器图床中选择多张图片并上传图床功能;

  53、修复typecho1.2升级后报错问题;

  54、新增文章顶部轮播广告;

  55、新增文章底部轮播广告;

  56.Jsdelivr远程文件本地化-第一版;

  57.Jsdelivr远程文件本地化-最终版;

  58、增加评论者归属地展示功能;

  59.新增网站统计,51la统计;

  未完待续...

  {/标签窗格}

  下载地址如下:

  本文共1656字,平均阅读时间≈5分钟

  点击广告查看隐藏内容......

  

  点击广告查看隐藏内容......

  测试付费阅读,无内容

  此处内容作者设置了支付0.01元(点此支付,支付后请刷新界面)可见支付后1天内有效

  使用Joe主题的朋友,有没有遇到过主题频繁更新,导致修改的文件被覆盖的场景?确保以前实现的功能不被覆盖;

  {tabs-pane label="最新更新"}

  继续更新历史版本......

  60、修复php升级后文章目录树无法显示的问题;

  61、修复文章中的广告无法旋转的问题;

  62、底部增加美化,显示好久不见的图标;

  63、增加LOGO扫一扫效果;

  64.新增首页大图功能,可指定图片并填写url;

  65、增加匿名评论功能,可在后台开启;

  66.增加顶部进度条功能;

  67、新增首页和文章显示顶部彩虹条;

  68、增加来访问候弹窗;

  69.新增评论输入框特效;

  70.增加了底部跳鱼;

  71.在底部添加文章自定义信息;

  72.新增文章列表开启方式;

  73.新增鼠标点击效果,每次点击可以显示对应的文字或图标;

  74.开启静态文件分享功能,使用该主题的用户可以贡献自己的带宽,用爱发电;

  75.增加付费阅读功能;

  76.付费阅读功能支持对接轻松支付;

  77、付费阅读功能支持对接码支付;

  未完待续...

  {/标签窗格}

  {tabs-pane label="历史更新内容"}

  修改如下:

  1.主题增加打赏功能。打开后会在文章底部显示奖励按钮

  2.主题增加弹幕功能,打开后界面显示弹幕。

  3. 主题新增在线人数统计,打开后在线人数会显示在底部

  4.主题增加互动阅读器侧边栏,打开后侧边栏显示活跃用户

  5.主题新增文章字数和阅读时间统计,打开后文章底部显示文章字数和阅读时间

  6.主题新增转载来源,文章内容输入已建立的内容,在版权处显示转载地址

  7、主题增加了移动端登录和注册功能。打开后,手机侧边栏可以登录注册。

  8. 主题增加了全站变灰功能。打开后网站界面会灰显

  9、主题增加QQ打开跳转浏览器功能。打开后QQ打开网址可以跳转到浏览器。

  10、添加到主题中的纯数字评论可以直接审批。开通后可直接审核纯数字评论。

  11、主题编辑器新增订阅地址,支持将订阅地址插入文章任意位置,方便用户订阅

  12.主题新增CNZZ统计,选择不同的CNZZ风格,底部显示对应的CNZZ统计

  13.主题增加了海报功能。使用插件,打开后文章底部会显示一个海报按钮。

  14、主题后台设置新增订阅设置,方便站长向读者发布订阅功能

  15.主题编辑器新增字体颜色功能,可以插入自己喜欢的字体颜色,从第一版的输入颜色到可以选择的颜色,方便用户使用

  16.主题在手机侧边栏增加了文章今天发布数量的显示,打开后侧边栏会显示文章的数量

  17.主题增加评论楼层展示。打开后,评论区会显示在右侧。

  18. 主题新增评论等级显示。打开后会显示评论者的等级信息。

  19.修改文章底部版权中的“Obstinence Blog”,采用自动获取文章的作者,使用该主题的用户不再需要自行修改代码

  20.头像上的呼吸灯闪烁

  21.主题设置新增采集设置

  22.修复版权链接为本站的问题

  23.底部新增百度收录号码显示

  24.在文章底部添加版权声明,打开文章地址后显示版权声明

  25、评论区增加了操作按钮,可以直接在前台操作评论删除和移动到垃圾箱。

  26.修复不能使用分页功能的bug,可以在主题设置中切换分页样式

  27.增加好友链界面样式选项,可以选择不同的好友链样式

  28.友情链界面新增随机排序,使得每个友情链请求的显示顺序不一致

  29.调整百度自动推送,是否推送收录

  30、新增友谊链在线申请功能。访客可以直接在线申请友谊链,然后通过电子邮件通知管理员批准。

  31.增加图片评论功能。打开后,用户可以直接在评论区对图片进行评论。

  32.在编辑器中增加了上传图床的按钮,可以直接将图片上传到图床,然后返回链接给编辑器

  33.增加链接跳转页面功能。打开链接,先跳转到跳转页面。3秒后,链接会自动打开。您可以自行配置和调整页面地址。

  34. 增加显示回复可见的功能。打开开关后,文章的所有隐藏内容不再需要回复,直接显示即可

  35、修复主题设置中的备份无法使用的问题;

  36.主题增加自动更新功能,可一键更新到最新版本

  37、手机底部新增菜单设置,可自行设置菜单数量和跳转地址;

  38、支持多种首页广告,优化展示风格,实现图片适配;

  39.修复评论和作者头像无法显示的问题;

  40、首页广告支持输入广告有效期,方便站长记忆;

  41、增加首页广告过期自动删除功能,无需站长后台删除

  42.新增头部呼吸灯开关,可开启或关闭

  43.评论新增滑动验证码功能,可开启或关闭

  44.首页广告支持平铺和轮播样式,可自行选择

  45.后台新增爱情计时设置,添加侧边栏后显示爱情计时

  46.新增最新文章高亮

  47.修复打开验证码后无法评论图纸的问题;

  48.增加文章目录树功能。打开后,文章在左侧显示目录树;

  49.修复奖励按钮中图片无法显示的问题;

  50、修复百度收录无法显示的问题;

  51、新增后台资源搜索功能,方便站长采集各种资源;

  52.支持在编辑器图床中选择多张图片并上传图床功能;

  53、修复typecho1.2升级后报错问题;

  54、新增文章顶部轮播广告;

  55、新增文章底部轮播广告;

  56.Jsdelivr远程文件本地化-第一版;

  57.Jsdelivr远程文件本地化-最终版;

  58、增加评论者归属地展示功能;

  59.新增网站统计,51la统计;

  未完待续...

  {/标签窗格}

  下载地址如下:

  本文共1656字,平均阅读时间≈5分钟

  点击广告查看隐藏内容......

  最新版本:iOS 推送集成

  1. 极光推送 1.1.上报推送 ID

  为了保证用户登录后也能设置 registrationID 属性,需要在 -registrationID 后报一次注册 ID处理处理程序:回调并调用神奇策略 - login: 接口。

  // 神策 SDK 初始化之后,在极光回调中上报 registrationID

[JPUSHService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {

// 将 registrationID 保存到神策用户表的 jiguang_id 字段中(这⾥的 jiguang_id 只是一个示例字段)

[[SensorsAnalyticsSDK sharedInstance] set:@"jiguang_id" to:registrationID];

}];

  目标-C

  // login 之后,再次上报 registrationID

[[SensorsAnalyticsSDK sharedInstance] login:];

[[SensorsAnalyticsSDK sharedInstance] set:@"jiguang_id" to:registrationID];

  目标-C

  1.2. 采集点击事件

  iOSD SDK 可以自动采集来自极光的推送点击事件,请参考采集开启。

  1.3. 处理平台推送的消息

  // iOS10以下,点击通知的回调

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

// Required, iOS 7 Support

[JPUSHService handleRemoteNotification:userInfo];

// 处理平台推送的消息

[SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

completionHandler(UIBackgroundFetchResultNewData);

}

// iOS10以上,点击通知的回调

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler API_AVAILABLE(ios(10.0)){

// Required

NSDictionary *userInfo = response.notification.request.content.userInfo;

if ([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {

[JPUSHService handleRemoteNotification:userInfo];

}

// 处理平台推送的消息

[SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

completionHandler(); // 系统要求执行这个方法

}

  目标-C2

  .乌尔蒙推 2.1.报告设备令牌

  为了保证用户在登录后也能设置 deviceToken 属性,需要在获取 deviceToken 时和调用 -login: 接口后,上报一次 deviceToken。

  /** 远程通知注册成功委托 */

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

[UMessage registerDeviceToken:deviceToken];

if (![deviceToken isKindOfClass:[NSData class]]) return;

const unsigned *tokenBytes = (const unsigned *)[deviceToken bytes];

NSString *hexToken = [NSString stringWithFormat:@"xxxxxxxx",

ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),

ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),

ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];

// 将 deviceToken 保存到神策用户表 umeng_id 中(这里的 umeng_id 只是一个示例字段)

[[SensorsAnalyticsSDK sharedInstance] set:@"umeng_id" to:hexToken];

/**

* 将 hexToken 进行缓存

*/

}

  目标-C

  [[SensorsAnalyticsSDK sharedInstance] login:];

// 为了保证登录后的用户也能正确设置 deviceToken,调用 login 之后,需要再次上报。

NSString *hexToken =

[[SensorsAnalyticsSDK sharedInstance] set:@"umeng_id" to:hexToken];

  目标-C

  2.2. 记录“推开”事件,处理智能运营平台推送的消息

  // iOS10 一下版本,iOS 7 Support

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

[UMessage didReceiveRemoteNotification:userInfo];

// 记录 推送打开 事件

[SensorsFocusHelper trackSensorsFocusAppOpenNotificationWithUserInfo:userInfo];

// 处理平台推送的消息

[SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

completionHandler(UIBackgroundFetchResultNewData);

}

// iOS 10: 点击通知进入App时触发,在该方法内统计有效用户点击数

- (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]]) {

[UMessage didReceiveRemoteNotification:userInfo];

}

// 记录 推送打开 事件

[SensorsFocusHelper trackSensorsFocusAppOpenNotificationWithUserInfo:userInfo];

// 处理平台推送的消息

[SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

completionHandler(); // 系统要求执行这个方法

}

  目标-C

  3. 推送 3.1.报告推送 ID

  为了保证用户在登录后也能设置 clientId 属性,需要在 GeTuiSdkDelegate 协议方法 GeTuiSdkDidRegisterClient: 之后和调用 Sthus-login: 接口后报一次clientId。

  - (void)GeTuiSdkDidRegisterClient:(NSString *)clientId {

// 将clientId 保存到用户表的 getui_id 字段中(这里的 getui_id 只是一个示例字段)

[[SensorsAnalyticsSDK sharedInstance] set:@"getui_id" to:clientId];

}

  目标-C

  // 为了保证登录后的用户也能正确设置 clientId,调用 login 之后,再次上报 clientId

[[SensorsAnalyticsSDK sharedInstance] login:];

[[SensorsAnalyticsSDK sharedInstance] set:@"getui_id" to:GeTuiSdk.clientId];

  目标-C

  3.2. 记录“推开”事件,处理智能运维平台推送的消息

  // iOS10 一下版本,iOS 7 Support

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

// [ GTSdk ]:将收到的APNs信息传给个推统计

[GeTuiSdk handleRemoteNotification:userInfo];

// 记录 推送打开 事件

[SensorsFocusHelper trackSensorsFocusAppOpenNotificationWithUserInfo:userInfo];

// 处理平台推送的消息

[SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

completionHandler(UIBackgroundFetchResultNewData);

}

// iOS 10: 点击通知进入App时触发,在该方法内统计有效用户点击数

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {

NSDictionary *userInfo = response.notification.request.content.userInfo;

<p>

if ([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {

// [ GTSdk ]:将收到的APNs信息传给个推统计

[GeTuiSdk handleRemoteNotification:userInfo];

}

// 记录 推送打开 事件

[SensorsFocusHelper trackSensorsFocusAppOpenNotificationWithUserInfo:userInfo];

// 处理平台推送的消息

[SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

completionHandler(); // 系统要求执行这个方法

}</p>

  目标-C

  4. 阿里云推送 4.1.上报推送 ID

  为了保证用户登录后也能设置 deviceId 属性,需要在 CloudPushSDK 初始化方法回调并调用神奇策略 - login: 接口后,上报一次 deviceId。

  // 阿里云推送 SDK 初始化

[CloudPushSDK asyncInit:@"*****" appSecret:@"*****" callback:^(CloudPushCallbackResult *res) {

if (res.success) {

NSLog(@"Push SDK init success, deviceId: %@.", [CloudPushSDK getDeviceId]);

// 将 deviceId 保存到用户表的 aliyun_id 字段中(这里的 aliyun_id 只是一个示例字段)

[[SensorsAnalyticsSDK sharedInstance] set:@"aliyun_id" to:[CloudPushSDK getDeviceId]];

} else {

NSLog(@"Push SDK init failed, error: %@", res.error);

}

}];

  目标-C

  // 为了保证登录后的用户也能正确设置 deviceId,调用 login 之后,再次上报 deviceId

[[SensorsAnalyticsSDK sharedInstance] login:];

[[SensorsAnalyticsSDK sharedInstance] set:@"aliyun_id" to:[CloudPushSDK getDeviceId]];

  目标-C

  4.2. 记录“推开”事件,处理智能运营平台推送的消息

  // iOS10 一下版本,iOS 7 Support

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

// 上报通知点击事件

[CloudPushSDK sendNotificationAck:userInfo];  

// 记录 推送打开 事件

[SensorsFocusHelper trackSensorsFocusAppOpenNotificationWithUserInfo:userInfo];

// 处理平台推送的消息

[SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

completionHandler(UIBackgroundFetchResultNewData);

}

// iOS 10: 点击通知进入App时触发,在该方法内统计有效用户点击数

- (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]]) {

// 上报通知点击事件      

[CloudPushSDK sendNotificationAck:userInfo];

 }

// 记录 推送打开 事件

[SensorsFocusHelper trackSensorsFocusAppOpenNotificationWithUserInfo:userInfo];

// 处理平台推送的消息

[SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

completionHandler(); // 系统要求执行这个方法

}

  目标-C

  5. 华为推送 5.1.报告推送 ID

  为了保证用户登录后也能设置华为推送的设备令牌属性,需要在获取原创设备令牌时按照华为官方文档进行上报(参考华为官方文档),然后调用策略-login:界面再次上报。

  - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

// 参考华为官方文档处理下 deviceToken

NSString *deviceTokenString = "按照华为官方文档处理下获取到的一个字符串";

NSString *hmsDeviceToken = [[HmsInstanceId getInstance] getToken:deviceTokenString];

  [[SensorsAnalyticsSDK sharedInstance] set:@"hms_id" to:hmsDeviceToken]; // hms_id 只是一个示例字段

}

  目标-C

  // 为了保证登录后的用户也能正确设置 device token,调用 login 之后,再次上报 device token

[[SensorsAnalyticsSDK sharedInstance] login:];

[[SensorsAnalyticsSDK sharedInstance] set:@"hms_id" to:hmsDeviceToken];

  目标-C

  5.2. 记录“推开”事件,处理智能运营平台推送的消息

  // iOS10 一下版本,iOS 7 Support

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

// 上报通知点击事件

   [[EventReport getInstance] reportPushMsgClickEvent:userInfo];  

// 记录 推送打开 事件

[SensorsFocusHelper trackSensorsFocusAppOpenNotificationWithUserInfo:userInfo];

// 处理平台推送的消息

[SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

completionHandler(UIBackgroundFetchResultNewData);

}

// iOS 10: 点击通知进入App时触发,在该方法内统计有效用户点击数

- (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]]) {

// 上报通知点击事件      

       [[EventReport getInstance] reportPushMsgClickEvent:userInfo];

 }

// 记录 推送打开 事件

[SensorsFocusHelper trackSensorsFocusAppOpenNotificationWithUserInfo:userInfo];

// 处理平台推送的消息

[SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

completionHandler(); // 系统要求执行这个方法

}

  目标-C

  6. APNs 推送 6.1。报告推送 ID

  为了保证用户登录后也能设置设备令牌属性,需要获取设备令牌并调用魔术策略-登录:界面各一次。

  - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

// 将 deviceToken 转为化字符串,建议转为为 hex

NSString *deviceTokenString = "转化后的字符串";

  [[SensorsAnalyticsSDK sharedInstance] set:@"apns_id" to:deviceTokenString]; // apns_id 只是一个示例字段

}

  目标-C

  // 为了保证登录后的用户也能正确设置 device token,调用 login 之后,再次上报 device token

[[SensorsAnalyticsSDK sharedInstance] login:];

[[SensorsAnalyticsSDK sharedInstance] set:@"apns_id" to:deviceTokenString];

  目标-C

  6.2. 记录“推开”事件,处理智能运营平台推送的消息

  // iOS10 一下版本,iOS 7 Support

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

// 记录 推送打开 事件

[SensorsFocusHelper trackSensorsFocusAppOpenNotificationWithUserInfo:userInfo];

// 处理平台推送的消息

[SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

completionHandler(UIBackgroundFetchResultNewData);

}

// iOS 10: 点击通知进入App时触发,在该方法内统计有效用户点击数

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {

NSDictionary *userInfo = response.notification.request.content.userInfo;

<p>

// 记录 推送打开 事件

[SensorsFocusHelper trackSensorsFocusAppOpenNotificationWithUserInfo:userInfo];

// 处理平台推送的消息

[SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

completionHandler(); // 系统要求执行这个方法

}</p>

  目标-C

  7. 统一推送7.1.报告推送 ID

  为了保证用户登录后也能设置 cid 属性,需要获取 cid 并调用魔术策略 - login: 界面进行一次上报。由于UniPush目前有两个版本,1.0和2.0,下面以2.0版本解释,1.0版本请参考DCloud官网文档。

  uni.getPushClientId({

success: (res) => {

let cid = res.cid;

sensors.setProfile({ "uni-id": cid }); // uni_id 只是一个示例字段

},

fail(err) {

console.log(err);

}

});

  .JS

  // 为了保证登录后的用户也能正确设置 cid,调用 login 之后,再次上报 cid

sensors.login("");

sensors.setProfile({"uni-id":cid});

  .JS

  7.2. 记录“推开”事件,处理智能运营平台推送的消息

  uni.onPushMessage((result) => {

let data = result.data;

if (typeof data !== "string") {

let sf_data = data.payload.sf_data;

//记录推送事件,此处需参考 trackSensorsFocusAppOpenNotificationWithUserInfo 中的 json 解析逻辑赋值事件属性

let sf_properties = {};

sf_properties.$sf_plan_id = sf_data.sf_plan_id;

...

sensors.track("$AppPushClick", sf_properties);

// 根据解析的字段,发现跳转 url 然后进行跳转操作

}

});

  .JS

  8. 发送推送 ID 后

  到申策进行测试推送,选择上报推送 ID 的密钥(这里以jiguang_id为例),单击测试推送。填写测试机的推送 ID、推送标题和内容,如下图所示。确认推送后,可以检查手机是否收到推送,并检查跟踪点报告字段是否正确。

  9. 附录 9.1. + 跟踪传感器焦点应用程序打开通知与用户信息:方法详细信息

  /**

* 埋点“App 打开推送”事件。

*

* @param userInfo 包含与远程通知相关的信息的字典

*/

+ (void)trackSensorsFocusAppOpenNotificationWithUserInfo:(NSDictionary *)userInfo {

NSMutableDictionary *pushProperties = [NSMutableDictionary dictionary]; // track 字典

@try { // sf_data

NSData *jsonData = [userInfo[@"sf_data"] dataUsingEncoding:NSUTF8StringEncoding];

NSError *error;

NSDictionary *sfDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];

if (!error && [sfDictionary isKindOfClass:NSDictionary.class]) {

pushProperties[@"$sf_msg_id"] = sfDictionary[@"sf_msg_id"]; // SF 消息 id

pushProperties[@"$sf_plan_id"] = sfDictionary[@"sf_plan_id"];

pushProperties[@"$sf_audience_id"] = sfDictionary[@"sf_audience_id"];

pushProperties[@"$sf_plan_strategy_id"] = sfDictionary[@"sf_plan_strategy_id"];

pushProperties[@"$sf_plan_type"] = sfDictionary[@"sf_plan_type"];

pushProperties[@"$sf_strategy_unit_id"] = sfDictionary[@"sf_strategy_unit_id"];

pushProperties[@"$sf_enter_plan_time"] = sfDictionary[@"sf_enter_plan_time"];

pushProperties[@"$sf_channel_id"] = sfDictionary[@"$sf_channel_id"];

pushProperties[@"$sf_channel_category"] = sfDictionary[@"sf_channel_category"];

pushProperties[@"$sf_channel_service_name"] = sfDictionary[@"sf_channel_service_name"];

if ([sfDictionary[@"sf_landing_type"] isEqualToString:@"LINK"]) { // 打开 URL

pushProperties[@"$sf_link_url"] = sfDictionary[@"sf_link_url"];

}

NSDictionary *customizedParams = sfDictionary[@"customized"];

if ([customizedParams isKindOfClass:NSDictionary.class]) {

[pushProperties addEntriesFromDictionary:customizedParams];

}

}

} @catch (NSException *exception) {

}

@try { // aps alert

NSDictionary *apsAlert = userInfo[@"aps"][@"alert"];

if ([apsAlert isKindOfClass:NSDictionary.class]) {

pushProperties[@"$sf_msg_title"] = apsAlert[@"title"]; // 推送标题

pushProperties[@"$sf_msg_content"] = apsAlert[@"body"]; // 推送内容

}

else if ([apsAlert isKindOfClass:NSString.class]) {

pushProperties[@"$sf_msg_content"] = apsAlert; // 推送内容

}

} @catch (NSException *exception) {

}

[SensorsAnalyticsSDK.sharedInstance track:@"$AppPushClick" withProperties:pushProperties];

}

  目标-C

  9.2. + 交易传感器焦点操作: 链接:自定义: 方法详细信息

  /// 神策智能运营处理推送消息,做页面跳转

/// @param userInfo 包含与远程通知相关的信息的字典

/// @param aLink 打开 URL 的回调

/// @param aCustomized 处理自定义消息回调

+ (BOOL)dealSensorsFocusAction:(NSDictionary *)userInfo link:(void (^)(NSString * _Nonnull))aLink customize:(void (^)(NSDictionary * _Nonnull))aCustomized {

@try {

// 解析 sf_data

NSString *jsonString = userInfo[@"sf_data"];

NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];

NSError *error;

NSDictionary *sfDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];

if (!sfDictionary || error) {

return NO;

}

NSString *sf_landing_type = sfDictionary[@"sf_landing_type"];

if ([sf_landing_type isEqualToString:@"LINK"]) {

// 打开 URL

NSString *url = sfDictionary[@"sf_link_url"];

if (aLink) {

aLink(url);

}

}

else if ([sf_landing_type isEqualToString:@"CUSTOMIZED"]) {

// 处理自定义消息

// 如果你们已经有了根据附加字段跳转逻辑,此处无需处理。(因为神策智能运营发的推送消息会兼容极光控制台的 "附加字段")

NSDictionary *customized = sfDictionary[@"customized"];

if (aCustomized) {

aCustomized(customized);

}

}

return YES;

} @catch (NSException *exception) {

}

return NO;

}

  目标-C

  9.3. 附录方法的封装类

  如果不想将附录中的示例方法逐个复制到项目中,可以使用封装的工具类 SensorsFocusHelper 调用示例方法。使用步骤如下:

  下载传感器焦点助手类

  ,将其解压缩并复制到项目中以引入 SensorsFocusHelper.h 调用 SensorsFocusHelper 类中的同名方法

  在附录 + dealSensorsFocusAction 中: 友情链接:自定义:该方法要求开发者在 TODO 注释中添加特定的业务跳转逻辑,SensorsFocusHelper 类将具体的业务跳转逻辑封装成块回调,具体用法请参考以下示例

  [SensorsFocusHelper dealSensorsFocusAction:userInfo link:^(NSString * _Nonnull urlString) {

// TODO 处理打开 URL 消息,--> 请处理 URL

} customize:^(NSDictionary * _Nonnull customizedDic) {

// TODO 处理自定义消息,--> 请处理自定义消息

}];

  目标-C

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线