iOS調試通過UILocalNotification或RemoteNotification啟動的app,uilocalnotification

來源:互聯網
上載者:User

iOS調試通過UILocalNotification或RemoteNotification啟動的app,uilocalnotification

相信很多同學都為調試蘋果的通知煩惱過,特別是通過通知啟動app這個功能,簡直讓人慾哭無淚!!!然而我們都遇到的問題,蘋果怎麼可能沒有想到,原來早就有了官方的解決辦法,只是我們不知道而已。。。這次又是從stackOverFlow上找到了答案,必須記錄一下!!! iOS10以後,通知架構被完全重構了,可以參考喵神的部落格:https://onevcat.com/2016/08/notification/這裡因為要相容iOS8,所以先說說iOS10之前的處理方法 UILocalNotification和APNS怎麼發就不說了,首先先說一下蘋果的通知響應;只要使用者開啟了通知許可權,那麼app就可以收到通知,收到的情境分兩種:一種是app還沒有啟動,那這時候系統會根據通知的使用權限設定有彈窗,聲音,標記等出現,這時候點擊彈窗,app就會啟動,並且啟動的時候,在方法- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions裡的launchOptions字典中,就會包含通知的內容,可以通過UIApplicationLaunchOptionsLocalNotificationKey或者UIApplicationLaunchOptionsRemoteNotificationKey來擷取其中的內容;其中,通過UIApplicationLaunchOptionsLocalNotificationKey取到的是一個UILocalNotification,而通過UIApplicationLaunchOptionsRemoteNotificationKey取到的是remoteNotification的userInfo;需要在這裡進行處理注意,這時候app還沒有啟動完成,所以跳轉頁面什麼的是做不了的,倒是可以根據這個來設定rootViewController;或者在這裡設定一個標記,在rootViewController didAppear之後執行注意,這個情境iOS10也是一樣的,擷取到的資料類型也一樣! 另一種是app已經啟動,這時候又要區分app是否在前台如果在前台,那系統會直接調用- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;或者
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
兩個方法如果不在前台,那系統還是會根據使用權限設定出現彈窗,聲音,標記等,這時候點擊標記,才會調用上面的這兩個方法注意:這個情境iOS10以後又了新的方法,處理方法跟這兩個不一樣,請參考喵神部落格!  好,切入正題我們在調試的時候,肯定是連著手機斷點調試最方便,但是對於通過通知啟動的這種情境,怎麼調試???有問到過可以通過xcode的device查看手機log來看,但這種也沒有直接斷點來的方便呐!問題就是:可以在啟動之前就直接斷點嗎???答案是:可以!!!這個東西既然是蘋果設計的,蘋果當然就想到了這個問題,也給出瞭解決方案:在xcode的工具條上選擇 product—Scheme—edit scheme 到編輯scheme介面左側選擇選擇Run,右側選擇info,然後在下面的launch選項上選擇:Wait for executable to be launched ;然後close,跟原來一樣run 就可以了這時候你會發現,app並沒有啟動,而是“卡”在了那裡,如果你在didLaunch方法裡打個斷點,然後點擊通知啟動app,就能直接斷點到didLaunch方法裡了~~然後想怎麼調試都隨你了~~大功告成~~可以參考:http://stackoverflow.com/questions/1239000/debugging-app-when-launched-by-push-notification

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.