iOS劝退指南

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

2017-02-04  本文已影响101人  MccReeee

项目中有个场景,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自动生成

Paste_Image.png

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


Paste_Image.png

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

Paste_Image.png Paste_Image.png
上一篇 下一篇

猜你喜欢

热点阅读