문제

나는 iPhone에서 앱 구매를 테스트하고 "didrecieveresponse"방법에서 유효하지 않은 제품 ID로 나에게 반환하기 위해 제품 ID를 요청하는 문제를 해결하려고합니다.

나는 가지고있다:

  • 이 앱과 관련된 상점 제품을 만들었습니다. 번들 ID는 다른 모든 것과 일치합니다. 판매를 위해 청산되고 개발자가 승인했습니다.
  • 내 새 프로비저닝 프로필이 상점에 앱 구매가 활성화되어 있는지 확인하고 전체 앱 이름 인 "com.domain.appname"
  • 이것이 앱에 내 iPhone에 서명하는 데 사용되는 프로비저닝 프로필인지 확인했습니다.
  • "com.domain.appname"이 프로비저닝 프로파일을 작성하는 데 사용되는 앱 ID인지 확인하십시오.
  • "com.domain.appname"이 내 plist 파일에서 번들 식별자로 사용되는지 확인하십시오.

모든 것이 제자리에있는 것처럼 보이지만 여전히 제품이 유효하지 않은 ID로 나에게 반환됩니다.

이것은 내가 사용하는 코드입니다.


- (void)requestProductData {
   SKProductRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject: @"com.domain.appname.productid"]];
   request.delegate = self;
   [request start];
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
   NSArray *myProducts = response.products;
   NSArray *myInvalidProducts = response.invalidProductIdentifiers;

   for(int i = 1; i < myInvalidProducts.count; ++i)
   {
      std::cout <<"invalid product id = " << [[myInvalidProducts objectAtIndex:i] UTF8String] << std::endl;
   }

   for(int i = 0; i  < myProducts.count; ++i)
   {
      SKProduct * myProduct = [myProducts objectAtIndex:i];
      std::cout << "Product Info:"  << std::endl;
      std::cout << "\tlocalizedTitle         = "  << [[myProduct localizedTitle] UTF8String]  << std::endl;
      std::cout << "\tlocalizedDescription   = "  << [[myProduct localizedDescription] UTF8String]  << std::endl;
      std::cout << "\tproductIdentifier      = "  << [[myProduct productIdentifier] UTF8String]  << std::endl;
      std::cout << "\tprice                  = "  << [[myProduct price] doubleValue]  << std::endl;
      std::cout << "\tpriceLocale            = "  << [myProduct priceLocale]  << std::endl;
   }

   [request autorelease];
}

내 모든 제품 ID는 유효하지 않은 인쇄물에 표시되며 그 중 어느 것도 "제품 정보 :"인쇄물에 표시되지 않습니다.

어떤 제안도 대단히 감사하겠습니다 ...

PS 예, 이것은 목표 C/C ++로 제작되었습니다.

도움이 되었습니까?

해결책 7

좋아, 그래서 내가 생각하고 모든 포럼을 생각하고 읽을 수있는 모든 일을 한 후에는 다음과 같습니다.

모든 것을 다시 묶습니다.

  1. Xcode Organizer에서 모든 프로비저닝 프로파일을 제거하십시오.
  2. Xcode를 닫습니다.
  3. 새 앱 ID를 만듭니다.
  4. 새로운 앱 ID로 새 프로비저닝 프로필을 만듭니다.
  5. 새로운 앱 ID를 사용하여 새 배포 프로비저닝 프로파일을 만듭니다.
  6. iTunes Connect에서 새 앱을 만듭니다
  7. Xcode를 시작하고 두 개의 새로운 프로비저닝 프로파일을 설치하십시오. 일치하도록 Yoru 번들 ID를 업데이트하십시오. 또한 번들 ID를 반영하도록 앱 요청이 업데이트되는 ID 문자열을 확인하십시오.
  8. 새로운 배포 프로비저닝 프로파일을 사용하여 분배 모드로 프로젝트를 구축하십시오.
  9. 새 바이너리를 업로드하십시오. (거부되지 않은 채로 두십시오)
  10. 테스트 인앱 구매를 설정하십시오.
  11. 새로운 프로비저닝 프로파일로 디버그 모드로 프로젝트를 구축하십시오.
  12. 테스트 요청.

이것이 내 가게를 작동시키는 데 필요한 것입니다. 가장 좋은 추측은 Apple Back End 서버가 때때로 망쳐지고 처음부터 시작해야한다는 것입니다.

이것이 모두에게 도움이되기를 바랍니다!

다른 팁

나는 Apple 포럼과 여기에서 제안 된 모든 것을 시도했지만 여전히 작동 할 수 없었습니다. 솔루션을 찾았습니다. 샌드 박스를 활성화하려면 Xcode에 의해 앱을 전송해야합니다.

분명 해요? 기존 계정에 대한 업데이트로 작업하는 경우 장치는 여전히 App Store 설치 앱으로 취급됩니다.

삭제 한 다음 다시 전송하십시오. 지금은 작동해야합니다 :)

iPhone 테스트에서 앱을 삭제하고 다시 설치했습니다. 또한 인앱 구매 품목을 제출 한 지 8 시간도 기다렸습니다.

아래 단계를 살펴보십시오.

  1. 개발자 계정을 사용하여 iTunes에 로그인합니다 (https://itunesconnect.apple.com/webobjects/itunesconnect.woa/wo/).

  2. 탭으로 이동 - "계약, 세금 및 은행"

  3. 프로세스 섹션에서 요청 계약 및 계약을 확인하십시오.

  4. 확인하십시오 "iOS 유료 응용 프로그램" 그리고 연락처 정보, 은행 정보 및 세금 정보를 설정해야합니다.

  5. "iOS 유료 응용 프로그램"셀이 효과의 계약 섹션으로 이동하면 앱 구매 중에 제품을 사용할 수 있습니다.

자세한 내용은 아래 링크를 살펴보십시오.http://developer.apple.com/library/ios/#technotes/tn2259/_index.html

iPhone이 감옥에있을 때는 주목하십시오 appsync 패킷이 끊어집니다 APP-PURCHASING TESTING.AppSync는 종속성으로 install0us와 함께 설치됩니다.

iOS를 완전히 복원 할 필요가 없습니다. Cydia에서 AppSync를 제거하여 성공한 구매를 테스트합니다..

모든 포럼, 튜토리얼 및 Fixind 'Invalid Product'에 대한 의견의 모든 팁은 AppSync를 제거 할 때까지 저에게 효과가 없었습니다.

나는 새로운 앱 (v1.0은 아직 매장에서 출시되지 않음)과 비슷한 문제를 겪고 있습니다. 나는 모든 것을 설정하고, 제품을 추가했습니다.

Apple 개발자 포럼에서 접선 관련 게시물을 보았을 때 전체 프로세스를 포기하려고했습니다. 테스트 장치에서 앱을 삭제하고 새로운 빌드+설치를 제안했습니다. 그것은 속임수를했다.

확실히, 나는 나에게 같은 문제를주는 다른 장치에서 시도해 보았고 거기에서도 그것을 고쳤다.

단지 추측 일뿐 만 아니라 IAP를 추가하기 전에 생성 된 프로비저닝 프로파일로 장치에 빌드가있는 경우 IAP 프로파일을 사용하여 해당 빌드를 제거하고 신선한 빌드에 넣어야한다고 생각합니다. (즉, 단순히 앱을 제자리에 교체하는 것은 트릭을 수행하지 않습니다.)

코드에 아무런 문제가 없다면, 언젠가는 유효하지 않은 제품을 반환해야합니다. 왜냐하면 변경 정보를 위해 10 시간이 넘는 시간이 필요할 수 있기 때문입니다. 발효. 또는 장치에 뭔가 잘못된 것이 남아 있기 때문에 유효하지 않으므로 앱을 삭제하여 다시 한 번 시도하고 다시 빌드 할 수 있습니다. 내 경험으로, 그것이 도움이되기를 바랍니다.

IAP에 대한 iTunes Connect 인터페이스가 최근에 업데이트되어 유효하지 않은 다음을 유발할 수 있습니다 : <Product ID> 오류.

이제 iTunes Connect에 IAP를 USD 0으로 기본값을 설정하지 않고도 IAP를 추가 할 수 있으며 해당 항목을 저장할 수 있습니다.

이전 버전의 UI는 가격 필드를 미리 편집하지 않으면 저장을 누를 때 불만을 제기합니다.

이 필드를 완전히 놓치는 것은 매우 쉽고 iOS 호출을 통해 해당 제품 ID를 사용하여 정보를 얻으려고 시도하면 <product id>가 USD 0에서 가격이 책정 된 것을 발견하지 않고 유효하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top