2009-08-06 16 views
7

Nasza urocza aplikacja, która pobiera pliki mp3 z naszego serwera do lokalnego pliku na telefonie, a następnie odtwarza z tego pliku, została odrzucona z powodu zbyt dużej przepustowości.Aplikacja na iPhone'a odrzucona z powodu "przeniesienia nadmiernych ilości danych"

Rozumiem odrzucenie (pobieramy zamiast przesyłania strumieniowego) i nie kwestionujemy ich decyzji ... naszym priorytetem była jakość obsługi.

Zastanawiam się ... co mam teraz zrobić?

Nie ma twardych i szybkich zasad ... Apple mówi tylko: "Nie wolno w rozsądnym rozsądku firmy Apple nadmiernie używać lub nadmiernie obciążać przepustowość sieci lub przepustowość".

Ktoś ma dane na temat tego, co Apple uważa za rozsądne stawki transferu danych?

Czy powinienem wypełniać plik bufora krótkimi impulsami? Powinien przesyłać plik ze stałą stawką (i jak ograniczyć szybkość transferu z poziomu aplikacji?)

Wszelkie sugestie są mile widziane.

Dzięki

Odpowiedz

11

Rozmawiałem ze wsparciem dla programistów Apple i po prostu dla FYI. Możesz przesyłać strumieniowo 1 MB na minutę przez sieć komórkową. Pomoc techniczna sugeruje przetestowanie aplikacji w następujący sposób:

"Podstawową metodologią pomiarów jest wyłączenie wszystkich aktualizacji w tle (w szczególności automatyczne pobieranie wiadomości e-mail i aktualizacje kalendarza), resetowanie statystyk przesyłania w" Ustawienia: Ogólne: użycie : ", a następnie uruchom aplikację, pozwól jej działać przez ustalony czas (pięć minut jest rozsądna), a następnie zamknij aplikację. Po zakończeniu testu liczby wymienione w" Komórkowych danych sieciowych "w" Ustawienia: Ogólne: Sposób użycia: "na czym należy skupić się na redukcji."

Korzystając z tego, co właśnie opisałem, sugerowałbym 4.8 MB co 5 minut jako wytyczne, których użyjesz, aby upewnić się, że twoje zgłoszenie pozostanie w naszych wymaganiach dotyczących przepustowości. "

Nadzieję, że pomaga choć trochę.

+0

To jest najbardziej przydatna odpowiedź ... Dziękuję. Uderzamy teraz dokładnie 4,8 mb na 5 minut (przypadkowo). –

+0

Czy mamy więcej aktualnych informacji na ten temat? – Jonny

+0

Co jeszcze chcesz wiedzieć? – postalservice14

0

Na bardziej poważne uwaga, co jest to zrobić? Istnieje wiele rynków dla iPhone'a poza Stanami Zjednoczonymi, które nie mają dobrych współczynników pobierania na telefony, a także rozmiarów pobieranych za pomocą wtyczek, więc posiadanie aplikacji nie jest dobrą rzeczą.

Czy możesz obniżyć szybkość transmisji danych w swoim mp3 lub niektórych takich? Czy pobieranie jest opcjonalne z ostrzeżeniem, że będzie ono pobierać?

+0

Zgadzam się, że powinniśmy być bardziej świadomi problemu z przepustowością ... ale widząc, że youTube, Pandora i wiele innych aplikacji do strumieniowego przesyłania kupują za to, po prostu nie uważałem, że zostalibyśmy odrzuceni, ponieważ gdyby tak było. To prawda .. jeśli każdy programista przytłacza sieć ... korzystanie z innych usług, takich jak przeglądanie stron internetowych, będzie cierpieć. Właśnie dlatego szukam odpowiedzialnego sposobu, aby to zrobić i nadal dawać użytkownikowi dobre wrażenia. –

6

Czy rozważałeś transmisję HTTP na żywo? Jest wbudowany w system operacyjny 3.0.

Zasadniczo dzielisz media na małe (powiedzmy 10 sekund) fragmenty i umieszczasz je na standardowym serwerze internetowym. Następnie tworzy się małe pliki "meta-deskryptorów" tekstowych w formacie EXTM3U, które wskazują, gdzie znajdują się bity. Ciekawostką jest to, że możesz tworzyć wiele wersji każdego fragmentu przy różnych przepływnościach. Jeśli więc twoja przepustowość jest dobra, odtwarzacz iPhone dynamicznie wybiera wyższe szybkości transmisji, ale gdy jest niski, automatycznie przełącza się na wersję o mniejszej przepływności. Robi to w locie, aby dostosować się do zmieniających się warunków.

Więc jeśli podzielisz MP3 na wiele 10-sekundowych bitów, powiedzmy, 3 różne szybkości transmisji bitów, wtedy gdy użytkownik jest podłączony przez WiFi, otrzymają one wysokiej jakości rzeczy, ale jeśli są w sieci 3G lub EDGE, dostają stopniowo coraz gorszej jakości (i mniejszych rozmiarów) treści.

Jeśli to narusza koncepcję nośnika, można użyć tej samej sztuczki i zachować pliki o wielu rozmiarach dla każdego typu połączenia. Następnie, jeśli korzystasz z Wi-Fi (lub uzyskasz szybką reakcję na ping z sygnałem pulsującym do serwera), pobierz duży plik w porównaniu ze średnimi lub małymi rozmiarami.

Here's a decent step-by-step w sprawie segmentacji treści. Skupiają się na wideo, ale powinno również działać z treścią audio.

+0

Twoja pierwsza sugestia segmentacji plików wygląda na dużo pracy, ale być może właśnie tak będziemy musieli odejść. Pliki mają około 30 minut, a każda z nich zawiera 180 plików. Gramy pliki w naszym odtwarzaczu bez opuszczania aplikacji przez użytkownika. Czy nadal będzie to opcja z transmisją na żywo w standardzie 3.0 HTTP? O wiele łatwiej byłoby Apple dało deweloperom jakiś benchmark. –

+0

Rezygnacja z jakości treści brzmi jak genialny pomysł, gdy przechodzisz z wifi do 3g na gprs ... – Spence

+0

Narzędzia wymienione w tym artykule, do którego się połączyłem, automatycznie tworzą tworzenie segmentów i list odtwarzania. Do tej pory grałem tylko z plikami wideo, ale dźwięk też powinien działać. Klient streamingowy to w zasadzie odtwarzacz wideo z możliwością umieszczania na stronie. Jeśli chodzi o treści wideo, przechodzi w tryb pełnoekranowy, ale nadal jest osadzony (tzn. Nie wychodzi z aplikacji podczas odtwarzania). Ponieważ jest to oficjalnie usankcjonowane środowisko, możesz mieć większe szanse na uzyskanie aplikacji. – Ramin

0

YOU nie można pobrać mp3, chyba że masz połączenie bezprzewodowe, i poinformuj o tym. Jeśli mp3 są zbyt ważne, po prostu powiedz im, że działa tylko w sieci bezprzewodowej lub dołącz kilka plików mp3 do urządzenia. Ale 30 minut mp3 jest śmieszne, to jest o czym, 30meg .... pomyśl o tym, 30 meg jest po prostu za dużo.

+0

Pliki, które stanowią rdzeń aplikacji, mają rozmiar od 5 MB do 16,7 MB. Co nie jest śmieszne. –

1

Sugerowałbym dławienie przepustowości na żądanie sieci/http, gdy jest podłączony do sieci komórkowej, i nie ma przepustnicy na Wi-Fi.

Kombinacja użycia Zasięgiem dostępu do wykrywania stanu sieci i realizacja żądania http przy użyciu CFNetwork z uśpieniem do następnej sekundy, gdy już pobrałeś tyle, ile dozwolone na sekundę, powinno Cię tam zabrać.

Należy sprawdzić ten projekt, albo użyć, lub po prostu zobaczyć przykład jak zakodować to dobrze:

http://allseeing-i.com/ASIHTTPRequest

Klasa ASIHTTPRequest realizuje to, przy użyciu starej lub wersji 2.0 Dostępności, a także zapewnia przepustowość na poziomie klasy, więc nawet jeśli masz wiele równoczesnych pobrań i wysyłek, tak długo, jak wszyscy oni przechodzą przez ASIHTTPRequest, będą one odpowiednio wzięte razem i dławione poprawnie.

Nieco więcej na temat korzystania z tego tutaj: http://allseeing-i.com/ASIHTTPRequest/How-to-use#bandwidth_throttling

Dużo dobrych rzeczy w tym (i nie, nie jestem autorem któregokolwiek z nią).

+0

Skończyło się na tym. Ale zwiększyłem szybkość transferu danych w kolejnych aktualizacjach bez bycia ukaranym (jak na razie). –

+0

Bardzo interesujące. Przejrzeliśmy recenzję z dodaną przepustnicą - będę musiał zobaczyć, jak przekroczenie limitu przepustnicy ... –

Powiązane problemy