سؤال

قمت بإنشاء حساب اختبار للتحقق من مشتريات التطبيق. يمكنني الشراء وكان الشراء ناجحًا. بعد ذلك وجدت خطأ في التنقل. لقد أصلحت خطأ ، أنشأت حسابًا آخر وحذفت الحساب الذي قمت بتسجيل الدخول في الجلسة السابقة. الآن لا يمكنني اختبار مشتريات التطبيق في App بعد الآن ، لأن متجر التطبيقات يسجلني تلقائيًا باستخدام حساب Ghost الذي لا يوجد بالفعل. لقد طُلب مني إدخال كلمة مرور فقط على الرغم من أنه قبل كل جلسة تصحيح ، أقوم بتسجيل الخروج من المتجر في الإعدادات وحذف الإصدار السابق من التطبيق. كيف يمكنني إعادة ضبط هذا؟

شكرًا،

نافا

هل كانت مفيدة؟

المحلول

أعلم أن هذا موضوع قديم ، لكنني واجهت صعوبة في العثور على حل وتجاوزت بعض التجربة والخطأ حتى اكتشفت حلًا ، لذا اعتقدت أنني سأشاركه هنا لأنني لم أتمكن من العثور عليه في أي مكان آخر.

أولاً ، تأكد بعد كل معاملة تسميها:

    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

ما حدث في حالتي هو أنه لم يتم الانتهاء من المعاملة وبقيت في قائمة الانتظار ، لذلك حتى عندما تحولت إلى حساب مختلف من الرمل ، فإنها لا تزال تستمر في طلب كلمة مرور حسابي القديم.

لإصلاحه أضفت:

SKPaymentQueue *queue = [SKPaymentQueue defaultQueue];
for (SKPaymentTransaction *transaction in queue.transactions) {
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}

قبل أن أضيف مراقب المعاملة ، أي هذا:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

أيضا ، في

(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

الوظيفة ، أضفت هذا السطر من الكود:

[queue finishTransaction:transaction];

في حالات SkpaymentTransactionStactioned و SkpaymentTransactionStateFailed من بيان التبديل. لا تضيفها إلى الحالة التي تم شراؤها لأنه لا يُسمح لك بالاتصال بالإنهاء على ما أعرفه.

لست متأكدًا من أي من الخطوتين أعلاه إصلاح الخطأ لأنه استمر حتى قمت بتسجيل الخروج من جهاز iPhone الخاص بي ، وحذف التطبيق ، وقام بتشغيله ، وقامت بإعادة بناء/تثبيت نظيفة توقفت أخيرًا عن طلب كلمة المرور إلى كلمة المرور حساب التنصت. أمل أن هذا يساعد شخصاما.

تحرير: (11/12/15)

لذلك اكتشفت سبب كسر حسابات صندوق الرمل. لقد حدث ذلك بعد استعادة عمليات الشراء ، ثم ضرب مفتاح المنزل ، وإعادة فتح وضرب زر الاستعادة مرة أخرى مما تسبب في حادث تحطم. بقي الاستعادة في قائمة الانتظار وكانت العملية أعلاه هي الطريقة الوحيدة للخروج من النوافذ المنبثقة التي تطلب كلمة المرور.

من أجل إيقاف ذلك ، أضفت:

[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];

إلى By Teardown Function (التي يطلق عليها ApplicationDidentErbackground :) من وحدة التحكم الرئيسية الخاصة بي قبل أن أقوم بإجراء كائن مدير الشراء داخل التطبيق. أعتقد أن ما كان يحدث هو أنني أضفت الكائن كمراقب للمعاملات أكثر من مرة وكان يسبب السلوك الغريب. من مظهره ، يبدو أن هذا قد حدد المشكلة تمامًا لأنني لم أتمكن من إعادة إنشاء الخطأ مرة أخرى.

نصائح أخرى

كان لي نفس المشكلة. هذا ما حل مشكلتي:

  1. الإعدادات -> إعادة تعيين -> إعادة تعيين جميع الإعدادات
  2. الإعدادات -> iTunes & App Store -> تسجيل الخروج
  3. حذف التطبيق
  4. أعد تشغيل التطبيق من Xcode

تحديث: أدركت أن المشكلة لم يكن لدي هذا الخط في الكود الخاص بي:

[[SKPaymentQueue defaultQueue] finishTransaction:tran];

هذا يعني أن معاملتي القديمة لم تكتمل ، وكان iPhone يحاول وضع اللمسات الأخيرة على المعاملات القديمة التي حدثت من قبل. عندما أضفت هذا السطر إلى الكود الخاص بي ، لم يعد طلب كلمة مرور المستخدم القديم يحدث بعد الآن.

لذلك تقصد أنه حتى إذا ذهبت إلى تطبيق الإعدادات -> المتجر -> تسجيل الخروج ، فلا يزال بإمكانك الحصول على اسم المستخدم من حساب الاختبار السابق؟ هل حاولت أيضًا حذف التطبيق من جهازك؟ التي أصلحت قضية مماثلة بالنسبة لي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top