คำถามติดแท็ก uiapplicationdelegate

7
แอปพลิเคชัน WillEnterForeground vs. applicationDidBecomeActive, แอปพลิเคชัน WillResignActive กับ applicationDidEnterBackground
ผู้รับมอบสิทธิ์ที่เหมาะสมที่จะใช้งานเมื่อแอปพลิเคชันตื่นขึ้นมาจากพื้นหลังและคุณต้องการให้แอปพลิเคชันเตรียมใช้งานอยู่ applicationWillEnterForeground vs applicationDidBecomeActive - ความแตกต่างคืออะไร ผู้รับมอบสิทธิ์ที่เหมาะสมที่จะใช้งานเมื่อแอปพลิเคชันกำลังจะเข้าสู่โหมดสลีปและคุณต้องการจัดเตรียมแอปพลิเคชันเพื่อล้างข้อมูลและบันทึกข้อมูล applicationWillResignActive vs. applicationDidEnterBackground - ความแตกต่างคืออะไร นอกจากนี้ฉันยังสังเกตเห็นว่า applicationWillResignActive ได้รับการโทรเมื่อมี SMS เข้ามาหรือโทรเข้ามา แต่ผู้ใช้เลือกที่จะคลิกตกลงและดำเนินการต่อ ฉันไม่ต้องการให้แอปดำเนินการใด ๆ ในกรณีเหล่านี้ ฉันแค่ต้องการให้มันทำงานต่อไปโดยไม่ต้องล้างข้อมูลกลางใด ๆ เนื่องจากผู้ใช้ไม่ได้ออกจากแอป ดังนั้นฉันคิดว่ามันเหมาะสมกว่าที่จะทำการล้างข้อมูลในแอปพลิเคชัน DidEnterBackground ฉันขอขอบคุณที่คุณป้อนข้อมูลเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดเพื่อเลือกผู้ได้รับมอบหมายที่จะตื่นขึ้นและเข้านอนรวมถึงการพิจารณาเหตุการณ์ที่ถูกขัดจังหวะด้วย SMS / การโทร ขอบคุณ


7
การจัดการแอพพลิเคชั่นidBecomeActive -“ ตัวควบคุมมุมมองจะตอบสนองอย่างไรกับแอปที่กำลังใช้งานอยู่”
ฉันมีUIApplicationDelegateโปรโตคอลในคลาส AppDelegate.m หลักของฉันพร้อมด้วยapplicationDidBecomeActiveวิธีการที่กำหนด ฉันต้องการเรียกเมธอดเมื่อแอปพลิเคชันส่งคืนจากพื้นหลัง แต่เมธอดนั้นอยู่ในตัวควบคุมมุมมองอื่น ฉันจะตรวจสอบว่าตัวควบคุมมุมมองใดที่กำลังแสดงอยู่ในapplicationDidBecomeActiveวิธีการแล้วโทรไปยังวิธีการภายในตัวควบคุมนั้นได้อย่างไร

26
ตรวจสอบว่าแอปเปิดตัว / เปิดจากการแจ้งเตือนแบบพุช
เป็นไปได้ไหมที่จะรู้ว่าแอปเปิดตัว / เปิดจากการแจ้งเตือนแบบพุชหรือไม่? ฉันเดาว่าจะมีกิจกรรมเปิดตัวที่นี่: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if (launchOptions != nil) { // Launched from push notification NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; } } อย่างไรก็ตามฉันจะตรวจจับได้อย่างไรว่าเปิดขึ้นมาจากการแจ้งเตือนแบบพุชเมื่อแอปอยู่ในพื้นหลัง

3
พฤติกรรมของ API ตำแหน่งที่เปลี่ยนแปลงอย่างมีนัยสำคัญเมื่อยุติ / ระงับ?
นี่คือส่วนจากเอกสารCLLocationManager ที่อธิบายลักษณะการทำงานของแอปด้วยstartMonitoringSignificantLocationChanges : หากคุณเริ่มบริการนี้และแอปพลิเคชันของคุณถูกยกเลิกในเวลาต่อมาระบบจะเปิดแอปพลิเคชันอีกครั้งโดยอัตโนมัติในพื้นหลังหากมีเหตุการณ์ใหม่เข้ามา ในกรณีเช่นนี้พจนานุกรมตัวเลือกจะส่งผ่านไปยังแอปพลิเคชัน: didFinishLaunchingWithOptions: วิธีการของตัวแทนแอปพลิเคชันของคุณมีคีย์ UIApplicationLaunchOptionsLocationKey เพื่อระบุว่าแอปพลิเคชันของคุณถูกเปิดใช้เนื่องจากเหตุการณ์ที่ตั้ง เมื่อเปิดใหม่คุณยังต้องกำหนดค่าออบเจ็กต์ตัวจัดการสถานที่และเรียกใช้เมธอดนี้เพื่อรับเหตุการณ์ตำแหน่งต่อไป เมื่อคุณเริ่มบริการตำแหน่งใหม่เหตุการณ์ปัจจุบันจะถูกส่งไปยังผู้รับมอบสิทธิ์ของคุณทันที นอกจากนี้คุณสมบัติตำแหน่งของออบเจ็กต์ตัวจัดการสถานที่ของคุณจะถูกเติมด้วยออบเจ็กต์ตำแหน่งล่าสุดก่อนที่คุณจะเริ่มบริการตำแหน่ง ดังนั้นความเข้าใจของผมคือว่าถ้ายุติแอปของคุณ (และผมถือว่าถ้าคุณไม่โทรstopMonitoringSignificantLocationChangesจากapplicationWillTerminate ) คุณจะได้รับการตื่นขึ้นมาด้วยUIApplicationLaunchOptionsLocationKeyพารามิเตอร์การประยุกต์ใช้: didFinishLaunchingWithOptions เมื่อมาถึงจุดที่คุณสร้างของคุณCLLocationManagerโทรstartMonitoringSignificantLocationChangesและทำการประมวลผลที่ตั้งของพื้นหลังของคุณสำหรับระยะเวลาที่ จำกัด ดังนั้นฉันสบายดีกับบิตนี้ ย่อหน้าก่อนหน้านี้พูดถึงสิ่งที่เกิดขึ้นเมื่อแอปถูกยุติเท่านั้นไม่ได้แนะนำสิ่งที่คุณทำเมื่อแอปพลิเคชันถูกระงับ เอกสารสำหรับdidFinishLaunchingWithOptionsกล่าวว่า: แอปพลิเคชันติดตามการอัปเดตตำแหน่งในพื้นหลังถูกล้างและตอนนี้ได้เปิดใช้งานใหม่แล้ว ในกรณีนี้พจนานุกรมจะมีคีย์ที่ระบุว่าแอปพลิเคชันถูกเปิดใช้งานอีกครั้งเนื่องจากเหตุการณ์ตำแหน่งใหม่ แนะนำว่าคุณจะรับสายนี้ก็ต่อเมื่อแอปของคุณเปิดตัว (เนื่องจากมีการเปลี่ยนสถานที่) หลังจากที่คุณถูกยกเลิก อย่างไรก็ตามย่อหน้าเกี่ยวกับบริการการเปลี่ยนแปลงที่สำคัญในคู่มือการเขียนโปรแกรมการรับรู้ตำแหน่งมีสิ่งต่อไปนี้ที่จะกล่าว: หากคุณปล่อยให้บริการนี้ทำงานและแอปพลิเคชันของคุณถูกระงับหรือยุติในภายหลังบริการจะปลุกแอปพลิเคชันของคุณโดยอัตโนมัติเมื่อมีข้อมูลตำแหน่งใหม่มาถึง เมื่อถึงเวลาปลุกแอปพลิเคชันของคุณจะถูกวางไว้ในพื้นหลังและให้เวลาเล็กน้อยในการประมวลผลข้อมูลตำแหน่ง เนื่องจากแอปพลิเคชันของคุณทำงานอยู่เบื้องหลังจึงควรทำงานน้อยที่สุดและหลีกเลี่ยงงานใด ๆ (เช่นการสืบค้นเครือข่าย) ที่อาจป้องกันไม่ให้กลับมาก่อนเวลาที่จัดสรรไว้จะหมดลง หากไม่เป็นเช่นนั้นใบสมัครของคุณอาจถูกยกเลิก สิ่งนี้แสดงว่าคุณถูกปลุกด้วยข้อมูลตำแหน่งหากแอปของคุณถูกระงับ แต่ไม่ได้ระบุว่าคุณตื่นขึ้นมาอย่างไร: ที่ไม่UIApplicationDelegateได้รับการติดต่อกลับบอกฉันว่าฉันกำลังกลับมาจากสถานะที่ถูกระงับในสภาพพื้นหลัง? ผู้จัดการสถานที่ (ซึ่งถูกทำให้แห้งเมื่อแอปถูกระงับ) เริ่มรับlocationManager: didUpdateToLocation: fromLocation callbacks หรือไม่ ฉันต้องติดตั้งโค้ดในข้อความdidUpdateToLocationของฉันซึ่งจะตรวจสอบสถานะแอปพลิเคชันและทำการประมวลผลน้อยที่สุดหากอยู่ในโหมดพื้นหลังหรือไม่ ในขั้นตอนการเขียนสิ่งนี้ฉันคิดว่าฉันอาจจะเพิ่งตอบคำถามของตัวเอง แต่มันจะดีมากถ้ามีคนที่มีความรู้มากกว่านี้มายืนยันความเข้าใจของฉัน

10
เริ่มต้นตามเงื่อนไขที่ตำแหน่งต่างๆในสตอรีบอร์ดจาก AppDelegate
ฉันมีสตอรี่บอร์ดที่ตั้งค่าด้วยการเข้าสู่ระบบที่ใช้งานได้และตัวควบคุมมุมมองหลักส่วนหลังเป็นตัวควบคุมมุมมองที่ผู้ใช้จะถูกนำทางไปเมื่อการเข้าสู่ระบบสำเร็จ วัตถุประสงค์ของฉันคือแสดงตัวควบคุมมุมมองหลักทันทีหากการตรวจสอบความถูกต้อง (เก็บไว้ในพวงกุญแจ) สำเร็จและแสดงตัวควบคุมมุมมองการเข้าสู่ระบบหากการรับรองความถูกต้องล้มเหลว โดยทั่วไปฉันต้องการทำสิ่งนี้ใน AppDelegate ของฉัน: // url request & response work fine, assume success is a BOOL here // that indicates whether login was successful or not if (success) { // 'push' main view controller } else { // 'push' login view controller } ฉันรู้เกี่ยวกับวิธีการ performSegueWithIdentifier: แต่วิธีนี้เป็นวิธีการอินสแตนซ์ของ UIViewController …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.