美文网首页iOS劝退指南
iOS利用极光自定义消息推送app前台页面接收,无socket。

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

作者: MccReeee | 来源:发表于2017-02-04 12:35 被阅读101次

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

相关文章

网友评论

  • 吴德馨:这个消息只有程序在前台的时候能接收到吧?锁屏、程序挂起都无法收到哦?
    MccReeee:锁屏,程序挂起 就走正常通知就好了呀
    用这种办法是变相的代替需要websocket的场景而已

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

本文链接:https://www.haomeiwen.com/subject/dmvjittx.html