問題タブ [rmstore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - iOS アプリ内購入 + Today Extension ウィジェット
そのため、(IAP 経由で) サブスクリプションが必要なアプリがあり、Today ウィジェットを提供しています。ウィジェット内 (およびアプリ内) で RMStore を使用して、バンドル内の App Receipt でアクティブなサブスクリプションを確認します。TestFlight 経由でインストールした場合を含め、サンドボックスで正常に動作します。しかし、今日、アプリは Apple によって承認され、実店舗バージョンをテストするとすぐに、メイン アプリはアプリの領収書でユーザーの購入を確認しましたが、Today 拡張機能はアプリの領収書を読み取っていませんでした。したがって、サブスクリプションが見つかりませんでした!
Today 拡張機能とメイン アプリの両方が、まったく同じコードを使用して、アプリの領収書を読み取り、サブスクリプション情報を探しています。いったいなぜ、メインアプリでは機能するのに拡張機能では機能しないのでしょうか? これは既知の問題ですか? StoreKit自体ではなく、RMStoreと関係がありますか? 私がしなければならない賢い/違うことはありますか?
問題はレシートの検証に関係しているのではないかと考えています。たとえば、拡張機能のサンドボックスと App Store では、バンドル識別子のようなものは異なりますか?
App Store に再提出せずに潜在的なソリューションをテストする方法は文字通り私にはありません。リリースされたらテストし、壊れている場合はストアから引っ張り出します。彼らが実際に得ていないもの。
ios - サンドボックス環境でサインインが 2 回求められる
アプリの新しいバージョンのアプリ内購入をテストしています。アプリ内購入コードは以前にテストされ、正常に機能していましたが、購入確認アラートの前に iTunes サインインが 2 回要求されます。ダブルサインイン後も問題なく動作し、アイテムを正しく購入できますが、少し気になります. 最近、サンドボックス サーバーで同様の問題が発生した人はいますか?
サーバーで実際のトランザクションの検証が行われることをさらに詳しく説明するために、クライアント側のデフォルトのダミー検証に RMStore を使用しています。実際には何もしませんが、productID がアプリの領収書に存在するかどうかを確認します。レシートに nil または productID が存在しません。アプリには自動更新サブスクリプションのみがあり、新しい購入をテストする前にアプリストアからログアウトします.
これは大まかに私のコードがどのように見えるかです:
ios - RMStore: 復元ダウンロードのキャンセル
アプリ内購入を管理するために RMStore を使用しており、iTunes Connect でコンテンツをホストしています。復元しようとするまではうまく機能しています。1 つの特定のダウンロードを復元するにはどうすればよいですか - すべてを復元することしかできないようで、ダウンロードするコンテンツがたくさんあります。また、キャンセルする方法があれば、一番欲しいダウンロードが終わったら、残りのダウンロードをキャンセルすることはできますか?
ios - RMStore または Apple API を使用して最後の領収書データを取得するにはどうすればよいですか?
アプリ内購入機能をテストしていて、領収書の検証手順で行き詰まりました。領収書の検証はカスタマイズされており、サーバー側で処理する (サーバー API を呼び出す) チェックの数に基づいており、それらの 1 つはトランザクション ID の一意性が支払いを確認するための条件です。したがって、RMStoreを使用して領収書を正常に取得し、 addPayment 関数は一意のトランザクションを成功ブロックに返します。その後、成功ブロック内でverifyTransactionを実行し、recipeURLを呼び出します。残念ながら、receiptURL を使用して常に同じレシートを取得しているように見えます。それをサーバーに送信すると、トランザクション ID が既に DB に存在し、トランザクション ID が一意ではないというエラーが返されます。このエラーは、新しい支払いを行っても同じ領収書を送信したことを示しています。私は消耗品を使用していることに注意してください。
誰かが私が以下に提供する機能の正しいワークフローを教えてくれますか(?):
- [RMStore productRequest] - init 関数で直接呼び出します。
- [RMStore addPayment] - 理解しなければならない結果の始まりです。
- [[[RMStore defaultStore].transactionPersistor consumerProductOfIdentifier:pID] -- この関数を呼び出す必要はありますか? Apple は私が支払うたびに一意の transactinID を送信してきますが、この関数を呼び出しても何の影響もありません。
- [[[RMStore] defaultStore].receiptVerificator verifyTransaction:transaction] -- トランザクション検証を呼び出す必要がありますか?
- [RMStore receiptURL] または [[NSBundle mainBundle] appStoreReceiptURL] -- recipationURL を取得するこれらの方法は同じですか? どちらも期待どおりに機能しません。
- [NSData dataWithContentOfURL:receiptURL] - これが私が経験している主な問題です。上で述べた関数の組み合わせでさまざまな試みを行った後、このメソッドは常に同じトランザクション ID を持つレシートを返します。これにより、最後の領収書を取得するために #5、#6 を実行する前にキャッシュを更新する必要があると思われますが、その方法は明確ではありません。
したがって、RMStore wiki は良さそうに見えますが、ライブラリを使用すると、内部で何が起こっているのかを完全には理解できない可能性が常にあると思います。残念ながら、RMStore については、Apple in app purchase API がどのように機能するかを調査する必要があります。これは、関数呼び出しの結果が提供される場合に解決できますが、どこにも見つかりません (!)
誰かが私が提供した機能のリストを見直して、購入後に最後のレシートを取得する際の問題を解決できるように、それらを正しい順序で配置するのを手伝ってもらえますか?
ios - 自動更新可能な IAP サブスクリプションのユーザー フローと領収書の更新
私はライブラリRMStoreを使用しています- ここに私が現在持っているものがあります。
1) 自動更新サブスクリプションを購入し、返された領収書を確認します。
2) アプリを起動するたびに、その日付のサブスクリプションが有効であることを確認し、有効な場合はプレミアム サービスを有効にします。
3) ユーザーが別のデバイスでアプリを起動した場合、レシートが存在する場合はそれを更新し、購入にアクティブなサブスクリプションがあるかどうかを確認することで、購入を復元できるようにします。
- ガイドからです。コードは次のとおりです。
私の質問:
- RMStore がサブスクリプションがアクティブかどうかを確認すると、no が返されることがあります。レシートを確認すると、レシートは正しく、自動更新されていないと想定しています。別のサブスクリプションを購入しようとすると、既にサブスクリプションしているというメッセージが itunes から表示されます。その後の起動時に、新しいレシートが表示されます。これは、起動時に領収書を更新する必要があることを示していますが、不要なユーザー名とパスワードのポップアップが表示されるため、更新したくありません。ここでのベストプラクティスは何ですか?
- 別のデバイスのサブスクリプションを正しい方法で復元していますか? サブスクリプションを復元するには、複数回の試行が必要な場合があります。
- サブスクリプションをサーバーに保存するために、記録を保持する以外に必要なことはありますか?
ios - 以前に購入したすべての製品 ID が RMStore で表示されるのはなぜですか?
RMStore
アプリの起動時に領収書の検証を行うために使用しています。iPhone で App Store にログインし、アプリで購入すると、すべて問題なく動作します。起動時にレシートの更新をテストすることにしたとき、App Store からログアウトすることにしました。アプリを起動すると、アプリのデリゲートに次のコードがあります (テスト目的のみ)。
次に、すべての製品 ID が存在することがわかります。
すべての がRMAppReceiptIAP
存在するのはなぜですか? 私はログインしていません。理論的には、RMStore は私について何も知らないはずです。元の購入者としてログインすると、これらRMAppReceiptIAP
はアプリの起動時にまだ存在しています。これは理にかなっています。最後に、アプリから製品を購入したことがないユーザーとして App Store にログインすると、RMAppReceiptIAP
は存在しません (これは良いことです)。しかし、アカウントから再度ログアウトしてアプリを再起動すると、 2回目はありませんRMAppReceiptIAP
。レシートが一時的にキャッシュされているようです。おそらく私はドキュメントで何かを見逃しましたか?RMAppReceiptIAP
購入者がログアウトした後でも が表示されるのに、新しいユーザーがログインして再度ログアウトした後には表示されない理由を説明できますか?
ありがとうございました
ios - iOS の RMStore でサブスクリプションの自動更新の通知を受け取る方法
私の iOS アプリでは、自動更新サブスクリプションを使用しました。クロスプラットフォームのソリューションが必要です。製品の購入に iOS の RMStoreを使用しています。
現在のシナリオでは、サーバーへの更新の有効期限よりも最新のレシートを取得didFinishLaunchingWithOptions
し、AppStore に対して検証しています。RMStoreAppReceiptVerifier
両方のプラットフォーム (iOS と Android) から常にサーバー データを更新します。そして iOS 側からは、アプリを起動するたびにレシートを確認する必要があります。支払いが更新されたときにプッシュ通知を受け取るのはいつですか? 可能であれば、その時点でサーバー データを更新しました
Q-1)新しい更新プロセスが完了したことを確認するにはどうすればよいですか?
Q-2)ユーザーが iTunes から自動更新サブスクリプションをキャンセルした場合、データベースを更新できるように通知するにはどうすればよいですか? ユーザーが更新したかどうかを確認するために期限切れのサブスクリプションをチェックするデーモンが必要ですか?
Q-3) iOS で。別のデバイスからログインした場合、別のデバイスからの受信を確認するにはどうすればよいですか?
サーバーデータベースを使用して、クロスプラットフォームで自動更新サブスクリプションを処理するにはどうすればよいか教えてください。誰かが私を助けてくれることを願っています。ありがとう!
ios - RMStore アプリ内購入 不明な製品 ID
アプリ内購入を自分のアプリで機能させるために 1 日中費やしましたが、それを機能させようとしても、RMStore から「不明な製品 ID」という応答が返ってきました。このリストのすべてを試しました: http://troybrant.net/blog/2010/01/invalid-product-ids/
私のコードは次のとおりです。
Itunes Connect - アプリ内購入:
Xcode - アプリ内購入機能
これを機能させる方法のアイデアが完全に尽きました。誰かアイデアはありますか? どんな助けでも大歓迎です。前もって感謝します。