2012-06-17 45 views
7

Tôi không muốn gửi ứng dụng này cho AppStore. Tôi đã thử nhiều lần nhưng gặp rất nhiều vấn đề: (iOS Làm cách nào để sử dụng API riêng tư?

Tôi sử dụng lớp-dump để lấy tất cả các tệp tiêu đề của UIKit.framework .Trong UIApplication.h được tạo bởi lớp-dump, tôi đã thấy phương pháp I muốn sử dụng ---- launchApplicationWithIdentifier

Sau đó, tôi đặt UIApplication.h vào dự án của mình và nhập nó. Biên dịch, tôi nhận được rất nhiều lỗi "Định nghĩa lại số đếm ...." vì trong UIKit.framework I sử dụng trước đó, có một tệp UIApplication.h. Nhưng tệp này không có phương thức launchApplicationWithIdentifier

Nếu tôi xóa tệp UIKit.framework trước đó và nhập thư mục do lớp kết xuất tạo ra, thì nó sẽ xuất hiện như một khung công tác nhưng nếu Tôi mở ra nó, nó trống rỗng.

Sau đó, tôi muốn làm cho tất cả các tiêu đề được tạo ra tập tin một kiến ​​tập khuôn khổ thay thế UIKit.framework trước. Nhưng tôi không biết làm thế nào. Như chúng ta có thể thấy, trong thư mục khung hệ thống, có một tệp có cùng tên với khung công tác và có biểu tượng 'script shell' được thực thi. Làm cách nào để tạo tệp này?

Tôi thực sự bối rối. Ai đó có thể cho tôi một tay? Cảm ơn bạn.

+0

OMG, tôi vừa thêm câu trả lời cho câu hỏi của bạn trong câu hỏi khác: http://stackoverflow.com/questions/11047176/ios-how-can-i-use-uiapplication-launchapplicationwithidentifier-which-is-in -priv –

Trả lời

7

Chỉ cần xác định những phương pháp riêng trong một giao diện loại trên việc thực hiện lớp học nơi bạn muốn sử dụng nó, như thế này:

@interface UIApplication (Private) 

- (BOOL)launchApplicationWithIdentifier:(id)identifier suspended:(BOOL)suspended; 

@end 

Đừng nhập khẩu toàn bộ tập tin lớp-dump và liên kết với UIKit gốc khuôn khổ.

Bạn phải rất cẩn thận khi sử dụng API riêng tư. Những phương pháp này có thể thay đổi hoặc bị xóa trong các phiên bản iOS trong tương lai!

Kiểm tra xem phương pháp này thực sự tồn tại với respondsToSelector: trong thời gian chạy và được chuẩn bị cho trường hợp đó nó không tồn tại.

Tôi đã sử dụng tính năng MapKit bí mật trong ứng dụng của riêng mình và tôi biết rằng các phương thức riêng chỉ tồn tại trong iOS 5. Ứng dụng của tôi vẫn hoạt động trong tất cả các phiên bản iOS nhưng tính năng này chỉ khả dụng trong iOS 5 (Apple đã xóa hoặc thay đổi) trong iOS 6 beta 1).

+1

Nó hoạt động. Cảm ơn bạn rất nhiều :-) Bên cạnh đó, tôi phải làm cho ứng dụng của tôi một tập tin deb sử dụng công cụ dpkg sau đó cài đặt nó. Chỉ theo cách này, ứng dụng của tôi có thể khởi chạy một ứng dụng khác. – wyp

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