MobPush iOS端海外推送最佳实现
推送注册
在AppDelegate里进行SDK初始化(也可以在Info.plist文件中进行AppKey,AppSecret的配置)并对通知功能进行注册以及设置推送的环境和切换海外服务器等,参考如下步骤代码:
<span style="background-color:#42475a"><span style="color:#a9b7c6"><code><span style="color:#bbb529">#import <MobPush/MobPush.h></span>
<span style="color:#bbb529">#import <MOBFoundation/MOBFoundation.h></span>
- (BOOL)application:(UIApplication \*)application didFinishLaunchingWithOptions:(NSDictionary \*)launchOptions{<span style="color:grey">//1.初始化SDK</span>[MobSDK registerAppKey:<span style="color:#6a8759">@"2e76e2e95a7ad"</span> appSecret:<span style="color:#6a8759">@"e83de04bc9d850784ca01b5fcfbc886e"</span>];<span style="color:grey">//2.上传隐私状态</span>[MobSDK uploadPrivacyPermissionStatus:<span style="color:#6897bb">YES</span> onResult:^(**BOOL** success) {}];<span style="color:grey">//3.设置推送环境 如果为开发状态设置为 NO; 如果为生产状态,应改为 YES</span>[MobPush setAPNsForProduction:<span style="color:#6897bb">NO</span>];<span style="color:grey">//4.设置地区:regionId 默认0(国内),1:海外</span>[MobPush setRegionID:<span style="color:#6897bb">1</span>];<span style="color:grey">//5.MobPush推送设置(获得角标、声音、弹框提醒权限)</span>MPushNotificationConfiguration *configuration = [[MPushNotificationConfiguration alloc] init];configuration.types = MPushAuthorizationOptionsBadge | MPushAuthorizationOptionsSound | MPushAuthorizationOptionsAlert;[MobPushsetupNotification:configuration];}
</code></span></span>
添加推送监听
同时可以在AppDelegate里注册监听,可以监听到推送消息的到达和点击,参考代码如下:
<span style="background-color:#42475a"><span style="color:#a9b7c6"><code><span style="color:#cc7832">-</span> (BOOL)<span style="color:#cc7832">application</span>:(UIApplication \*)<span style="color:#cc7832">application</span> <span style="color:#cc7832">didFinishLaunchingWithOptions</span>:(NSDictionary \*)<span style="color:#cc7832">launchOptions</span>{[[NSNotificationCenter defaultCenter] <span style="color:#cc7832">addObserver</span>:self <span style="color:#cc7832">selector</span>:@<span style="color:#cc7832">selector</span>(<span style="color:#6a8759">didReceiveMessage</span>:) <span style="color:#cc7832">name</span>:MobPushDidReceiveMessageNotification <span style="color:#cc7832">object</span>:nil];}
</code></span></span>
接收回调处理
在回调中处理接收到的MobPush的通知监听,需要注意如果应用处于后台或者杀死,是不会走APNS回调的,需要点击通知消息才能触发被点击的回调,参考代码如下:
// 收到通知回调
<span style="background-color:#42475a"><span style="color:#a9b7c6"><code>- (<span style="color:#cc7832">void</span>)didReceiveMessage:(NSNotification *)notification{MPushMessage *message = notification.object;<span style="color:grey">// 推送相关参数获取示例请在各场景回调中对参数进行处理</span>
<span style="color:grey">// NSString *body = message.notification.body;</span><span style="color:grey">// NSString *title = message.notification.title;</span>
<span style="color:grey">// NSString *subtitle = message.notification.subTitle;</span>
<span style="color:grey">// NSInteger badge = message.notification.badge;</span>
<span style="color:grey">// NSString *sound = message.notification.sound;</span>
<span style="color:grey">// NSLog(@"收到通知:{\nbody:%@,\ntitle:%@,\nsubtitle:%@,\nbadge:%ld,\nsound:%@,\n}",body, title, subtitle, (long)badge, sound);</span>
<span style="color:#cc7832">switch</span> (message.messageType)
{
<span style="color:#cc7832">case</span> MPushMessageTypeCustom:
{<span style="color:grey">// 自定义消息回调</span>
}
<span style="color:#cc7832">break</span>;
<span style="color:#cc7832">case</span> MPushMessageTypeAPNs:
{<span style="color:grey">// APNs回调</span>
}
<span style="color:#cc7832">break</span>;
<span style="color:#cc7832">case</span> MPushMessageTypeLocal:
{<span style="color:grey">// 本地通知回调</span>}
<span style="color:#cc7832">break</span>;
<span style="color:#cc7832">case</span> MPushMessageTypeClicked:
{<span style="color:grey">// 点击通知回调</span>}
<span style="color:#cc7832">default</span>:
<span style="color:#cc7832">break</span>;
}
</code></span></span>
注意:海外推送与国内推送SDK是一样的,不区分SDK版本,需要注意的是海外需要增加以下接口切换到海外服务器,另外目前4.x版本只支持APNS厂商通道推海外,TCP通道不支持。
<span style="background-color:#42475a"><span style="color:#a9b7c6"><code><span style="color:#ffc66d">[MobPush setRegionID:1]</span><span style="color:grey">;</span>
</code></span></span>
使用开发者后台进行推送
登陆我们的后台,然后打开已注册的应用,添加 MobPush 产品之后,进行iOS设置,上传证书,Bundle id等信息,如下图:

然后 切换海外版 在 点击同步国内配置到海外版 ,将信息同步到海外,如下

最后点击 创建推送 进行推送

注意:选择的推送环境需要和代码里设置的推送环境,安装的包的环境,这3处的环境必须要一致。
使用API接口进行推送
接口:http://abroad.api.push.mob.com/v3/push/createPush
具体的传参可以参考国内接口传参:参考这里
可以使用Postman测试,例如:


注: API接口里的 iosProduction 参数是设置推送环境参数,与客户端代码设置的推送环境以及安装的包的环境一致。另推送可以选择在开发者后台进行推送或者是调用API接口进行推送,任选其一即可。
相关文章:
MobPush iOS端海外推送最佳实现
推送注册 在AppDelegate里进行SDK初始化(也可以在Info.plist文件中进行AppKey,AppSecret的配置)并对通知功能进行注册以及设置推送的环境和切换海外服务器等,参考如下步骤代码: <span style"background-colo…...
商家团购app微信小程序模板
手机微信商家团购小程序页面,商家订餐外卖小程序前端模板下载。包含:团购主页、购物车订餐页面、我的订单、个人主页等。 商家团购app微信小程序模板...
探索AudioLM:音频生成技术的未来
目录 2. AudioLM的基础理论 2.1. 音频生成的基本概念 2.2. 语言模型在音频生成中的应用 2.3. 深度学习在音频生成中的作用 3. AudioLM的架构与实现 3.1. AudioLM的基本架构 3.1.1 编码器 3.1.2 解码器 3.1.3 生成模块 3.2. 训练过程 3.2.1 数据预处理 3.2.2 损失函…...
计算机视觉:深入了解图像分类、目标检测和图像分割的核心技术
计算机视觉是什么? 计算机视觉是一门致力于让计算机“看懂”图像和视频的技术,它旨在通过模拟人类视觉系统来理解和解释数字化视觉信息。这一领域涉及图像的获取、处理、分析和理解,最终用于从视觉数据中提取有用信息并做出决策。计算机视觉的…...
Django 安装 Zinnia 后出现故障
在Django中安装和配置Zinnia时遇到故障可能有多种原因,通常包括版本兼容性、依赖关系或配置问题。这里提供一些常见的解决方法和调试步骤,帮助大家解决问题。 首先,确保您安装的Zinnia版本与Django版本兼容。查看Zinnia的官方文档或GitHub页…...
.net 8 集成 MinIO文件存储服务,实现bucket管理,以及文件对象的基本操作
一、准备工作 1、本地部署MinIO服务 2、创建MinIO的Access Key 3、创建.net 项目 4、下载MinIO sdk 5、相关文档 二、编写MinIO工具类 三、管理存储桶 1、MyBucket类 (1)判断bucket是否存在 (2)新建bucket (…...
Three.js机器人与星系动态场景:实现3D渲染与交互式控制
内容摘要:使用Three.js库构建了一个交互式的3D场景。组件中创建了一个机器人模型,包括头部、眼睛、触角、身体和四肢,以及两个相同的机器人实例以实现动态效果。场景中还加入了粒子效果,模拟星系环境,增强了视觉效果。…...
Android系统集成和使用FFmpeg
文章目录 前言FFmpeg源码下载交叉编译NDK下载x264编译源码下载编译 FFmpeg编译脚本 AOSP继承FFmpeg 前言 原生AOSP中并未继承FFmpeg,所以要想在android上使用,需要自己编译集成。 FFmpeg源码下载 git clone https://git.ffmpeg.org/ffmpeg.git目前最新…...
水果商城外卖微信小程序模板
手机微信水果外卖,水果电商,水果商城网页小程序模板。包含:主页、列表页、详情页、购物车、个人中心。 水果商城外卖小程序模板...
【前端】面试八股文——输入URL到页面展示的过程
【前端】面试八股文——输入URL到页面展示的过程 1. DNS解析 当用户在浏览器中输入URL并按下回车时,首先需要将域名转换为IP地址,这个过程称为DNS(域名系统)解析。具体步骤如下: 浏览器缓存:浏览器首先检…...
什么是应用安全态势管理 (ASPM):综合指南
软件开发在不断发展,应用程序安全也必须随之发展。 传统的应用程序安全解决方案无法跟上当今开发人员的工作方式或攻击者的工作方式。 我们需要一种新的应用程序安全方法,而ASPM在该方法中发挥着关键作用。 什么是 ASPM? 应用程序安全…...
认识100种电路之耦合电路
在电子电路的世界中,耦合电路宛如一座精巧的桥梁,连接着各个功能模块,发挥着至关重要的作用。 【为什么电路需要耦合】 在复杂的电子系统中,不同的电路模块往往需要协同工作,以实现特定的功能。然而,这些模…...
c++【入门】三数的乘积
限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 你已经学了一些程序的输入,这次,你需要在没有老师的任何帮助下完成这次的任务啦。这次任务,我们要读入三个整数,并且计算它们的乘积。 这是一个非常简单的题目,意在…...
C++实现简化版Qt的QObject(4):增加简单实用的事件机制
前面的文章已经实现了许多QObject的功能了: C实现一个简单的Qt信号槽机制 C实现简化版Qt信号槽机制(2):增加内存安全保障 C实现简化版Qt的QObject(3):增加父子关系、属性系统 但是,…...
JTracker IDEA 中最好的 MyBatis 日志格式化插件
前言 如果你使用 MyBatis ORM 框架,那么你应该用过 MyBatis Log 格式化插件,它可以让我们的程序输出的日志更人性化。 但是有一个问题,通常我们只能看到格式化后的效果,没办法知道这个 SQL 是谁执行的以及调用的链路。 如下图所…...
物联网工业级网关解决方案 工业4G路由器助力智慧生活
随着科技的飞速发展,无线通信技术正逐步改变我们的工作与生活。在这个智能互联的时代,一款高性能、稳定可靠的工业4G路由器成为了众多行业不可或缺的装备。工业4G路由器以其卓越的性能和多样化的功能,助力我们步入智慧新纪元。 一、快速转化&…...
IoTDB Committer+Ratis PMC Member:“两全其美”的秘诀是?
IoTDB & Ratis 双向深耕! 还记得一年前我们采访过拥有 IoTDB 核心研发 Ratis Committer “双重身份”的社区成员宋子阳吗?(点此阅读) 我们高兴地发现,一年后,他在两个项目都更进一步,已成为…...
【链表】- 移除链表元素
1. 对应力扣题目连接 移除链表元素 2. 实现案例代码 public class RemoveLinkedListElements {public static void main(String[] args) {// 示例 1ListNode head1 new ListNode(1, new ListNode(2, new ListNode(6, new ListNode(3, new ListNode(4, new ListNode(5, new …...
云原生之使用Docker部署RabbitMQ消息中间件
云原生之使用Docker部署RabbitMQ消息中间件 一、RabbitMQ介绍1.1 RabbitMQ简介1.2 RabbitMQ特点1.3 RabbitMQ使用场景 二、检查Docker环境2.1 检查Docker版本2.2 检查操作系统版本2.3 检查Docker状态 三、下载RabbitMQ镜像四、部署RabbitMQ服务4.1创建挂载目录4.2 运行RabbitMQ…...
opengl箱子的显示
VS环境配置: /JMC /ifcOutput "Debug\" /GS /analyze- /W3 /Zc:wchar_t /I"D:\Template\glfwtemplate\glfwtemplate\assimp" /I"D:\Template\glfwtemplate\glfwtemplate\glm" /I"D:\Template\glfwtemplate\glfwtemplate\LearnOp…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
