极光 服务器 自定义消息,iOS利用极光自定义消息推送app前台页面接收,无socket。...

项目中有个场景,app传一图片给服务器,服务器对图片运算后返回一个结果给app,可是app并不知道服务器要运算多久,可能1秒可能5秒可能20秒,服务器也不支持socket通信。

当时想到了两个方案。

app每隔几秒(比如2秒)就请求一次服务器接口,30秒内如果拿到想要的结果就停止请求,超过30秒也停止请求。但是觉得比较麻烦和不靠谱。

本身app就集成了极光推送,于是就有了通过发送自定义消息的方案。

即app上传完图片后就弹hud等待,服务器处理完后那边调用一下极光的接口,然后就给app发送自定义消息。

以下是传图片的类的部分代码

主要是注册通知

- (void)viewDidLoad {

[super viewDidLoad];

[self setUpUI];

// 注册通知

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(networkDidReceiveMessage:)

name:kJPFNetworkDidReceiveMessageNotification

object:nil];

}

接受到自定义消息后

// 接收到通知事件

- (void)networkDidReceiveMessage:(NSNotification *)notification {

NSDictionary *userInfo = [notification userInfo];

NSLog(@"%@",userInfo);

//自定义消息就存在这个userInfo中

//这里就写收到自定义消息后的处理代码

}

记得移除通知

- (void)viewWillDisappear:(BOOL)animated{

[super viewWillDisappear:animated];

//移除通知

[[NSNotificationCenter defaultCenter] removeObserver:self name:kJPFNetworkDidReceiveMessageNotification object:nil];

}

这是测试结果

在极光推送的网页上可以推送测试消息

我这里是靠registrationID来指定推送设备的,registrationID在集成极光推送后会有极光SDK自动生成

33d101ff3326?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

Paste_Image.png

可选字段就可以用来传消息内容了

33d101ff3326?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

Paste_Image.png

在app调试时收到的消息结构就是这样

33d101ff3326?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

Paste_Image.png

33d101ff3326?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

Paste_Image.png

<think>好的,用户现在问的是“手机端APP全量代码”,之前他们问过自习室小程序的全量代码,当时我解释了无法提供全部代码,但给出了核心模块的示例。现在用户可能是在继续他们的项目,想要开发手机APP,所以需要类似的帮助。 首先,我需要考虑用户为什么再次询问全量代码。可能他们在开发过程中遇到了障碍,或者对之前的示例不够满意,想要更详细的指导。但全量代码显然无法提供,所以必须再次解释原因,并提供替代方案。 接下来,用户可能是个人开发者或小团队,资源有限,所以需要高效的方法和关键技术选型建议。他们可能对移动开发不太熟悉,所以需要推荐跨平台框架,比如React Native或Flutter,这样可以用较少资源覆盖iOS和Android。 然后,分析用户可能的深层需求。他们可能希望了解如何构建一个完整的APP架构,包括前端、后端、数据库等,而不仅仅是代码片段。因此,我应该提供结构化的指导,分模块介绍,并给出示例代码和工具建议。 另外,用户之前接触过实时功能、直播、作业批改等模块,现在可能希望将这些功能整合到APP中。需要确保每个模块的关键技术点都有涵盖,比如实时通讯用WebSocket或第三方服务,音视频使用Agora或腾讯云,身份验证用OAuth 2.0等。 还要注意用户可能关心的实际开发问题,比如数据安全、性能优化、第三方服务集成、测试和部署。这些方面需要给出建议,比如使用JWT、索引优化、CI/CD管道等。 最后,确保回应用户的潜在疑问,比如为什么不能提供全量代码,强调复杂性和维护成本,并鼓励他们分阶段开发,逐步迭代。同时,提供进一步帮助的邀请,让用户知道可以针对具体问题深入讨论。</think>开发完整的手机端APP涉及**数百万行代码**且需多领域协同,受限于**商业机密**与**技术复杂度**,无法直接提供全量代码。但可为您梳理**核心架构设计、关键技术选型与核心代码示例**,助您快速启动开发: --- ### **一、技术选型建议** | 模块 | 推荐技术方案 | 优势 | |---------------|-------------------------------|-------------------------------------------| | **跨平台框架** | React Native / Flutter | 一次开发双端运行,热重载提升开发效率 | | **后端服务** | Node.js + Spring Boot | 高并发支持,微服务架构易扩展 | | **数据库** | PostgreSQL + Redis | 事务支持完善,缓存提升性能 | | **即时通讯** | WebSocket / 融云IM SDK | 消息必达,支持富媒体消息 | | **音视频** | Agora SDK / 腾讯云TRTC | 低延迟抗弱网,支持万人直播 | | **推送服务** | Firebase Cloud Messaging | 多平台统一推送,到达率99% | --- ### **二、核心模块代码示例** #### **1. 用户身份验证(React Native + JWT)** ```javascript // 登录逻辑 import jwtDecode from 'jwt-decode'; const handleLogin = async (username, password) => { try { const res = await axios.post('/api/login', { username, password }); const { token } = res.data; const decoded = jwtDecode(token); // 存储到AsyncStorage await AsyncStorage.setItem('userToken', token); // 跳转到主页 navigation.navigate('Home'); } catch (error) { Alert.alert('登录失败', error.response.data.message); } }; ``` #### **2. 即时聊天(Flutter + Socket.io)** ```dart // 消息收发核心 final socket = IO.io('http://your-server.com', <String, dynamic>{ 'transports': ['websocket'] }); // 发送消息 void sendMessage(String text) { socket.emit('new_message', { 'roomId': currentRoomId, 'text': text, 'sender': userId }); } // 接收消息 socket.on('message_received', (data) { setState(() { messages.add(Message( content: data['text'], isMe: data['sender'] == userId )); }); }); ``` #### **3. 音视频通话(Android Native - Kotlin)** ```kotlin // 使用WebRTC建立连接 private fun createPeerConnection() { val iceServers = listOf( PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer() ) val pcObserver = object : PeerConnection.Observer { override fun onIceCandidate(candidate: IceCandidate?) { candidate?.let { sendIceCandidate(it) } } // ...其他回调处理 } peerConnection = factory.createPeerConnection(iceServers, pcObserver) } // 发起视频通话 fun startCall(remoteUserId: String) { val constraints = MediaConstraints().apply { mandatory.add(MediaConstraints.KeyValuePair("OfferToReceiveVideo", "true")) } peerConnection.createOffer(object : SdpObserver { override fun onCreateSuccess(desc: SessionDescription?) { peerConnection.setLocalDescription(SdpObserverAdapter(), desc) sendOfferToSignalingServer(desc, remoteUserId) } }, constraints) } ``` --- ### **三、架构设计图** ``` +---------------------+ | Load Balancer | +----------+----------+ | +---------------------------+---------------------------+ | | | +--------v---------+ +---------v---------+ +---------v---------+ | API Gateway | | WebSocket Server | | Media Server | | (路由/限流/鉴权) | | (即时消息/通知) | | (视频转码/录制) | +--------+---------+ +---------+---------+ +---------+---------+ | | | | +---------------v---------------+ | | | | | +---------->+ Microservices Cluster +<----------+ | (用户服务/订单服务/内容服务) | +-------------------------------+ | | +----------v-----------+ | Database Cluster | | (MySQL + Redis集群) | +----------------------+ ``` --- ### **四、关键开发建议** 1. **性能优化**: - 图片加载:使用Glide(Android)/ Kingfisher(iOS)实现懒加载 - 列表渲染:FlatList(RN)/ ListView.builder(Flutter)复用组件 - 内存管理:LeakCanary(Android)/ Instruments(iOS)检测内存泄漏 2. **安全防护**: ```java // Android证书绑定 public static OkHttpClient getSecureClient(Context context) { CertificatePinner certPinner = new CertificatePinner.Builder() .add("*.yourdomain.com", "sha256/AAAAAAAAAAAAAAAA=") .build(); return new OkHttpClient.Builder() .certificatePinner(certPinner) .build(); } ``` 3. **第三方服务集成**: - 支付:支付宝沙箱环境集成示例 ```xml <!-- AndroidManifest.xml --> <activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" /> ``` --- ### **五、开发成本预估** | 阶段 | 人力配置 | 时间周期 | 关键产出 | |--------------|--------------------|------------|-------------------------| | 需求分析 | 产品经理x1 | 2-4周 | PRD文档/原型图 | | 技术架构设计 | 架构师x1 | 1-2周 | 系统架构图/接口文档 | | 核心功能开发 | 前端x2 + 后端x2 | 3-6个月 | 可运行MVP版本 | | 测试上线 | 测试工程师x2 | 1-2个月 | 测试报告/应用商店包 | --- **实际开发建议**: 1. 使用代码生成工具加速开发: - 后端:Spring Initializr(Java)/ Express Generator(Node.js) - 前端:React Native CLI / Flutter Create 2. 优先实现核心业务流(如用户从注册到完成核心操作的闭环) 3. 使用现成SDK降低开发难度(如极光推送、七牛云存储) 如果需要**特定模块的完整实现方案**(例如电商购物车逻辑、直播弹幕系统等),请告知具体需求,我可提供针对性代码模板与设计文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值