2013-04-15 39 views
9

Sử dụng Xcode (để phát triển trên iOS) Tôi muốn tạo một dự án thứ hai giống như một dự án đầu tiên nhưng một số lớp khác nhau.Tạo hai ứng dụng iOS trong Xcode

Chính xác, tôi đang tạo ứng dụng iPhone và tôi muốn cung cấp phiên bản miễn phí và phiên bản cao cấp. Trên thực tế, mã của các dự án giống hệt nhau nhưng thay đổi một số lớp.

Vấn đề là tôi không muốn hỗ trợ hai dự án. Nếu tôi sửa đổi một lớp, thì tôi phải sửa đổi cùng một thay đổi trên dự án khác. Nó rất dư thừa.

Bên cạnh đó, dự án được đẩy tới một bộ lưu giữ GIT từ xa.

Và một lưu ý cuối cùng, Ứng dụng iOS được xác định bằng ID được liên kết với dự án.

Vì vậy, tôi cần hai dự án khác biệt?

Giải pháp nào tốt nhất để tạo hai dự án ứng dụng iOS trong Xcode chia sẻ các lớp học, nhưng thay đổi hai o ba lớp?

Cảm ơn

Trả lời

17

tôi muốn cung cấp một phiên bản miễn phí và phiên bản cao cấp.

Trong trường hợp này, bạn không cần phải tạo ra hai ứng dụng trong hai dự án: tất cả bạn cần là một thứ hai mục tiêu cho phiên bản đặc biệt của bạn. Đây là link that explains how to create and manage multiple targets in Xcode.

Quy trình nhả xuống để thêm mục tiêu vào dự án, xác định một thuộc tính riêng biệt cho nó, tùy chọn thiết lập biểu tượng tiền xử lý cho điều kiện biên dịch và sử dụng biểu tượng đó để #ifdef các phần của lớp học của bạn không cần thiết trong phiên bản miễn phí .

Một cách tiếp cận phổ biến khác để quản lý ưu đãi miễn phí và phí bảo hiểm là cung cấp một phiên bản miễn phí và cho phép người dùng nâng cấp lên cao cấp thông qua mua hàng trong ứng dụng.

6

Bạn chỉ cần tạo hai mục tiêu. Vì vậy, bạn sẽ chỉ sửa đổi một cơ sở mã duy nhất, hoàn hảo!

This tutorial sẽ hướng dẫn bạn qua (và thậm chí sử dụng phiên bản lite/trả tiền làm ví dụ).

0
  1. mục tiêu trùng lặp của phiên bản trả tiền và đặt tên nó là miễn phí phiên bản

  2. xác định tên macro PaidApp=1 trong mục tiêu thanh toán, sau đó đưa dòng mã này trong khởi đầu của applicationDidFinishLaunching.

    #ifdef PaidApp 
    [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"adDisabled"]; 
    #endif 
    
  3. khi ứng dụng miễn phí mục tiêu di động, nếu ai đó mua trả tính năng ứng dụng sau đó thiết lập giá trị của @ "adDisabled" đến 1 (theo giá trị mặc định của @ "adDisabled" sẽ là 0)

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