اصل ماجرا
نویسنده اولین برنامه iOS خود را دو بار بهدلیل عدم تطابق برچسبهای حریمخصوصی و متن قرارداد رد شد. پس از بررسی ساختار .ipa و متادیتای App Store Connect، اسکریپتی نوشت که مواردی مثل توصیفهای Usage خالی، عدم وجود PrivacyInfo.xcprivacy و عدم تطابق دادههای جمعآوریشده SDK را شناسایی میکند. این اسکریپت را در یک برنامه macOS به نام Cleared بسته و بهصورت محلی اجرا میکند تا قبل از ارسال برنامه، ردهای پیشبینیپذیر را حذف کند.
متن کامل ترجمهشده
کد هیچ گاه مشکل نبود. بررسی App Store بود. من اولین اپلیکیشن iOS ام را ارسال کردم - یک پیگیری کودک کوچک - و دو بار رد شد. نه برای خطاها. نه برای سقوط. برای چیزهایی که به معنای واقعی نمی توانستم ببینم: یک عدم هماهنگی با برچسب های حفظ حریم خصوصی که من نمی دانستم وجود داشت، و EULA / کلمه پرداخت که جایی نبود که اپل آن را می خواست. هر رد کردن به معنای یک 24-48 ساعت صبر، یک اصلاح، یک ارسال دوباره، و یک دیگر انتظار. بخش ناخوشایند چیزی نبود که رد کردن. این بود که هر دلیل در ساخت من و اپلیکیشن فروشگاه من متناوب شده بود تمام وقت. هیچ چیز فقط آنها را متصل می کند و به شما می گوید “آیا، این به ناخوشایند خواهد شد.” بنابراین من شروع به کشیدن ساخت های خود را جدا برایاگر شما با Xcode ایجاد می کنید، .xcarchive در ~/Library/Developer/Xcode/Archives دارای همان .app bundle تحت محصولات/Applications/ - و آن را وجود دارد قبل از شما صادرات یک .ipa، بنابراین شما می توانید آن را قبل از بررسی. Reading Info.plist (این دوگانه است) یک gotcha مشترک: Info.plist داخل یک ساخت ارسال شده معمولا در فرمت دوگانه است، نه XML. در Swift, PropertyListSerialization هر دو را به صورت شفاف پردازش می کند: اجازه plistURL = appURL.appendingPathComponent(“Info.plist”) اجازه دهید داده ها = Data(ContentsOf: plistURL) اجازه دهید اطلاعات = tryPropertyListSerialization .propertyList(from: داده، فرمت:با توجه به این که می دانم که در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر در حال حاضر.به عنوان مثال، اگر شما می توانید از یک سیستم عامل استفاده کنید، شما می توانید از یک سیستم عامل استفاده کنید و از یک سیستم عامل استفاده کنید و از یک سیستم عامل استفاده کنید و از یک سیستم عامل استفاده کنید و از یک سیستم عامل استفاده کنید و از یک سیستم عامل استفاده کنید و از یک سیستم عامل استفاده کنید و از یک سیستم عامل استفاده کنید و از یک سیستم عامل استفاده کنید و از یک سیستم عامل استفاده کنید و از یک سیستم عامل استفاده کنید و از یک سیستم عامل استفاده کنید و از یک سیستم عامل استفاده کنید.String } // -> [“NSPrivacyCollectedDataTypePurchaseHistory”] اگر این نوع داده توسط SDK در باینری شما جمع آوری می شود اما از برچسب های حریم خصوصی App خود در App Store Connect (که شما می توانید از طریق API App Store Connect بخوانید، فقط بخوانید) می توانید بخوانید، این یک ردیابی فوری دستورالعمل 5.1.1 است - و یکی که شما هرگز به چشم نمی کشید. این ردیابی تمام بازی است. Deterministic vs فردی یک تفاوت صادقانه من مجبور بودم انجام دهم: همه ردیابی ها از تجزیه و تحلیل استاتیک قابل مشاهده نیستند. - Deterministic (به طور دائم قابل مشاهده است): ردیابی حریم خصوصی، داده های SDK غیر اعلام شده، زنجیره های استفاده خالی، اطمینان صادرات، ردیابی متغیر داده ها” من این را به یک ابزار بسته کردم و تمام اینها را به یک برنامه کوچک متولد macOS نامیده شده Cleared تبدیل کردم – شما در یک ساخت و ساز وارد می شوید، آن را به صورت محلی تجزیه می کنید، این است که اکثر ردیابی های App Store Connect فقط برای خواندن قابل پیش بینی هستند و شما همه دلایل ردیابی منحصر به فردی را قبل از ارسال شما نشان می دهید. آن را به طور کامل در دستگاه اجرا می کند (نظرات AI نیز - هیچ کلید، هیچ چیز از Mac شما را ترک نمی کند). اما صادقانه، نقطه این پست ابزار نیست. این است که اکثر ردیابی های App Store قابل پیش بینی هستند و شما در حال حاضر همه چیز را که شما نیاز به آنها را به دست می دهید - آن را در .ipa خود شما در حال حاضر است. اگر شما برنامه های iOS را ارسال کنید: چه ردیابی است که شما را بیشتر از
چرا مهمه؟
قبل از این ابزار، عدم تطابق برچسبهای حریمخصوصی یا متن قرارداد باعث رد برنامه و انتظار ۲۴ تا ۴۸ ساعت میشد. توسعهدهندگان iOS که از SDKهای شخص ثالث استفاده میکنند یا متادیتای App Store Connect را تنظیم میکنند، مستقیماً تحت تأثیر این مشکل قرار میگیرند. با استفاده از ابزار پیشنگری، میتوان این ردهای زمانبر را پیش از ارسال شناسایی و رفع کرد، بنابراین زمان انتشار سریعتر و هزینههای ناشی از تکرار ارسال کاهش مییابد.
به درد کی میخوره؟
• توسعهدهندگان iOS • تیمهای QA و انتشار برنامه • مدیران محصول موبایل • شرکتهای استارتاپی که اولین برنامه خود را منتشر میکنند
تو عمل چی کار کنیم؟
خواننده میتواند با دانلود Cleared یا اجرای اسکریپتهای ارائهشده، ساختار .ipa خود را بررسی کرده و موارد ناقص یا ناسازگار با متادیتای App Store Connect را پیش از ارسال شناسایی کند. این کار باعث میشود زمان انتظار برای ردهای پیشبینیپذیر حذف شود و برنامه زودتر در فروشگاه منتشر شود.
نظر Blue IT News
پیشنهاد میکنیم قبل از هر بار ارسال برنامه، یک بار کل بسته .ipa را با ابزارهای محلی اسکن کنید؛ این کار هزینههای زمان و انرژی ناشی از ردهای تکراری را بهطور چشمگیری کاهش میدهد.
این صفحه ترجمه و تفسیر کاملی از گزارش اصلی Dev است که توسط تیم تحریریه بلو آی تی نیوز به فارسی ترجمه و تحلیل شده. برای مشاهده نسخه اصلی، به منبع مراجعه کنید.