2013-07-12 4 views
6

AppStore의 리뷰 작성자는 Non-renewing subscriptions 유형을 구매해야 등록 할 수 있습니다. 그는 또한 사용자가 등록 할 수 없다는 것을 의미합니다. Non-renewing subscriptions 유형등록하지 않고 갱신하지 않는 구독에 대한 거래를 복원하십시오.

Non-renewing subscriptions은 복원이 가능해야합니다. 그는 말했다 :

비 갱신 구독 및 소모품가 자동으로 저장 키트 복원 수 없습니다. 비 갱신 구독은 이어야합니다. 이러한 제품을 복원하려면 구입시 자신의 서버에 거래를 기록하고 해당 거래를 사용자의 장치에 복원하는 자체 메커니즘을 제공해야합니다. , 사용자 등록, 나는 사용자에게 고유 한 사용자 ID 줄 때

그래서 그는 자신의 이름과 암호를 사용하여 사용자 ID를 얻을 수 있습니다, 그래서 다른 IOS 장치에 대한 사용자의 정보를 공유 할 수 있습니다, 나는 트랜잭션을 복원 할 수 있습니다 고유 한 userId가 있기 때문입니다.

하지만 문제는 이것입니다. 사용자가 등록하지 않으면 내 서버에서도 고유 한 userId를 제공하고 비 등록 사용자는 userID를 .plist에 저장합니다. 또한 트랜잭션을 복원 할 수 있습니다. 그러나 그가 내 애플 리케이션을 삭제 한 다음 한 번 다운로드하면 userId가 손실되어 트랜잭션을 복원 할 수 없습니다. 그는 정상적인 기본 사용자가됩니다.

은 앱 스토어가 이유도없이 내 응용 프로그램을 거부 하는가 :

앱 스토어가 거부 할 경우 응용 프로그램을 삭제 등록없이 구독을 비는-갱신에 대한 거래 전에

을 복원 복원 할 수 없습니다, 그것을 고치는 법, 모두.

+0

나는 userId를 사용자에게 주거나 .plist에 저장한다는 아이디어에 관심이 있습니다. 악의적 인 사용자가이 userId를 온라인으로 게시하면 어떻게됩니까? 네 보안을 깨뜨릴거야, 네? (.plist 정보는 iExplorer와 같은 프로그램을 통해 사용할 수 있습니다.) –

+0

@ChrisPrince 그는 userId를 온라인으로 게시 할 수 있지만 Google 서버에는 거래 목록이 있습니다. 하나의 구독 (사용되지 않음)은 한 번만 성공적으로 복원 할 수 있습니다. 다른 사람에게 글을 올리면 다른 사람이 성공적으로 복원 할 수 있으며 복원 할 수 없습니다. 그래서 그건 내 안보를 깨뜨리지 않을거야. –

+0

@ChrisPrince 참고 : 거래가 중요합니다. UserId는 누구에게만 복원을 의미합니다. 일부 해커는 거래를 도용 한 다음 거래를 다른 사용자에게 판매합니다. –

답변

4

내 앱을 appStore에 제출했습니다.

등록 또는 로그인 한 비 갱신 구독의 트랜잭션을 복원합니다.

"등록"하고 "내 응용 프로그램 삭제"를하지 않는 갱신되지 않은 구독에 대해서는 트랜잭션을 복원하지 않습니다.

내 응용 프로그램은

+0

즉, iCloud가 로그인되지 않은 경우 구입을 복원하지 않는 앱을 ​​수락 할 수도 있습니다. 어떻게 생각해? – hasan83

+0

@hasan 내 앱이 iOS4.3 이상을 지원하므로 iCloud가 없습니다. 그리고 '등록하지 않고 비 갱신 구독에 대한 트랜잭션을 복원하는 완벽한 방법을 찾지 못했습니다. 복원 전에 앱을 삭제하십시오.'로그인 사용자의 트랜잭션을 복원하고 내 앱을 삭제하지 않은 게스트에 대한 트랜잭션을 복원합니다. –

+0

알아두면 좋을 것 . 내 앱과 비슷한 전략을 따르고 있지만 아직 제출하지 않았습니다. –

1
  • 등록이 비 재생 인앱 항목에 대한 선택해야 승인됩니다.
  • 여러 장치에서 사용하려면 등록하고 로그인해야한다는 메시지를 사용자에게 제공 할 수 있습니다.
  • 등록하는 동안 전자 메일 및 모바일과 같은 개인 정보는 선택 사항이 아니므로 전자 메일을 등록 상태로 유지하는 이유 (예 : 암호 복구)를 구체적으로 설명해야합니다.
  • 이전 의견과 마찬가지로 재생할 수없는 항목의 인앱 가격이 비싸지 않은 경우 신청서를 수락 할 수 있습니다. 그러나 inapp가 값 비싸면, 당신은 그들의 규칙을 어기는 것을 허용하지 않을 것입니다.

참고 : UUID를 사용하고 키 체인에 저장하는 메커니즘을 사용할 수 있습니다.응용 프로그램을 다시 설치하면 키 체인에서 다시 가져올 수 있으며 동일한 UUID를 사용하면 서버에서 만료를 관리 할 수 ​​있습니다.

1

애플은 구매 데이터를 유지하기 위해 아이 클라우드를 사용 나왔다 :

#if USE_ICLOUD_STORAGE 
NSUbiquitousKeyValueStore *storage = [NSUbiquitousKeyValueStore defaultStore]; 
#else 
NSUserDefaults *storage = [NSUserDefaults standardUserDefaults]; 
#endif 

NSData *newReceipt = transaction.transactionReceipt; 
NSArray *savedReceipts = [storage arrayForKey:@"receipts"]; 
if (!receipts) { 
    // Storing the first receipt 
    [storage setObject:@[newReceipt] forKey:@"receipts"]; 
} else { 
    // Adding another receipt 
    NSArray *updatedReceipts = [savedReceipts arrayByAddingObject:newReceipt]; 
    [storage setObject:updatedReceipts forKey:@"receipts"]; 
} 

[storage synchronize]; 

는 적어도 사용자가 응용 프로그램을 삭제하는 경우, 구매 정보를 버리는 것보다 낫다. 고객이 서비스에 대해 두 번 지불하게하는 것은 훌륭한 사용자 경험이 아닙니다.

+0

transactionReceipt는 더 이상 사용되지 않습니다. – user965972

관련 문제