項(xiàng)目中有個(gè)場景失仁,app傳一圖片給服務(wù)器购对,服務(wù)器對(duì)圖片運(yùn)算后返回一個(gè)結(jié)果給app,可是app并不知道服務(wù)器要運(yùn)算多久陶因,可能1秒可能5秒可能20秒骡苞,服務(wù)器也不支持socket通信。
當(dāng)時(shí)想到了兩個(gè)方案楷扬。
app每隔幾秒(比如2秒)就請(qǐng)求一次服務(wù)器接口解幽,30秒內(nèi)如果拿到想要的結(jié)果就停止請(qǐng)求,超過30秒也停止請(qǐng)求烘苹。但是覺得比較麻煩和不靠譜躲株。
本身app就集成了極光推送,于是就有了通過發(fā)送自定義消息的方案镣衡。
即app上傳完圖片后就彈hud等待霜定,服務(wù)器處理完后那邊調(diào)用一下極光的接口,然后就給app發(fā)送自定義消息廊鸥。
以下是傳圖片的類的部分代碼
主要是注冊通知
- (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);
//自定義消息就存在這個(gè)userInfo中
//這里就寫收到自定義消息后的處理代碼
}
記得移除通知
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
//移除通知
[[NSNotificationCenter defaultCenter] removeObserver:self name:kJPFNetworkDidReceiveMessageNotification object:nil];
}
這是測試結(jié)果
在極光推送的網(wǎng)頁上可以推送測試消息
我這里是靠registrationID來指定推送設(shè)備的望浩,registrationID在集成極光推送后會(huì)有極光SDK自動(dòng)生成
Paste_Image.png
可選字段就可以用來傳消息內(nèi)容了
Paste_Image.png
在app調(diào)試時(shí)收到的消息結(jié)構(gòu)就是這樣
Paste_Image.png
Paste_Image.png