2011-12-11 25 views
7

Powiedzmy mam istniejącej aplikacji IOS żyć na Appstore, który jest w wersji 1.0iPhone app Aktualizacja Vs nową wersję

Teraz dokonać pewnych zmian w aplikacji i chcesz złożyć z powrotem.

Czy istnieją 2 oddzielne sposoby przesyłania? Czy nadal mogę zachować wersję jako 1.0 i po prostu przesłać aplikację LUB Potrzebuję utworzyć nową wersję 1.1, a następnie przesłać?

Jakie są różnice w procesie?

Również od końca klienta, jak to działa dla nowych/istniejących użytkowników?

Odpowiedz

10

Właśnie odkryłem coś o wersjach i App Store. Właśnie teraz cierpię na problemy i użytkownicy się zawieszają z powodu zachowania systemu iOS, którego wcześniej nie potrafię sobie wyobrazić. I, co bardzo ważne, iTunes, AppStore i iOS zmodyfikowały niektóre uaktualnienia i instalowanie reguł w ostatnich wersjach. Teraz działa w ten sposób: - Kiedy użytkownik instaluje nową wersję, wszystkie pliki w pakiecie są pobierane i kopiowane w poprzednim istniejącym pakiecie, ale NIE ZOSTANIE USUNIĘTE STARE PLIKI LUB KOMPONENTY (lub nie wszystkie są usuwane). Tak więc ostateczny pakiet NIE jest równy pakietowi nowej instalacji nowej wersji. - Jeśli na przykład plik xib/nib jest zlokalizowany w różnych językach dla nowej wersji, zaktualizowany pakiet będzie zawierał obie wersje: jedną w folderze głównym, a drugą w każdym zlokalizowanym folderze. System oczywiście użyje pierwszego i tylko nowa instalacja pokaże lokalizacje dla tego pliku. Jedna z moich aplikacji pokazuje ten problem z plikiem MainWindow.xib, a ponieważ istnieją pewne modyfikacje odniesień i klas, zaktualizowane aplikacje zawieszają się przy każdym uruchomieniu, ponieważ używa on przestarzałego obiektu. Zbudowałem nową wersję zmieniającą nazwę plików xib/nib, które zostały zlokalizowane. Ponieważ MainWindow jest jednym z nich, muszę oczywiście zmodyfikować odniesienie w info.plist.

OK, wiedząc, że możesz zbudować nową wersję z kompletnymi różnymi komponentami w pakiecie, który jeśli istnieją pliki z poprzedniej wersji, aplikacja oferuje użytkownikowi opcję ich użycia. To znaczy dwie wersje aplikacji w jednej ikonie i pakiecie. Niezbyt trudne do zrobienia.

ALE, bardzo dziwne jest to, że uważam, że nowa wersja iOS i iTunes nie zezwalają na obniżanie wersji. Próbowałem to zrobić, ale nie zrobiłem tego. Oznacza to, że jeśli zainstalujesz wersję, na przykład 1.2, AFAIK nie będzie w stanie zainstalować ostatniej wersji v1.1 na urządzeniu ani w iTunes -> "Aplikacje". Tak więc pakiet podwójnej wersji będzie działać do momentu ponownej instalacji aplikacji.

+0

bardzo pouczająca odpowiedź Gaberiel :) Czy mógłbyś proszę dać mi znać część sqlite? Co dokładnie się stało, jeśli stara i nowa wersja ma ten sam plik o nazwie sqlite (np. Abc.sqlite1.0)? Jak zachowa się moja nowa wersja aplikacji? czy zastąpi starą sqlite? Albo otrzymam dane z obu sqlite. –

+0

Tak. Wszystko, co powiedziałem, dotyczy elementów w pakiecie aplikacji. Jeśli oba mają taką samą nazwę w pakiecie, stary zostanie zastąpiony nowym zgodnie z oczekiwaniami. – Gabriel

+0

@Gabriel: Czy istnieje sposób na skopiowanie danych ze starszej wersji db do nowszej, zanim zostanie ona zastąpiona? – Mrunal

8

Musisz utworzyć nowy numer wersji, co ma sens, ponieważ jest to nowa wersja aplikacji. Zostanie to wyświetlone jako aktualizacja dla Twoich klientów. Nie sądzę, że możesz załadować nowy plik binarny w tej samej wersji bez usuwania starego ze sklepu.

Dodajesz nową wersję w iTunes connect, a następnie aktualizujesz numer wersji w Xcode, aby dopasować i utworzyć nowe archiwum. To całkiem proste.

2

Należy zawsze zwiększać numer wersji każdej aktualizacji aplikacji.

Użytkownicy będą widzieć znaczek na ikonie App Store na urządzeniu oraz w iTunes na komputerze. Przechodząc do działu aktualizacji, wyświetli listę aplikacji wraz z listą wprowadzonych zmian oraz przycisk do zainstalowania aktualizacji. Mogą też aktualizować wszystkie aplikacje jednocześnie.

1
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; 
NSLog(@"version is%@",version); 
+0

dziękuję, po prostu powiedzieć .. –

+0

Możesz użyć '[[[NSBundle mainBundle] infoDictionary] objectForKey: @" CFBundleShortVersionString "]' może obsłużyć zmiany wersji jako bazy danych lub nowe/przestarzałe klucze we współdzielonych preferencjach ('[NSUserDefaults standardUserDefaults] '). Oto przykład: http://stackoverflow.com/a/23082595/2835520 – IgniteCoders

0

Nie musisz już otwierać numerów wersji, aby przesłać więcej.Otwórz Xcode, przejdź do okna - Organizator - Archiwizuj i rozpowszechniaj aplikację, którą utworzyłeś pomyślnie.