2017-11-05 48 views
9

Próbuję utworzyć aplikację z budzikiem, która odtwarza pobrane lub przesyłane strumieniowo wideo i audio jako lokalne powiadomienie. Dla Androida jest to wykonalne, ale dla IOS wiem, że jabłko ma ograniczenia.Niestandardowe powiadomienia o alarmach Aplikacja IOS na bieżąco działa

Zauważyłem, że Rise i The Rock Clock wymagają zachowania aplikacji na pierwszym planie (przykład poniżej). Czytałem, że robią to poprzez wyłączanie wielozadaniowości UIApplicationExitsOnSuspend.

Zastanawiam się, czy jest to nadal jedyny (najlepszy?) Sposób wyświetlania powiadomień niestandardowych lub czy tylko obsługują one starsze systemy operacyjne, czy są zmiany w IOS, które zapewniają lepsze wrażenia użytkownika?

Dzięki

enter image description here

Odpowiedz

5
Nie

nie tyle możliwych sposobów, aby to zrobić i nikt nie jest dobry.

  1. Można zaplanować zgłoszenie UILocalNotification lub UNNotificationRequest. W ten sposób możesz stworzyć alarm z pewnym predefiniowanym dźwiękiem. Nieprzydatne z powodu ograniczenia czasu trwania dźwięku i niemożności odtwarzania strumienia.
  2. URLSession z konfiguracją tła. Według documentation Możesz zaplanować żądanie. Działa tylko z iOS 11, nie ma gwarancji, że żądanie zostanie wykonane.

  3. Użyj VoIP lub cichego naciśnięcia. Tego typu popchnięcia mają możliwość uruchomienia aplikacji w tle po odebraniu przez urządzenie. Tricky sposób, ale może wykonać zadanie. Nieprzydatne, jeśli użytkownik nie ma połączenia z internetem.

  4. Zachowaj aplikację na pierwszym planie. Najprostszy sposób i działa jak urok. Zbyt ciężkie na baterię urządzenia.

UPD: Wystarczy zebrać wszystkie odpowiedzi w jednym miejscu (dzięki @jba).

Istnieje również możliwość użycia kategorii tła "Audio i Airplay". Możesz odtwarzać "cisza" lub nagrywać dźwięk, gdy urządzenie jest zablokowane. Jest to bardzo energochłonna metoda, a niektóre interwencje systemu operacyjnego, takie jak połączenie telefoniczne, mogą zatrzymać odtwarzanie/nagrywanie dźwięku, a aplikacja może zostać zawieszona.

2

Apple nie da ci wielu sposobów na osiągnięcie tego, ale niewielu masz dobrze i całkiem dokładnie documented. Dla Twojej aplikacji radzę wybrać opcję "Audio i Airplay", ponieważ pozwoli ci na odtwarzanie i/lub nagrywanie dźwięku w tle. Następnie twoja ciężka praca polega na znalezieniu właściwego sposobu wyjaśnienia, dlaczego robisz to swoim użytkownikom, i jaka jest dla nich korzyść ... Na koniec ta funkcja pozwalała twojej aplikacji na życie cały czas, aż do wystrzelenia alarmu, a następnie zagrania twój plik audio.