關(guān)于iOS Push Notification的響應(yīng)問(wèn)題 (2013-08-24 15:46:07)轉(zhuǎn)載▼
標(biāo)簽: notifcation 推送 消息 it 分類: iOS開(kāi)發(fā)
最近在做推送消息的時(shí)候遇到一個(gè)問(wèn)題胁塞,就是當(dāng)程序在后臺(tái)運(yùn)行時(shí)棉磨,這時(shí)候收到推送消息后,點(diǎn)擊應(yīng)用圖標(biāo)后無(wú)法拿到這個(gè)消息,至今還未解決蕾总,如有能夠解決辦法的朋友杭跪,忘不吝賜教醋界。
簡(jiǎn)單總結(jié)一下推送消息的相應(yīng)情況
1. 當(dāng)程序處于關(guān)閉狀態(tài)收到推送消息時(shí)湖蜕,點(diǎn)擊圖標(biāo)會(huì)調(diào)用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 這個(gè)方法,那么消息給通過(guò)launchOptions這個(gè)參數(shù)獲取到叨吮。
2. 當(dāng)程序處于前臺(tái)工作時(shí)辆布,這時(shí)候若收到消息推送,會(huì)調(diào)用- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo這個(gè)方法
3. 當(dāng)程序處于后臺(tái)運(yùn)行時(shí)茶鉴,這時(shí)候若收到消息推送锋玲,如果點(diǎn)擊消息或者點(diǎn)擊消息圖標(biāo)時(shí),也會(huì)調(diào)用- (void)application:(UIApplication*)application
didReceiveRemoteNotification:(NSDictionary *)userInfo這個(gè)方法
4. 當(dāng)程序處于后臺(tái)運(yùn)行時(shí)涵叮,這時(shí)候若收到消息推送惭蹂,如果點(diǎn)擊桌面應(yīng)用圖標(biāo),則不會(huì)調(diào)用didFinishLaunchingWithOptions和didReceiveRemoteNotification方法围肥,所以無(wú)法獲取消息
下面是針對(duì)以上4種情況做響應(yīng)處理:
第一種情況:
if (launchOptions) {
NSDictionary* pushNotificationKey = [launchOptionsobjectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (pushNotificationKey) {
//這里定義自己的處理方式
}
}
第二剿干、三種情況:
if (application.applicationState == UIApplicationStateActive) {
//第二種情況
if ([[userInfo objectForKey:@"aps"] objectForKey:@"alert"]!=NULL) {
[WLHelper showAlert:@"推送消息" msg:[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]];
}
} else {
//第三種情況
//這里定義自己的處理方式
}
第四種情況: 目前還不確定如何弄蜂怎,忘各路朋友幫忙解答穆刻,不勝感激