2009-06-25 27 views
33

Tôi đang cố thử nghiệm Trong ứng dụng Mua trong môi trường hộp cát.iPhone StoreKit - id sản phẩm không hợp lệ

Để kiểm tra mã tôi đã làm như sau:

  1. Tạo một Trong App nghiệm mua hàng Tài khoản người dùng dưới 'Quản lý người dùng' trong iTunes Connect

  2. Tạo một số trong ứng dụng mua sản phẩm dưới 'Quản lý mua hàng trong ứng dụng của bạn'. Tôi đã sử dụng giá trị số và giá trị số-chữ số cho ID sản phẩm.

  3. Loaded các ứng dụng trên iPhone, đi đến Settings-> Store và đăng xuất khỏi các cửa hàng thường xuyên và vào tài khoản thử nghiệm đã tạo trong bước 1

  4. Đặt một breakpoint trong (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response callback

của tất cả các ID sản phẩm được nộp trong response.invalidProductIdentifiers tài sản. Khi gửi yêu cầu đầu tiên tôi đã cố gắng ID sản phẩm chính xác được tạo ra trong bước 2. tôi cũng đã cố gắng tiền tố họ với Bún ID dle:

NSString *id2 = @"com.super.duper.8"; 
NSSet *productList = [NSSet setWithObjects:id2, @"8", nil]; 

SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:productList]; 

Tôi có thiếu thứ gì đó hiển nhiên không? Bất kỳ trợ giúp nào được đánh giá cao.

Achim

+0

Trong trường hợp của tôi, tài khoản ngân hàng trước đó không còn hợp lệ. –

Trả lời

1

Đây là nơi bạn đang đi sai, bạn cần điều này trong mã của bạn:

NSSet *productList = [NSSet setWithObjects:product id]

Bạn có thể nhận được sản phẩm này id từ iTunes kết nối.

Và bạn cần đảm bảo rằng bạn đã tạo người dùng thử nghiệm và đã đăng xuất khỏi tài khoản iTunes gốc của mình. Vui lòng xem không đăng nhập bằng tài khoản người dùng thử nghiệm, bất kể tài liệu của apple nói gì, chỉ cần sử dụng tài khoản đó khi cửa sổ bật lên xuất hiện.

3

Chúng tôi đã tạo một hồ sơ cung cấp mới, có một dòng ở đâu đó (không thể nhớ lại ở đâu, không phải trong tài liệu mua hàng trong ứng dụng) cho biết bạn phải bật trong mua ứng dụng trong hồ sơ cấp phép. Chúng tôi không thể làm điều đó với hồ sơ hiện có của chúng tôi, vì vậy chúng tôi đã tạo một hồ sơ mới và sau đó chúng tôi có thể bật nó.

0

Phải mất các cửa hàng một thời gian để làm cho sản phẩm có sẵn cho tất cả các máy chủ (xem tài liệu). Vì vậy, bạn có thể gặp phải sự chậm trễ giữa việc tạo một sản phẩm trong iTunes Connect và thấy rằng id sản phẩm đó là hợp lệ khi thử nghiệm trên thiết bị. Đối với tôi, nó mất khoảng 12 giờ cho đến khi sản phẩm của tôi xuất hiện.

2

Đối với bất kỳ ai khác có những vấn đề này, tôi khuyên bạn nên đọc this thread trên Diễn đàn của Apple.

15

Tôi đã dành hai ngày đấu tranh với tất cả các sản phẩm của mìnhYêu cầu (đối với AppID) đã kết thúc trong danh sách response.invalidProductIdentifiers, thay vì trong danh sách response.products.Apple chắc chắn đã làm một công việc cấp F trong việc đối phó với bộ lưu trữ của họ. Nó khó hiểu, đan xen và phức tạp.

Cuối cùng tôi đã giải quyết được. Một bài học rất quan trọng tôi đã học được như được chỉ ra bởi một vài trong các diễn đàn: Có thể mất nhiều giờ cho những gì bạn đã nhập trên itunesconnect.apple.com để có hiệu lực.

Có hai phần: tên ứng dụng và AppID trong xcode của bạn và những gì bạn đã nhập trong itunesconnection, chúng phải khớp chính xác (phân biệt chữ hoa chữ thường). Nếu bạn đã đăng ký hoặc sửa đổi AppleID trong ứng dụng của mình (tôi cũng đã hoàn thành tất cả các hợp đồng và thông tin ngân hàng của mình như được đề xuất bởi một số hành động mua hàng sẽ không hoạt động mà không hoàn thành phần này), bạn cũng có thể đi ngủ trước khi thử lại bởi vì nó thực sự mất nhiều giờ trong trường hợp của tôi để có tác động. Tôi đã rất thất vọng chiến đấu với vấn đề này trước khi 9 tuổi của tôi kéo tôi cho câu chuyện thời gian ngủ sau đó ngạc nhiên khi thấy vấn đề biến mất khi tôi tỉnh dậy.

Tôi đã tìm thấy các đề xuất của Eddy71 trong http://www.iphonedevsdk.com/forum/iphone-sdk-development/21035-problems-creating-test-user-app-purchase.html thực sự hữu ích. Trước khi giải quyết nó, tôi đã làm mọi thứ tôi có thể làm trong danh sách kiểm tra của Eddy và vẫn không có sản phẩm nào, một trong những nỗi sợ của tôi là việc tải lên mã nhị phân để hoàn tất đăng ký ứng dụng trong itunesconnect là ok (không cần phải sống như đã dạy http://blog.mugunthkumar.com/coding/iphone-tutorial-%E2%80%93-in-app-purchases/). Nó thực sự là ok. Hãy chắc chắn rằng "xóa để bán" là kiểm tra và trong biểu tượng là màu xanh lá cây (bạn cần một bước bổ sung để phê duyệt nó sau khi điền vào mẫu). Nỗi sợ khác là liệu tôi có thể sử dụng nhà phát triển tạm thời (không phân phối tạm thời) trong chế độ gỡ lỗi hay không, nó cũng thực sự ổn. Tôi hy vọng điều này có thể giúp một số bạn. Chúc may mắn và có niềm tin. Nó sẽ làm việc cuối cùng.

53

Nếu bạn vẫn đang nhận được id sản phẩm không hợp lệ, tôi đã tích lũy một danh sách kiểm tra của tất cả các nguyên nhân khác nhau:

http://troybrant.net/blog/2010/01/invalid-product-ids/

+12

Đáng ngạc nhiên, việc xóa ứng dụng khỏi thiết bị của tôi và cài đặt lại đã khắc phục sự cố. Cảm ơn Troy! –

+1

cũng làm việc cho tôi. cảm ơn cho danh sách chi tiết, troy! – taber

+0

Điều này cũng làm việc cho tôi. Điều này sẽ không xảy ra khi iap sống đúng không? Nó hiện đang trong sandbox. – marchinram

0

Một lưu ý cho người khác: không sử dụng một NSMutableSet cho các ID sản phẩm . Nó phải là một NSSet!

2

Tôi đã thử mọi thứ được đề xuất trong diễn đàn của Apple và tại đây và vẫn không thể làm cho nó hoạt động. Đã tìm thấy giải pháp - ứng dụng của bạn cần được Xcode chuyển cho hộp cát để được bật.

Rõ ràng, phải không? Vâng, nếu bạn đang làm việc với bản cập nhật cho một ứng dụng hiện có, thiết bị sẽ vẫn coi đó là ứng dụng được cài đặt trên App Store.

Vì vậy, hãy xóa ứng dụng khỏi thiết bị của bạn. Sau đó cài đặt ứng dụng trở lại thiết bị bằng cách sử dụng Build & Chạy với thiết bị của bạn được kết nối với máy Mac. Nó sẽ hoạt động ngay bây giờ :)

+0

Chạy Xcode 4.5, bạn không phải bận tâm với bất kỳ điều này cho đến khi nó hoạt động trong trình mô phỏng, mà nó sẽ phải. –

1

Một vấn đề khác mà tôi có là phải vào Window> Organizer trong Xcode và xóa ứng dụng của tôi và (các) provisioning profile và thêm lại provisioning provisioning profile của tôi. Tôi khởi động lại thiết bị và xcode như một biện pháp bổ sung.

0

Nếu bạn muốn giữ dữ liệu ứng dụng của mình nhưng bạn muốn thử xóa ứng dụng để khắc phục sự cố này, trước tiên hãy đồng bộ hóa thiết bị của bạn. Sau đó xóa ứng dụng của bạn và cài đặt lại từ Xcode - điều này đã khắc phục sự cố cho tôi. Sau khi hoạt động, bạn có thể khôi phục thiết bị của mình từ bản sao lưu - quá trình này chỉ mất vài phút và yêu cầu sản phẩm vẫn hoạt động sau khi khôi phục.

3

Thử đặt các thiết lập iphone và xóa các ứng dụng từ iphone và sử dụng id yêu cầu sản phẩm trực tiếp mà không có sự Bundle ID

+0

Điểm tốt - nếu đó là tiêu hao bạn phải tìm nạp id sản phẩm mà không có ID gói. Điều đó không đúng với hàng không tiêu dùng. Cám ơn vì cái này! –

1

Tôi đã thử tất cả các giải pháp mà có sẵn trên internet, và không có gì làm việc, hoàn toàn không có gì. Vấn đề của tôi: Thiết bị của tôi đã bị bẻ khóa và có Cydia trên đó.Tôi đã khôi phục thiết bị về mặc định của nhà máy (Không được bẻ khóa) và nó hoạt động lần đầu tiên và trả về ID sản phẩm không có vấn đề gì.

0

Không chắc chắn lý do tại sao, nhưng khi tôi thay đổi ID sản phẩm của yêu cầu từ 'com.mycompany.myapp.product' thành 'product', nó bắt đầu hoạt động. Có lẽ đó là vì tôi có sản phẩm được cấu hình trong iTunes Connect như thế nào.

Hãy thử, có thể làm việc cho một số bạn ...

+0

Đơn giản, id sản phẩm phải khớp chính xác với những gì bạn đã nhập trong iTunes Connect. Id gói không được tự động giới thiệu, bạn có thể chọn bao gồm hoặc không khi bạn tạo mua hàng trong ứng dụng – Dale

7

vấn đề của chúng tôi là điểm viên đạn cuối cùng từ FAQ của Apple, "Why are my product identifiers being returned in the invalidProductIdentifiers array?":

  • Bạn đã không hoàn thành tất cả các tài chính yêu cầu (xem phần "Hợp đồng, Thuế và Thông tin Ngân hàng" của tài liệu này).
  • Bạn không sử dụng ID ứng dụng rõ ràng.
  • Bạn không sử dụng Hồ sơ cấp phép được liên kết với ID ứng dụng rõ ràng của bạn.
  • Bạn không sử dụng mã nhận diện sản phẩm chính xác trong mã của mình. Xem kỹ thuật Q & A, QA1329, 'Trong số nhận dạng sản phẩm mua ứng dụng' để biết thêm thông tin về số nhận dạng sản phẩm.
  • Bạn không xóa các sản phẩm Mua trong ứng dụng của mình để bán trong iTunes Connect.
  • Bạn có thể đã sửa đổi các sản phẩm của mình, nhưng những thay đổi này chưa có sẵn cho tất cả các máy chủ của App Store.
  • Nếu bạn hoặc Xem xét ứng dụng từ chối nhị phân gần đây nhất của bạn trong iTunes Connect.

Tôi đã thay đổi phiên bản mới nhất (đã bị từ chối) thành "Đang chờ tải lên" bằng cách nhấp vào "Sẵn sàng tải lên nhị phân" trong iTunes Connect và sự cố đã được giải quyết sau khoảng 10 phút.

5

đó là OK mà điện thoại đã được jailbreak, bạn chỉ cần phải gỡ bỏ cài đặt appSync trong Cydia, sau đó nó hoạt động

+0

Cảm ơn! Điều này thực sự hiệu quả. – Shiki

+0

Lần thứ 6 tôi gặp vấn đề này và lần thứ 6 bài đăng chính xác này đã giúp ích. Thực sự nên đánh dấu trang này :-) – RyanTCB

+0

Cảm ơn bạn rất nhiều – icefox

0

thay thế:

NSSet *productList = [NSSet setWithObjects:id2, @"8", nil]; 

với:

NSSet *productList = [NSSet setWithObjects:@"8", nil]; 
0

Một vấn đề khác mà có thể. Nếu tên của dự án xCode của bạn không được viết bằng tiếng Anh hoặc có các ký tự khác trong đó, ID gói sẽ có "------" trong đó tên của ứng dụng của bạn phải là. Tôi nghĩ rằng nó chỉ là một quy ước cho id bó, để có điều này trong xCode. Hóa ra, đây là vấn đề của tôi, vì vậy hãy đặt tên cho dự án xCode của bạn bằng tiếng Anh) Tôi biết đây không phải là trường hợp nhiều nhất, nhưng dù sao)

0

Tôi đã thử mọi thứ mà mọi người đang nói đến. Tôi đã kết thúc việc tạo một tài khoản khách trước để xem liệu ID sản phẩm có thể được tìm thấy không .... Đó là. Vì vậy, sau đó tôi bắt đầu bỏ tất cả mọi thứ trong giám sát hoạt động và tìm thấy vấn đề. Tôi đã phải bỏ các quy trình "lưu trữ" bên dưới. Đột ngột, tôi đã ngừng nhận được ID sản phẩm không hợp lệ. Hy vọng rằng sẽ giúp một ai đó ra khỏi đó.

Quit these if you're getting the invalid product id null error

1

Đối với tôi, vấn đề là tôi đã chọn "Turn on lưu trữ nội dung" khi thiết lập việc mua In-App. Vì vậy, tôi phải tắt nó đi và vấn đề đã được giải quyết.

1

Trong trường hợp của tôi, tôi không hoàn thành thông tin ngân hàng, thông tin thuế và thông tin liên hệ. Khi tôi hoàn thành, tôi có thể nhận được productID của mình, hy vọng điều này sẽ giúp ai đó.

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