2013-04-18 54 views
5

Tôi cần triển khai đăng nhập tùy chỉnh trong ứng dụng của mình.Phát hiện cài đặt AppStore của ứng dụng iOS

Để thực hiện việc này, tôi cần phát hiện xem phiên bản hiện tại của ứng dụng đã được cài đặt từ cửa hàng ứng dụng hay đang chạy từ xcode hoặc là phiên bản TestFlight.

Có gì khác trong ứng dụng tùy thuộc vào nguồn cài đặt?

Tôi không muốn có thứ gì đó khác biệt trong môi trường phát triển.

Trả lời

11

Bạn có thể nhận được một phần của con đường đó bằng cách đọc trong file embedded.mobileprovision từ gói ứng dụng:

NSString *provisionPath = [[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"]; 

Nếu điều đó không tồn tại, bạn đang ở trong một cửa hàng ứng dụng xây dựng.

Nếu nó không tồn tại, bạn cần phải tìm ra một số sự khác biệt giữa debug và hồ sơ dự phòng ad-hoc, và tìm kiếm đó để xác định xây dựng bạn đang ở.

Vì XCode tự động thiết lập các ứng dụng với một Cờ "DEBUG" trong cấu hình Gỡ lỗi, không được đặt trong Bản phát hành (được sử dụng mặc định cho các bản dựng AdHoc), bạn có thể tắt ghi nhật ký trong cửa hàng ứng dụng và xác định mức độ ghi nhật ký dựa trên cờ macro DEBUG .

+1

Điều đó có vẻ tuyệt vời, bạn có nghĩ rằng tôi có thể tìm cách thử nghiệm nó trước khi tôi phát hành ứng dụng không? ví dụ: xây dựng và chạy với _Release Scheme_ chỉ để chắc chắn nó hoạt động trên bản phát hành. – bago

+0

Tất cả các ứng dụng bạn biên dịch, phát hành hoặc ad-hoc, sẽ luôn bao gồm một embedded.mobileprovision. Đó chỉ là bản dựng App Store cuối cùng bị thiếu tệp này. Bạn có thể xác minh nó không tồn tại bằng cách tải xuống bất kỳ ứng dụng cửa hàng ứng dụng nào từ thiết bị của bạn và khám phá gói ứng dụng ... Lưu ý rằng tôi không đưa ra kỹ thuật này, HockeyApp nhận được tín dụng đầy đủ cho việc tìm kiếm này (hoặc ít nhất đó là nơi Tôi đã học về nó từ). –

+0

Mẹo hay :) +1 Tks – TonyMkenu

0

Bạn có thể sử dụng các cấu hình xây dựng xác định macro để cho bạn biết rằng bạn đã tạo cho thử nghiệm.

Ví dụ, chúng tôi có Debug xây dựng thiết lập một USE_TESTFLIGHT vĩ mô, và trong mã của chúng tôi, chúng tôi làm:

#ifdef USE_TESTFLIGHT 
//do something test-flight specific 
[TestFlight takeOff:kTestFlightAppToken]; 
#endif 

Bạn có thể tạo xây dựng configs mới thiết lập macro khác nhau tùy thuộc vào cách bạn đang biên soạn/phân phối ứng dụng và sử dụng ifdef để thực hiện các tác vụ khác nhau dựa trên các tác vụ đó.

+0

Trong khi hoạt động, các cấu hình xây dựng khác nhau không đáp ứng được "Tôi không muốn có thứ gì đó khác biệt trong môi trường phát triển". –

+0

Đồng ý. Đề xuất này, trong khi hữu ích cho một số nhu cầu phát triển không trả lời câu hỏi như được yêu cầu. –

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