第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過推送通知檢測應(yīng)用程序是否已啟動/打開

通過推送通知檢測應(yīng)用程序是否已啟動/打開

iOS
森林海 2019-10-15 14:44:42
是否可以通過推送通知了解應(yīng)用程序是否已啟動/打開?我猜發(fā)射事件可以在這里找到:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    if (launchOptions != nil) {         // Launched from push notification         NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];    }}但是,當(dāng)應(yīng)用程序在后臺運(yùn)行時,如何從推送通知中檢測到它已打開?
查看完整描述

3 回答

?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個贊

請參閱以下代碼:


- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

{

    if ( application.applicationState == UIApplicationStateInactive || application.applicationState == UIApplicationStateBackground  )

    {

         //opened from a push notification when the app was on background

    }

}

如同


-(void)application:(UIApplication *)application didReceiveLocalNotification (UILocalNotification *)notification


查看完整回答
反對 回復(fù) 2019-10-15
?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個贊

晚了,但也許有用


當(dāng)應(yīng)用未運(yùn)行時


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions


叫做 ..


您需要檢查推送通知的地方


NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

if (notification) {

    NSLog(@"app recieved notification from remote%@",notification);

    [self application:application didReceiveRemoteNotification:notification];

} else {

    NSLog(@"app did not recieve notification");

}


查看完整回答
反對 回復(fù) 2019-10-15
?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個贊

應(yīng)用啟動后,我們無法正確更新視圖。這里有復(fù)雜的生命周期方法序列,令人困惑。


生命周期方法


我們對iOS 10的測試揭示了針對各種情況的以下生命周期方法序列:


DELEGATE METHODS CALLED WHEN OPENING APP  


Opening app when system killed or user killed  

    didFinishLaunchingWithOptions  

    applicationDidBecomeActive    


Opening app when backgrounded  

    applicationWillEnterForeground  

    applicationDidBecomeActive  


DELEGATE METHODS WHEN OPENING PUSH


Opening push when system killed

    [receiving push causes didFinishLaunchingWithOptions (with options) and didReceiveRemoteNotification:background]

    applicationWillEnterForeground

    didReceiveRemoteNotification:inactive

    applicationDidBecomeActive


Opening push when user killed

    didFinishLaunchingWithOptions (with options)

    didReceiveRemoteNotification:inactive [only completionHandler version]

    applicationDidBecomeActive


Opening push when backgrounded

    [receiving push causes didReceiveRemoteNotification:background]

    applicationWillEnterForeground

    didReceiveRemoteNotification:inactive

    applicationDidBecomeActive

問題


好的,所以現(xiàn)在我們需要:


確定用戶是否通過推送打開應(yīng)用

根據(jù)推送狀態(tài)更新視圖

清除狀態(tài),以免隨后的打開不會使用戶回到同一位置。

棘手的一點(diǎn)是,必須在應(yīng)用程序?qū)嶋H處于活動狀態(tài)時更新視圖,這在所有情況下都是相同的生命周期方法。


我們的解決方案示意圖


以下是我們解決方案的主要組成部分:


將notificationUserInfo實(shí)例變量存儲在AppDelegate上。

設(shè)置notificationUserInfo = nil在這兩個applicationWillEnterForeground和didFinishLaunchingWithOptions。

設(shè)置notificationUserInfo = userInfo在didReceiveRemoteNotification:inactive

從applicationDidBecomeActive總是調(diào)用自定義方法openViewFromNotification并傳遞self.notificationUserInfo。如果self.notificationUserInfo為nil,則提早返回,否則根據(jù)中的通知狀態(tài)打開視圖self.notificationUserInfo。

說明


當(dāng)通過推送打開didFinishLaunchingWithOptions或applicationWillEnterForeground總是在緊接之前調(diào)用時didReceiveRemoteNotification:inactive,因此我們首先在這些方法中重置notificationUserInfo,以確保沒有過時的狀態(tài)。然后,如果didReceiveRemoteNotification:inactive調(diào)用了,我們就知道我們要從推送中打開,因此我們將self.notificationUserInfo其設(shè)置為拾取,然后applicationDidBecomeActive將用戶轉(zhuǎn)發(fā)到正確的視圖。


最后一種情況是用戶是否在應(yīng)用程序切換器中打開了該應(yīng)用程序(即,在應(yīng)用程序處于前臺時雙擊主屏幕按鈕),然后接收到推送通知。在這種情況下,僅會didReceiveRemoteNotification:inactive被調(diào)用,而WillEnterForeground和didFinishLaunching都不會被調(diào)用,因此您需要一些特殊的狀態(tài)來處理這種情況。


希望這可以幫助。


查看完整回答
反對 回復(fù) 2019-10-15
  • 3 回答
  • 0 關(guān)注
  • 678 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號