2013-04-29 2 views
0

세 가지 앱에서 앱을 구매했습니다. 첫 번째 작품은 1 년 넘게 정상적으로 작동합니다. 이 루틴을 가지고 :가끔씩 앱 구매시 충돌이 발생합니다.

-(void)purchaseProUpgrade{ 
    SKPayment *payment = [SKPayment paymentWithProductIdentifier: inAppProductId]; 

    if ([SKPaymentQueue canMakePayments]) [[SKPaymentQueue defaultQueue] addPayment:payment]; 
    else [self purchaseFailedWithError:nil]; 
} 

하지만 paymentWithProductIdentifier가 상각되었습니다. 그래서 다음 두 개의 응용 프로그램에서 나는 (나머지 코드가 동일)이 변경 :

"upgradeProduct는"

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{ 
    NSArray *products = response.products; 
    if([products count]>0) self.upgradeProduct = products[0]; 

    // the user is warned if upgradeProduct not is set 
} 

// upgradeProduct is declared as Strong and I am using ARC. 

이 경우에도 샌드 박스에 잘 작동에 의해 설정된다

-(void)purchaseProUpgrade{ 
SKPayment *payment =[SKPayment paymentWithProduct: self.upgradeProduct]; 

    if ([SKPaymentQueue canMakePayments]) [[SKPaymentQueue defaultQueue] addPayment:payment]; 
    else [self purchaseFailedWithError:nil]; 
} 

내가 구매 점보기로 앞뒤로 점프하여 그것을 자극하려고, 구매 등을 취소합니다. 만약 내가 애플 리케이션 스토어에서 내 애플 리케이션을 구입하면 작동합니다. 나는 또한 판매 등록이 있기 때문에 사용자의 대다수를 위해 일하는 것처럼 보인다.

그러나 [SKPaymentQueue defaultQueue] addPayment : payment]에 '잘못된 제품 식별자 : (null)'이 (가) 충돌했다는보고가 거의 매일 발생합니다. 사람들이 추락하여 한 번에 앱을 다시 시작한 후 다시 구매하려고 시도하고 추락 한 것으로 보이는 경우도 있습니다.

모든 의견을 환영합니다. Github에서의 샘플이

답변