iPhone في شراء التطبيق - الاستجابة. المنتجات لا تزال فارغة؟

StackOverflow https://stackoverflow.com/questions/2138972

سؤال

في الأساس ، حاولت الإعداد في عمليات شراء التطبيقات على تطبيق اختبار قبل تنفيذها في تطبيق مناسب تعمل عليه شركتي. لقد قرأت مجموعة Store Kit PDF وغيرها من القصاصات حوالي 1000 مرة ، ولكن لا يزال يتم إرجاع المنتجات على أنها فارغة. هذا بالضبط ما فعلته حتى الآن:

إعداد تطبيق الاختبار وفي عناصر اختبار شراء التطبيق
لقد قمت بإنشاء معرف تطبيق جديد لـ "اختبار تطبيق واحد" على بوابة مطور شركتي في مركز iPhone Dev. لقد تأكدت من أن البادئة كانت com.mycompany.testappone للتأكد من أنه يمكن تكوين عمليات شراء التطبيق. البقاء في قسم معرفات التطبيق ، قمت بتكوينه في عمليات شراء التطبيقات عن طريق وضع علامة على خيار "تمكين شراء التطبيق".

لقد قمت بإنشاء "اختبار تطبيق One" في iTunes Connect وأكملت الإجراء المعتاد ، لكنني تم اختياره "تحميل ثنائي لاحقًا" ولم يقدم للمراجعة لأن التطبيق لا يفعل شيئًا. بالتأكيد لا يتعين علينا إرسال التطبيق لمراجعة هذا للعمل؟! ثم قمت بالنقر فوق إدارة في عمليات شراء التطبيقات وإنشاء واحدة جديدة مع معرف المنتج "Test1" واعتدت عليه بحيث يتم مسحه للبيع.

شفرة
قمت بإعداد مشروع جديد في Xcode يسمى TestAppOne وهنا الفصولان الوحيدتان اللتين أستخدمهما الآن:

TestAppOneAppDelegate.H:

#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>  

@interface TestAppOneAppDelegate : NSObject <UIApplicationDelegate, SKRequestDelegate, SKProductsRequestDelegate> {
    UIWindow *window;
}

TestAppOnedElegate.M:

#import "TestAppOneAppDelegate.h"

static NSString *kMyFeatureIdentifier1 = @"com.mycompany.testappone.test1";

@implementation TestAppOneAppDelegate
@synthesize window;

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
 if([SKPaymentQueue canMakePayments]) {
  NSLog(@"IN-APP:can make payments");
 }
 else {
  NSLog(@"IN-APP:can't make payments");
 }

 [self requestProductData];
 [window makeKeyAndVisible]; 
}

- (void)requestProductData {
 NSLog(@"IN-APP:requestProductData");
 SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject:kMyFeatureIdentifier1]];
 request.delegate = self; 
 [request start];
 NSLog(@"IN-APP:requestProductData END");  
} 

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
 NSLog(@"IN-APP:productsRequest");
 NSArray *myProduct = response.products;
 NSLog(@"IN-APP:array count: %i", [myProduct count]);
 [request autorelease];
 NSLog(@"IN-APP:productsRequest END"); 
}

- (void)dealloc {
    [window release];
    [super dealloc];
}

@end

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

IN-APP:can make payments
IN-APP:requestProductData
IN-APP:requestProductData END
IN-APP:productsRequest
IN-APP:array count: 0
IN-APP:productsRequest END

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

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

المحلول

في الواقع أعتقد أنه يجب عليك تقديم الثنائي لهذا العمل.

يمكنك ضبط تاريخ الإصدار على المستقبل البعيد.

نصائح أخرى

هناك خطوة مهمة أخرى يتم تجاهلها غالبًا وهي أنك تحتاج إلى التأكد من أن لديك إعداد عقد تطبيقات iOS المدفوعة والذي يقع في إطار قسم "العقود والضرائب والخدمات المصرفية" من iTunes Connect. أولاً عليك النقر فوق زر الطلب ، ثم عليك النقر فوق أزرار الإعداد الثلاثة (معلومات الاتصال ، معلومات البنك ، معلومات ضريبية)

تحقق مما إذا كان هناك معرف منتج غير صالح.

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {

for (NSString *invalidProductId in response.invalidProductIdentifiers)
    {
        NSLog(@"Invalid product id: %@" , invalidProductId);
    }
}

إذا كان هناك معرفات المنتج غير صالحة ، فزيارة http://troybrant.net/blog/2010/01/invalid-product-ids/

إنها قائمة فحص شاملة للغاية لهذه المشكلة.

تحقق مما إذا كان معرف الحزمة الخاص بك (على سبيل المثال com.company.appname) في Xcode يتطابق مع واحد في iTunes Connect.

ليس عليك تقديم الثنائي حتى يعمل.

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

لا حاجة إلى تحميل الثنائي ، أو الانتظار لساعات بعد إنشاء عملية الشراء داخل التطبيق في iTunes Connect.

بفضل إجابة Alpere اكتشفت أنني استخدمت معرف المنتج الخاطئ. كانت ليس كما اعتقدت de.company.appname.PROFESSIONAL_LICENSE. فقط باستخدام PROFESSIONAL_LICENSE في حالتي (بدون قيادة أشياء معرف الحزمة) تعمل :)

لا حاجة إلى تحميل ثنائي لاختبار صندوق الرمل من inapppurchase. عليك فقط إضافة عنصر inapppurchase في itunesconnect ووضعه في حالة "جاهزة للإرسال" (يجب) الحالة فقط. إذا قمت بإرساله للمراجعة ، فسوف يعطي دائمًا استجابة OU.

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

في حالتي ، كان السبب هو استضافة المحتوى بواسطة Apple تم تشغيله عن طريق الخطأ. كان المنتج متاحًا فقط عند إيقافه

في حالتي (MACOS) كنت أقوم بإنشاء تطبيق اختبار (مع نفس معرف الحزمة للتطبيق الرئيسي). بدأت SkfetchRequest بإعادة معرفات المنتج لتطبيق الاختبار فقط بعد تعيين اسم الحزمة (الاسم الثنائي) كما هو الحال في التطبيق الأصلي.

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