2011-12-11 38 views
7

Giả sử tôi có ứng dụng IOS hiện có trên Appstore phiên bản 1.0Ứng dụng iPhone Cập nhật phiên bản mới

Bây giờ tôi thực hiện một số thay đổi đối với ứng dụng và muốn gửi lại.

Có 2 cách riêng biệt để gửi không? Giống như tôi vẫn có thể giữ phiên bản là 1.0 và chỉ cần gửi ứng dụng HOẶC Tôi cần tạo phiên bản mới 1.1 và sau đó gửi nó?

Sự khác biệt trong quy trình là gì?

Ngoài kết thúc của khách hàng, tính năng này hoạt động như thế nào với người dùng mới/hiện tại?

Trả lời

10

Tôi vừa khám phá điều gì đó về nâng cấp phiên bản và App Store. Hiện tại, tôi đang gặp vấn đề và người dùng gặp sự cố do hành vi của hệ thống iOS mà tôi không thể đoán trước. Và, rất quan trọng, iTunes, AppStore và iOS đã sửa đổi một số nâng cấp và cài đặt các quy tắc trong các phiên bản trước. Bây giờ, nó hoạt động theo cách này: - Khi người dùng cài đặt phiên bản mới, tất cả các tệp trong gói được tải xuống và sao chép trong gói hiện có trước đó, nhưng FILD HOẶC THÀNH PHẦN KHÔNG ĐƯỢC XÓA (hoặc không phải tất cả đều bị xóa). Vì vậy, gói cuối cùng KHÔNG bằng với gói cài đặt mới của phiên bản mới. - Ví dụ: nếu tệp xib/nib được bản địa hóa sang các ngôn ngữ khác nhau cho phiên bản mới, gói được cập nhật sẽ bao gồm cả hai phiên bản: một trong thư mục gốc và thư mục khác trong mỗi thư mục được bản địa hóa. Hệ thống, rõ ràng, sẽ sử dụng đầu tiên và chỉ có một cài đặt mới sẽ hiển thị nội địa hóa cho tập tin đó. Một trong các ứng dụng của tôi cho thấy sự cố với MainWindow.xib và vì có một số sửa đổi trong tài liệu tham khảo và lớp học, các ứng dụng cập nhật bị lỗi mỗi khi bạn cố gắng chạy vì nó đang sử dụng đối tượng ám ảnh. Tôi đã xây dựng một phiên bản mới thay đổi tên của các tập tin xib/nib đã được bản địa hoá. Vì MainWindow là một trong số chúng, tôi phải sửa đổi tham chiếu trong info.plist của khóa học. OK, biết rằng, bạn có thể xây dựng một phiên bản mới với các thành phần khác nhau hoàn chỉnh trong gói, nếu các tệp của phiên bản trước không tồn tại, thì ứng dụng sẽ cung cấp cho người dùng tùy chọn sử dụng chúng. Đó là, hai phiên bản của ứng dụng trong một biểu tượng và gói duy nhất. Không phải rất khó làm.

NHƯNG, điều kỳ lạ là tôi nghĩ rằng phiên bản iOS mới và iTunes không cho phép hạ cấp. Tôi đã cố gắng làm điều đó nhưng không làm được. Tức là, nếu bạn cài đặt một phiên bản, ví dụ 1.2, không thể AFAIK cài đặt phiên bản v1.1 sau này trên thiết bị cũng như trong iTunes -> "Ứng dụng". Vì vậy, gói phiên bản kép sẽ tồn tại cho đến khi cài đặt lại ứng dụng.

+0

câu trả lời rất nhiều thông tin Gaberiel :) Bạn có thể vui lòng cho tôi biết phần sqlite không? Chính xác những gì đã xảy ra nếu phiên bản cũ và mới có cùng tên tập tin sqlite (nói abc.sqlite1.0)? Phiên bản mới của ứng dụng của tôi sẽ hoạt động như thế nào? nó sẽ ghi đè lên sqlite cũ? Hoặc tôi sẽ lấy dữ liệu từ cả sqlite. –

+0

Có. Tất cả những gì tôi đã nói là về các mục trong gói ứng dụng. Nếu cả hai đều có cùng tên trong nhóm, thì tên cũ được thay thế bằng tên mới như mong đợi. – Gabriel

+0

@Gabriel: Có cách nào để sao chép dữ liệu từ db cũ sang mới hơn, trước khi nó được thay thế không? – Mrunal

8

Bạn cần tạo số phiên bản mới, điều này có ý nghĩa vì đây là phiên bản mới của ứng dụng của bạn. Điều này sau đó sẽ xuất hiện dưới dạng bản cập nhật cho khách hàng của bạn. Tôi không nghĩ rằng bạn có thể tải lên một tệp nhị phân mới có cùng phiên bản mà không xóa phiên bản cũ khỏi cửa hàng.

Bạn thêm phiên bản mới trong iTunes kết nối, sau đó cập nhật số phiên bản trong Xcode để khớp và tạo bản lưu trữ mới. Nó khá đơn giản.

2

Bạn phải luôn tăng số phiên bản của bất kỳ cập nhật nào cho ứng dụng của mình.

Người dùng sẽ thấy huy hiệu trên biểu tượng App Store trên thiết bị và trong iTunes trên máy tính của họ. Đi sâu vào phần cập nhật, nó sẽ liệt kê ứng dụng của bạn cùng với danh sách các thay đổi bạn đã cung cấp và một nút để cài đặt bản cập nhật. Họ cũng có thể cập nhật tất cả các ứng dụng cùng một lúc.

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

cảm ơn, chỉ cần nói .. –

+0

Bạn có thể sử dụng '[[[NSBundle mainBundle] infoDictionary] objectForKey: @" CFBundleShortVersionString "]' để có thể xử lý các thay đổi phiên bản dưới dạng cơ sở dữ liệu hoặc khóa mới/không dùng nữa trong tùy chọn được chia sẻ ('[NSUserDefaults standardUserDefaults] '). Đây là ví dụ: http://stackoverflow.com/a/23082595/2835520 – IgniteCoders

0

Bạn không phải mở số phiên bản để gửi nữa.Mở Xcode, vào Window - Organizer - Lưu trữ và phân phối một ứng dụng bạn đã tạo thành công.

Các vấn đề liên quan