遠(yuǎn)程推送時(shí) , 應(yīng)用可能處于下列三種狀態(tài):
成都創(chuàng)新互聯(lián)公司不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對營銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時(shí),也能得到同行業(yè)的專業(yè)認(rèn)可,能夠?yàn)樾袠I(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級,滿足企業(yè)一站式成都全網(wǎng)營銷推廣需求,讓再小的品牌網(wǎng)站建設(shè)也能產(chǎn)生價(jià)值!
(1) . 應(yīng)用開啟時(shí) , 應(yīng)用在前臺(tái)
(2) . 應(yīng)用開啟時(shí) , 應(yīng)用在后臺(tái)
(3) . 應(yīng)用未啟動(dòng)(應(yīng)用被殺死)
從蘋果APNS服務(wù)器遠(yuǎn)程推送時(shí):
1 . 如果應(yīng)用處于 (1) 狀態(tài) , 則不會(huì)發(fā)出聲音 , 會(huì)直接調(diào)用appDelegate的代理方法didReceiveRemoteNotification,此時(shí)如果想收到類似系統(tǒng)的彈窗提示,則需要自定義彈窗,提示音,振動(dòng)(彈窗可以參考 : ForeNotification (本地下載))
AudioServicesPlaySystemSound(1007);//系統(tǒng)提示音 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);//震動(dòng)
2 . 如果應(yīng)用處于 (2) 狀態(tài) , 則會(huì)發(fā)出提示音, 點(diǎn)擊推送消息 , 則會(huì)調(diào)用appDelegate的代理方法didReceiveRemoteNotification
3 . 如果應(yīng)用處于 (3) 狀態(tài),則會(huì)發(fā)出提示音 , 點(diǎn)擊推送消息 , 則會(huì)開啟應(yīng)用 , 在下面這個(gè)方法中會(huì)帶上launchOptions這個(gè)參數(shù),如果實(shí)現(xiàn)了application:didReceiveRemoteNotification:fetchCompletionHandler:
這個(gè)方法,則會(huì)調(diào)用這個(gè)方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]; if (remoteNotification) { //自定義的BOOL值,用來標(biāo)記是從通知啟動(dòng)的應(yīng)用 self.isLaunchedByNotification = YES; }else{ } [self checkIsLaunchedByNotification]; return YES; }
收到遠(yuǎn)程推送后 , 可以跳轉(zhuǎn)到消息界面 :
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { NSDictionary *aps = [userInfo valueForKey:@"aps"]; NSDictionary *alert = [aps valueForKey:@"alert"]; NSString * body = alert[@"body"]; if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) { //處于前臺(tái)時(shí) [EBForeNotification handleRemoteNotification:@{@"aps":@{@"alert":[NSString stringWithFormat:@"%@",body]}} soundID:1312]; }else{ //處于后臺(tái)時(shí) [self gotoMessageVC]; } } #pragma mark - 檢測是否從通知欄啟動(dòng)得應(yīng)用 - (void)checkIsLaunchedByNotification{ if (self.isLaunchedByNotification) { [self gotoMessageVC]; } } #pragma mark - 點(diǎn)擊了通知菜單(當(dāng)應(yīng)用在前臺(tái)時(shí),收到推送,點(diǎn)擊了自定義的彈窗,調(diào)用的方法) - (void)clickBannerView:(NSNotification *)notification{ NSDictionary * dict = notification.object; [self gotoMessageVC]; } #pragma mark - 跳轉(zhuǎn)到消息界面(點(diǎn)擊通知菜單/點(diǎn)擊通知欄啟動(dòng)應(yīng)用時(shí)) - (void)gotoMessageVC{ if([self.window.rootViewController isEqual:self.tabBarController]){ if([self.tabBarController.selectedViewController isKindOfClass:[UINavigationController class]]){ UINavigationController * nav = self.tabBarController.selectedViewController; if (![nav.topViewController isKindOfClass:[MessagesViewController class]]) { MessagesViewController *messageVC = [[MessagesViewController alloc] init]; messageVC.hidesBottomBarWhenPushed = YES; [nav.visibleViewController.navigationController pushViewController:messageVC animated:YES]; } } } }
靜默推送
應(yīng)用想收到靜默推送需要滿足的條件:
1.應(yīng)用在前臺(tái)/后臺(tái) (應(yīng)用被殺死就收不到了)
2.應(yīng)用實(shí)現(xiàn)了
application:didReceiveRemoteNotification:fetchCompletionHandler:
3.如果僅僅實(shí)現(xiàn)了application:didReceiveRemoteNotification:,
沒有實(shí)現(xiàn)application:didReceiveRemoteNotification:fetchCompletionHandler:,
應(yīng)用只有在前臺(tái)時(shí)才能收到靜默推送 , 應(yīng)用在后臺(tái)時(shí),收不到靜默推送
自定義消息推送
介紹: 極光推送提供了自定義消息推送 , 這種推送只有當(dāng)應(yīng)用在 前臺(tái) 時(shí)才能收到 ; 當(dāng)應(yīng)用在 后臺(tái)/被殺死 時(shí),這時(shí)候的自定義消息被保存下來,直到應(yīng)用處于前臺(tái)時(shí),應(yīng)用才會(huì)收到.
使用場景: 當(dāng)需要在前臺(tái)處理大量數(shù)據(jù)的時(shí)候,可以使用自定義消息,例如應(yīng)用某個(gè)模塊需要更新了,這時(shí)候后臺(tái)發(fā)送個(gè)自定義消息,等到應(yīng)用啟動(dòng)了就可以自動(dòng)去下載
// 使用自定義消息,需要在通知中心注冊 // 注冊通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveJPushCustomMessage:) name:kJPFNetworkDidReceiveMessageNotification object:nil]; // 接收到JPush的自定義消息推送 - (void)receiveJPushCustomMessage:(NSNotification *)notification { NSDictionary *userInfo = [notification userInfo]; NSString *title = [userInfo valueForKey:@"title"]; NSString *content = [userInfo valueForKey:@"content"]; NSDictionary *extra = [userInfo valueForKey:@"extras"]; }
總結(jié):
1.應(yīng)用在后臺(tái)/前臺(tái)/被殺死,都可以收到普通的遠(yuǎn)程推送
2.應(yīng)用被殺死時(shí),可以通過Background Fetch短時(shí)間喚醒應(yīng)用
3.應(yīng)用在后臺(tái)/前臺(tái)時(shí),可以通過靜默推送,修改一些數(shù)據(jù)
4.自定義消息應(yīng)用在
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對創(chuàng)新互聯(lián)的支持。
網(wǎng)站標(biāo)題:iOS學(xué)習(xí)筆記之遠(yuǎn)程推送、靜默推送與自定義消息推送
標(biāo)題網(wǎng)址:http://muchs.cn/article0/ghecoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站建設(shè)、軟件開發(fā)、App設(shè)計(jì)、、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)