iphone - 취소해야 - 애플 구독 취소



인앱 구매를 확인하는 방법 자동 갱신 구독이 유효합니다. (3)

In App 구매를 사용하여 새로운 Auto Renewable 구독을 구현하려고하지만 사용자가 현재 구독 중인지 언제 또는 어떻게 확인할 지 확신 할 수 없습니다. 내 이해는 사용자가 처음에 구독 할 때 앱은 구독 날짜와 함께 구매 날짜를 사용하여 구독 기간이 얼마나 오래 지속될 수 있는지 계산할 수 있다는 것입니다. 이 날짜가 지나면 어떻게됩니까? 사용자가 자동 ​​갱신 또는 취소되었는지 어떻게 확인합니까?

restoreCompletedTransactions 를 사용하여 트랜잭션을 가져 오면 갱신 할 때마다 영수증을 restoreCompletedTransactions 사용자는 iTunes 비밀번호를 입력하라는 메시지가 표시됩니다. 즉, 7 일 구독을 구입 한 경우 구독이 유효한지 앱에서 확인할 때마다 7 일마다 암호를 입력해야합니다.

https://src-bin.com


Answer #1

Apple API를 호출하기 전에 로컬 솔루션을 사용하는 것이 좋습니다. 앱이 실행될 때마다 로컬 영수증의 유효성을 검사하는 것이 좋습니다. 사용자가 활성 구독을 가지고 있는지 확인해야하는 경우 먼저 현지 영수증에서 구매 항목을 검색하고 오늘 구매가 활성 상태인지 확인합니다 .

저는 Swift 로 작성된 작은 라이브러리를 구현하여 인앱 영수증을 사용하여 로컬에서 작업하는 것을 단순화했습니다. 영수증을 나타내는 객체 ( InAppReceipt )를 쉽게 가져올 수 있고 활성 구매 / 모든 구매를 검색 할 수 있습니다.

부담없이 사용하십시오. 기스 보 링크

다음은 문제를 해결하는 예입니다.

import TPInAppReceipt

do {
    let receipt = try InAppReceiptManager.shared.receipt()

    //retrive active auto renewable subscription for a specific product and date
    let purchase = receipt.activeAutoRenewableSubscriptionPurchases(ofProductIdentifier: "ProductName", forDate: Date())

    //retrive all auto renewable subscription purchases for a specific product
    let allAutoRenewableSubscriptionPurchases = receipt.purchases(ofProductIdentifier: "productName").filter({ return $0.isRenewableSubscription })
} catch {
    print(error)
}

Answer #2

문서의 경우 다음을 참조하십시오.

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/VerifyingStoreReceipts/VerifyingStoreReceipts.html#//apple_ref/doc/uid/TP40008267-CH104-SW1

웹 서버에서 확인하려는 경우 API에 ping을 보내면 자동 갱신 가입 상태 및 마지막 지불 정보가 반환됩니다.

당신이 장치에 있다면 아마도 암호를 묻는 restoreCompletedTransactions를 호출해야 할 것입니다.

나는 다른 어떤 방법도 보지 못한다. 장치에서 서버 측에서 사용 된 동일한 웹 서비스에 접속하여 구독을 확인할 수 있다고 생각합니까? 나는 그것의 장단점을 어떻게 알지 못한다.


Answer #3

이 문제와 관련된 캠페인을 시작합니다. 여기 내 관찰과 캠페인입니다 :

자동 갱신시 App Store는 paymentQueue 호출하고 트랜잭션을 게시합니다. 트랜잭션은 transaction.transactionState==SKPaymentTransactionStateRestored 와 함께 게시됩니다.

문제는 불행히도 하나의 기기에만 게시된다는 것입니다. 두 번째 장치는 게시하지 않습니다. 따라서 자동 갱신을 감지하거나 자동 갱신 기능이 부족하다는 것을 감지하고 장치에 지속적인 가입을 거부하려면 restoreCompletedTransaction 또는 "http http : // 64 비트 인코딩 JSON (마지막 트랜잭션 포함) 게시"를 수행해야합니다. 전자의 경우 사용자는 암호를 제공해야합니다. 당신이 위에서 지적한 것처럼 그것은 방해가됩니다. 후자의 경우 추가 코딩이 많이 필요합니다. 그래서, 내 질문은 ... 왜 StoreKit 명령을 가지고 있지 않습니다 :

(존재하지 않음) - [[SKPaymentQueue defaultQueue] restoreAttachedTransactions:(NSArray *)transactions];

이 명령은 restoreCompletedTransactions 처럼 흐르게되지만 연결된 트랜잭션 만 복원하며 가장 중요한 것은 사용자가 로그인 할 필요가 없다는 것입니다. 그것은 "마지막 트랜잭션을 포함하고있는 http로 64 비트 인 코드 된 JSON을 게시합니다"와 동일한 보안 보호 기능을 가지고 있으며 웹 포스팅 코드가 필요하지 않고 전체 App App 구매 프로세스를 StoreKit 에서 처리 할 수 ​​있습니다.

이것이 당신에게 의미가있는 경우, 이것을 Apple ....에게 가져 오는 방법을 제안하십시오.





subscription