2017-03-06 15 views
0

iOS用のXamarin.InAppPurchasesプラグインを使用しています。基本的に、InAppPurchaseManager.RestorePreviousPurchasesを呼び出すと、ユーザーがiTunesにログインしていない場合、ログインプロンプトが表示されません。私は分解を調べて、それが基本的にいくつかの小切手を実行していたことを確認してから、内部の復元購入を呼び出しました。私はこれに私のコードを変更しました。文字列名識別子の有無にかかわらずRestoreCompletedTransactionsを呼び出すことの意義を誰もが知っていますか?このように呼び出されると、プロンプトが表示されます。iOSでのXamarin.InAppPurchasesでの購入の復元

//Forced to call this in order to trigger login 
SKPaymentQueue.DefaultQueue.RestoreCompletedTransactions(); 

//Redundant, but I don't know the implications of removing it 
inAppPurchaseManager.RestorePreviousPurchases();    

ここでトップのコメントは、彼が同じ問題を抱えているようだ。 https://components.xamarin.com/view/xamarin.inapppurchase

EDIT--私はXamarinのバグだと思います。私はここにバグを投稿しました:Bugzilla 53100領収書APIの呼び出しを含む回避策を適用しました。すべての場合に機能するようです。

答えて

0

ここに私がバグを回避するための回避策があります。 applicationUsernameととせずにRestoreCompletedTransactionsを呼び出すことの意味について、私の質問については

//Forced to call this in order to trigger login 
//Get a receipt 
var receiptRequest = new SKReceiptRefreshRequest(); 
receiptRequest.Init(); 
receiptRequest.Delegate = new ReceiptRequestDelegate(inAppManager); 
receiptRequest.Start(); 

//Use this to trigger login 
public class ReceiptRequestDelegate : SKRequestDelegate 
{ 
    private InAppPurchaseManager inAppManager; 

    public ReceiptRequestDelegate(InAppPurchaseManager iapm) 
    { 
     inAppManager = iapm; 
    } 

    public override void RequestFinished(SKRequest request) 
    { 
     //Now call restore purchases 
     inAppManager.RestorePreviousPurchases(); 
    } 

    public override void RequestFailed(SKRequest request, NSError error) 
    { 
     //Handle request failed 
    } 
} 

、それはあなたがサーバー上に保存することができ、トランザクション内の情報の一部に影響すると思われます。それはあなたがローカルのユーザー名でユーザーを識別できるようにします。なぜなら、iTunesではiTunesアカウントにしか関連付けることができないからです。詳細はDetecting Irregular Activityでご覧いただけます。

関連する問題