2013-04-16 28 views
15

Tôi đã triển khai cơ chế mua hàng trong ứng dụng không tiêu hao đơn giản bằng cách làm theo sách hướng dẫn Ray Wenderlich.Làm cách nào để kiểm tra IAP (mua hàng trong ứng dụng) trong Trình mô phỏng iOS HOẶC trên thiết bị?

Khi ứng dụng của tôi bắt đầu, tôi bắt đầu một yêu cầu thông tin sản phẩm:

self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers]; 
_productsRequest.delegate = self; 
[_productsRequest start]; 

Các SKProductRequest được tạo ra. Nó có một địa chỉ bộ nhớ nhưng không có gì khác xảy ra. Không ai trong số các phương pháp đại biểu được gọi là:

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { 
    NSLog(@"Product info received..."); 
    NSArray *products = response.products; 
    for (SKProduct *product in products) { 
     NSLog(@"ID: %@, title:%@, (%f)", product.productIdentifier, product.localizedTitle, product.price.floatValue); 
    } 

    self.productsRequest = nil; 
} 

- (void)request:(SKRequest *)request didFailWithError:(NSError *)error { 
    NSLog(@"Failed to load list of products"); 
    self.productsRequest = nil; 
} 

Tôi đã kiểm tra hai lần:

  • App hoàn toàn thiết lập trong iTunes Connect.
  • Trạng thái ứng dụng trong ITC là "Chuẩn bị tải lên"
  • Một IAP không tiêu thụ được thêm vào.
  • Trạng thái sản phẩm IAP trong ITC là "Sẵn sàng để gửi"
  • ID ứng dụng là com.mycompany.myapp cho cả ứng dụng và trong danh sách. Đã kiểm tra hai lần.
  • IAP sử dụng com.mycompany.myapp.productname (sử dụng cùng một ID chính xác cho yêu cầu).
  • Đã tạo tài khoản người dùng thử nghiệm trong ITC.
  • Chưa có nội dung nào được gửi tới Apple.
  • Máy Mac của tôi có quyền truy cập internet.
  • Không có thư nào khác trong bảng điều khiển hoặc trên màn hình.

Cuốn sách Ray Wenderlich không đề cập đến tôi phải làm gì khác ngoài điều này.

Chỉ sau khi Tôi thấy một -didFailWithError: gọi cho đại biểu của tôi trên Thiết bị, nhưng nó không bao giờ xuất hiện nữa. Đại biểu của tôi không được gọi cả trên thiết bị hoặc trình mô phỏng. Tôi để cho nó chạy trong vài phút mà không có phản ứng gì cả.

iTunes Connect cho phép cảnh báo khó hiểu này:

Your first In-App Purchase(s) must be submitted with a new app version. Select them from the In-App Purchases section of the Version Details page and then click Ready to Upload Binary.

Đây có phải là cần thiết trước khi có khả năng kiểm tra trong ứng dụng mua?

+1

Với Xcode 5.1, thử nghiệm IAP hoạt động tốt trong trình mô phỏng. –

Trả lời

2

Rất tiếc, có một số điều bạn không thể thử nghiệm trên trình mô phỏng. Trong các giao dịch mua ứng dụng thuộc danh sách đó.

Vì vậy, bạn không thể thử nghiệm Trong giao dịch mua ứng dụng trong trình mô phỏng, bạn cần một thiết bị iOS cho điều đó.

Chỉnh sửa: Theo tôi có thể thấy, đó là những gì sẽ xảy ra khi bạn thử kiểm tra IAP trên trình giả lập, đại biểu mua sẽ không được gọi.

+0

Chỉnh sửa câu hỏi của tôi ngay bây giờ vì tôi cũng không nhận được bất kỳ cuộc gọi đại biểu nào trên thiết bị. – openfrog

0

tôi đã tìm ra một cái gì đó:

tôi khởi xướng SKProductRequest ngay vào cuối appdelegate của -didFinishLaunching ... và nó không bao giờ làm việc.

Sau đó, tôi đã thực hiện cuộc gọi bị trì hoãn và chờ 3 giây. Từ đó, nó bắt đầu hoạt động. Vì vậy, bạn không thể yêu cầu StoreKit ngay sau khi khởi chạy ứng dụng.

10

Trong tài liệu hướng dẫn mô phỏng iOS có chép rằng:

API Limitations

Within iOS Simulator, there are some limitations to the APIs and features, including:

Apple Push Services 
Privacy alerts for access to Photos, Contacts, Calendar, and Reminders 
The UIBackgroundModes key 
iCloud document syncing and key-value storage support 

Unsupported frameworks include:

External Accessory 
Media Player 
Message UI 
Event Kit 
In UIKit, the UIVideoEditorController class 
Store Kit 

Như trong ứng dụng mua cần cửa hàng Kit để làm việc và khuôn khổ cửa hàng Kit là không được hỗ trợ cho Simulator, bạn không thể kiểm tra IAP trong iOS Simulator.

Thông tin thêm: iOS Simulator documentation

+7

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/DevelopingwithStoreKit/DevelopingwithStoreKit.html tiểu bang: "Bộ lưu trữ * có thể * được thử nghiệm trong Trình mô phỏng iOS, ngoại trừ nội dung được lưu trữ tải xuống. " – thomers

+2

Kể từ khi viết nhận xét này, "Bộ lưu trữ" là * không * được nhắc đến nữa trong danh sách khung không được hỗ trợ trong Trình mô phỏng iOS. – rpitting

+6

@ rpitting - có nhưng IAP vẫn không hoạt động. Tôi tin rằng có hai Táo: một trong đó tạo ra phần cứng và phần mềm tuyệt vời cho công chúng và một Apple khác kiểm soát bởi Darth Vader ghét các nhà phát triển và tạo ra những thứ crappy như Xcode. – SpaceDog

21

Trong phiên bản hiện tại của Xcode 5.0 (5A1413), In-App mua sẽ không làm việc trong trình giả lập iOS.

StoreKit (In-App purchases) will not work in the Simulator. 13962338

Nguồn: Xcode 5.0 Release Notes> Vấn đề đã biết> iOS Simulator https://developer.apple.com/library/ios/releasenotes/DeveloperTools/RN-Xcode/xc5_release_notes/xc5_release_notes.html#//apple_ref/doc/uid/TP40001051-CH2-SW303

+1

Bạn có thể kiểm tra StoreKit trong trình mô phỏng trong Xcode 5.1+. – Urkle

0

nơi đối tượng skProductRequest của bạn được công bố? bạn có thể thử nó với tuyên bố toàn cầu của đối tượng đó.