HàPhan 河

UIBackgroundModes là cái gì?

Mới sáng đầu tuần mà đã bị reject app vì lý do ba láp ba xàm.

Guideline 2.5.4 - Performance - Software requirements
Your app declares support for location in the UIBackgroundModes key in your Info.plist file but still does not declare any features that require persistent location. Apps that declare support for location in the UIBackgroundModes key in your Info.plist file must have features that require persistent location.

Ngồi trace ra thì do bật cờ background mode cho location service mà trong app thực sự không có cái tính năng nào là lấy vị trí của user khi đang chạy ngầm cả =)) (vãi dev)

Screen-Shot-2019-05-27-at-8.16.00-AM

Thế là tắt nó đi và nhân tiện tìm hiểu xem mấy cái mode ở đó nó là gì.
Hmm...

https://developer.apple.com/documentation/bundleresources/information_property_list/uibackgroundmodes

Mặc định, khi bấm home, đổi app hoặc lock màn hình, app sẽ được đưa về suspended state. Để làm gì? Tiết kiệm pin đó.

Cho nên muốn thực hiện một số công việc khác khi không xài app thì cần xin phép.

1. audio
Cái này thì dành cho mấy app nghe nhạc như zing mp3, hoặc spotify, hoặc mấy đứa thấy app youtube ko cho background muốn làm mấy cái app background cho video =)) (kiếm bộn tiền đấy)

2. location
mỗi lần location đổi thì mình có thể thực hiện một số tác vụ để cập nhật giao diện hoặc gởi request lên server (app leo núi chẳng hạn)

3. voip
nghe gọi khỏi tốn tiền, mấy bác viettel hay mobiphone... không thích cho lắm =))

4. newsstand-content
hiện tại thì tớ chưa xài cái app nào liên quan vụ này, có thể mấy cái báo ở Mỹ hay xài

The app is a Newsstand app that downloads and processes magazine or newspaper content in the background.

5. external-accessory (ExternalAccessory.framework)
6. bluetooth-central (Core Bluetooth)
7. bluetooth-peripheral (Core Bluetooth)

3 cái này thì liên quan đến mấy cái thư viện làm việc với bluetooth hoặc thiết bị ngoại vi như cáp lightning (nghe bảo vậy =)))

7. fetch
thông thường làm với live update thì cần, nghĩa là app cần tải 1 lượng dữ liệu kha khá, user không cần xài app, bấm home mà cái request download cần chạy, sau đó bung nén các kiểu nếu cần.

8. remote-notification
mới đọc mới biết =)), cái này là khi app nhận được push mình có thể start tải trước một số thông tin từ server (call api nếu cần), user nó mở lên thì thấy dữ liệu liền khỏi phải chờ đợi mắc mệt.

Ừ thì cho xài mấy cái này nhưng mà chúa tể Apple có bảo là khi xin phép rồi thì phải xài, không được để không nếu không thì REJECTTTT nhé T_T.

Always try to avoid doing any background work unless doing so improves the overall user experience. An app might move to the background because the user launched a different app or because the user locked the device and is not using it right now. In both situations, the user is signaling that your app does not need to be doing any meaningful work right now. Continuing to run in such conditions will only drain the device’s battery and might lead the user to force quit your app altogether. So be mindful about the work you do in the background and avoid it when you can.

Do PIN iPhone kém quá nha mấy chế chứ không phải em code cùi tốn pin user đâu T_T

Mọi thông tin ở trên đều tham khảo link dưới.

https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

Hoặc xem thêm bài viết này chi tiết hơn.
https://www.raywenderlich.com/5817-background-modes-tutorial-getting-started

Comments