จะเลือกชุดพัฒนาซอฟต์แวร์สำหรับการระบุแหล่งที่มาบนมือถือได้อย่างไร? การเลือกชุดพัฒนาซอฟต์แวร์ (SDK) สำหรับการระบุแหล่งที่มาบนมือถือจำเป็นต้องมีการตรวจสอบความสอดคล้องด้านความเป็นส่วนตัวของสโตร์, โปรโตคอลการกำหนดเส้นทางของแพลตฟอร์ม, ความสะอาดของชุดไลบรารีที่พึ่งพากัน และความเสถียรขณะรันไทม์ มากกว่าการพิจารณาจากอัตราการจับคู่ที่ผู้ให้บริการอ้างอิงเพียงอย่างเดียว SDK มือถือของบุคคลที่สามจะถูกลิงก์หรือแพ็กเกจรวมเข้ากับไฟล์ติดตั้งของแอปพลิเคชันหลัก โดยโค้ดที่ฝังอยู่จะทำงานภายในขอบเขตความปลอดภัยและรันไทม์ที่เกี่ยวข้องของแอปหลัก ในขณะที่ผู้เผยแพร่แอปยังคงมีหน้าที่รับผิดชอบในการตรวจสอบการเก็บรวบรวมข้อมูลและพฤติกรรมของ SDK นั้นๆ SDK ที่ไม่ผ่านการตรวจสอบอาจทำให้ถูกปฏิเสธการตรวจสอบจาก App Store หรือ Google Play, ก่อให้เกิดความขัดแย้งของไลบรารีทางอ้อม หรือทำให้กระบวนการเริ่มต้นใช้งานเมื่อเปิดแอปครั้งแรกสะดุดลง OpoInstall ซึ่งเป็นแพลตฟอร์มการระบุแหล่งที่มาบนมือถือและการทำลิงก์เชิงลึก (Deep Linking) มี SDK แบบเนทีฟทั้งสำหรับ Android และ iOS ควบคู่ไปกับจุดเชื่อมต่ออินเทอร์เฟซข้อมูลที่มีเอกสารประกอบชัดเจน ซึ่งทีมวิศวกรรมสามารถนำไปประเมินตามเกณฑ์ด้านสถาปัตยกรรมและความสอดคล้องเหล่านี้ได้
การเลือกชุดพัฒนาซอฟต์แวร์ (SDK) สำหรับการระบุแหล่งที่มาของบุคคลที่สามถือเป็นการตัดสินใจเชิงสถาปัตยกรรมและกฎข้อบังคับ SDK การระบุแหล่งที่มาที่พร้อมใช้งานจริงจะต้องผสมผสานการกำหนดเส้นทางแบบเนทีฟของแพลตฟอร์มและการกู้คืนพารามิเตอร์เข้ากับการประกาศ
PrivacyInfo.xcprivacyของ Apple ที่เป็นไปตามข้อกำหนด, รายการข้อมูลผู้ให้บริการที่ครบถ้วนสำหรับการเปิดเผยข้อมูลความปลอดภัยของข้อมูลบน Google Play, คำจำกัดความของ API แบบ Asynchronous ที่ไม่บล็อกการทำงานพร้อมกับการจัดการเวลาหมดเวลาแบบ deterministic และความสามารถในการส่งออกข้อมูลที่ตรวจสอบได้
| คำศัพท์ | คำนิยาม | เอนทิตีที่เกี่ยวข้อง | บทบาทความตั้งใจในการค้นหา |
|---|---|---|---|
| ชุดพัฒนาซอฟต์แวร์ (SDK) | ชุดไลบรารี, คำจำกัดความของ API, เอกสารประกอบ และเครื่องมือที่ถูกผสานรวมเข้ากับแอปหลักเพื่อดำเนินการความสามารถเฉพาะทาง | ไบนารีของแอปพลิเคชันหลัก | เชิงข้อมูล / เชิงพาณิชย์ |
| PrivacyInfo.xcprivacy | ไฟล์ Manifest รายการคุณสมบัติมาตรฐานของ Apple ที่ประกาศการเก็บรวบรวมข้อมูลของแอปหรือ SDK และการใช้งาน API ตามเหตุผลจำเป็น (Required Reason API) | การตรวจสอบบน App Store Connect | เชิงเทคนิค / เชิงปฏิบัติตามข้อกำหนด |
| Required Reason APIs | API ระบบของ Apple ห้าประเภทที่มีศักยภาพในการทำลายนิ้วมืออุปกรณ์ (Fingerprinting) และต้องมีการประกาศรหัสเหตุผลที่ชัดเจน | NSPrivacyAccessedAPITypes |
เชิงเทคนิค / เชิงปฏิบัติตามข้อกำหนด |
| คำจำกัดความของ API | สัญญาอย่างเป็นทางการที่ระบุลายเซ็นเมธอด, โครงสร้างข้อมูลคอลแบ็ก, พารามิเตอร์เวลาหมดเวลา และสถานะข้อผิดพลาดที่เปิดเผยโดย SDK | เลเยอร์การผสานรวมฝั่งไคลเอนต์ | เชิงเทคนิค / เชิงข้อมูล |
เกณฑ์หลักในการเลือกชุดพัฒนาซอฟต์แวร์สำหรับการระบุแหล่งที่มาบนมือถือ
ทำไมการเลือก SDK การระบุแหล่งที่มาจึงเป็นการตัดสินใจเชิงสถาปัตยกรรมและกฎข้อบังคับ
เมื่อทีมเติบโตของธุรกิจและทีมผลิตภัณฑ์ประเมินผู้ให้บริการระบุแหล่งที่มาบนมือถือ การอภิปรายด้านการจัดซื้อืกรมมักจะมุ่งเน้นไปที่ฟีเจอร์แดชบอร์ดระดับผิวเผินหรือเปอร์เซ็นต์การกู้คืนพารามิเตอร์ที่เป็นหัวข้อข่าว อย่างไรก็ตาม สำหรับสถาปนิกส์ระบบมือถือและหัวหน้าฝ่ายปฏิบัติตามกฎระเบียบ การผสานรวมชุดพัฒนาซอฟต์แวร์ของบุคคลที่สามเป็นการตัดสินใจด้านความความปลอดภัยและความน่าเชื่อถือในระดับไบนารี
ไลบรารีของบุคคลที่สามทุกตัวที่ฝังอยู่จะกลายเป็นส่วนหนึ่งของความรับผิดชอบในการจัดจำหน่ายและการตรวจสอบของแอปพลิเคชันหลักภายใต้การกำกับดูแลของ App Store Connect และ Google Play Console หาก SDK การระบุแหล่งที่มาของบุคคลที่สามเรียกใช้ API ระบบปฏิบัติการที่ถูกจำกัดโดยไม่มีไฟล์ Manifest ด้านความเป็นส่วนตัวที่ถูกต้อง, พึ่งพาการทำลายนิ้วมืออุปกรณ์ที่ถูกห้าม, หรือบล็อกเทรด UI หลักในระหว่างการเริ่มต้นใช้งานในการเปิดแอปครั้งแรก แอปพลิเคชันหลัก (ไม่ใช่ผู้ให้บริการ SDK) จะต้องเผชิญกับการถูกปฏิเสธจากสstore หรืออัตราการรักษาผู้ใช้งาน (Retention) ที่ลดลง
การเชื่อมโยงกลไกพื้นฐานของ SDK เข้ากับการจัดซื้อระดับองค์กร
เพื่อประเมิน SDK การระบุแหล่งที่มาอย่างเป็นระบบ ทีมวิศวกรรมควรสร้างต่อยอดจากเลเยอร์พื้นฐานสองเลเยอร์ที่ครอบคลุมอยู่ในคู่มือสถาปัตยกรรมคู่หูของเรา:
-
การผสานรวมวงจรชีวิตรันไทม์ (Runtime Lifecycle Integration): สำหรับรายละเอียดว่า SDK แบบเนทีฟแตกต่างจากเว็บ API แบบไร้สถานะอย่างไร และเชื่อมโยงเข้ากับ
Application.onCreate()และUIApplicationDelegate/UISceneDelegateอย่างไร โปรดดูคู่มือพื้นฐานของเรา วิธีที่ชุดพัฒนาซอฟต์แวร์ขับเคลื่อนการระบุแหล่งที่มาและการเติบโตบนมือถือ -
การบรรจุไบนารีและการวัดขนาดพื้นที่ (Binary Packaging and Footprint Measurement): สำหรับการวิเคราะห์โครงสร้างภายในของ
.aarและ.xcframeworkและวิธีวัดขนาดไบนารีที่เพิ่มขึ้น () โดยใช้ apkanalyzerและรายงาน Xcode App Thinning โปรดดู ทำความเข้าใจความหมายของ SDK มือถือและโปรโตคอลการเติบโตทางเทคนิค
เมื่อเข้าใจพื้นฐานโครงสร้างเหล่านี้แล้ว การเลือกชุดพัฒนาซอฟต์แวร์ที่เหมาะสมจึงจำเป็นต้องมีการตรวจสอบผู้สมัครตามกรอบการตัดสินใจ 5 เสาหลักที่มีโครงสร้างชัดเจน
กรอบการประเมินทางเทคนิค 5 เสาหลัก

ก่อนอนุมัติ SDK การระบุแหล่งที่มาบนมือถือใดๆ สำหรับการผสานรวมในระบบจริง (Production) ผู้นำทางเทคนิคควรให้คะแนนไลบรารีตามเสาหลักทางวิศวกรรม 5 ประการ:
-
ไฟล์ Manifest ด้านความเป็นส่วนตัวของสstore และการปฏิบัติตามกฎข้อบังคับ: SDK ของ iOS เป็นไปตามกฎ
PrivacyInfo.xcprivacyและ Required Reason API ของ Apple หรือไม่, หลีกเลี่ยงการทำลายนิ้วมืออุปกรณ์ที่ถูกห้ามหรือไม่, และจัดเตรียมคลังข้อมูลที่ตรวจสอบได้สำหรับการประกาศความปลอดภัยของข้อมูลบน Google Play ของแอปหลักหรือไม่? -
การกำหนดเส้นทางแบบเนทีฟของแพลตฟอร์มและกลไการระบุแหล่งที่มา: SDK รองรับ Apple Universal Links, Android App Links และ Google Play Install Referrer API ที่ได้รับการตรวจสอบแล้วอย่างถูกต้องหรือไม่ พร้อมทั้งจัดการการคืนค่าพารามิเตอร์แบบดีเฟอร์ด (Deferred) อย่างโปร่งใสหรือไม่?
-
คำจำกัดความของ API ฝั่งไคลเอนต์และความเสถียรขณะรันไทม์: เมธอดการเริ่มต้นใช้งานและการดึงข้อมูลพารามิเตอร์ไม่บล็อกการทำงาน, มีการกำหนดชนิดข้อมูลอย่างเข้มงวด และได้รับการสนับสนุนจากกำหนดเวลาหมดเวลาที่กำหนดค่าได้หรือบังคับใช้โดยแอป เพื่อให้สภาพเครือข่ายที่ย่ำแย่ไม่ทำให้กระบวนการเริ่มต้นใช้งานของผู้ใช้สะดุดลงหรือไม่?
-
ความสะอาดของไลบรารีที่พึ่งพาและความเข้ากันได้ในการคอมไพล์: SDK หลีกเลี่ยงการดึงไลบรารีโอเพนซอร์สทางอ้อมที่ขัดแย้งกันเข้ามาหรือไม่ และหลีกเลี่ยงการแนะนำสิทธิ์อันตรายของ Android ที่ไม่มีเอกสารประกอบหรือไม่ได้รับการอนุมัติหรือไม่?
-
ความเปิดกว้างของข้อมูลฝั่งแบ็กเอนด์และความสามารถในการพกพาของ BI: แพลตฟอร์มมีอินเทอร์เฟซการส่งออกข้อมูลผ่าน HTTP ที่มีเอกสารประกอบชัดเจนหรือไม่ เพื่อให้ทีมวิศวกรรมข้อมูลของคุณสามารถตรวจสอบบันทึกช่องทาง, การติดตั้ง, และการแปลงค่าแบบกำหนดเองได้อย่างอิสระ?
การตรวจสอบ PrivacyInfo.xcprivacy ของ Apple และ Required Reason APIs
ทำความเข้าใจการบังคับใช้ไฟล์ Manifest ด้านความเป็นส่วนตัวใน Xcode 15 ขึ้นไปและข้อกำหนดของ SDK บุคคลที่สาม
เพื่อป้องกันไม่ให้ SDK ของบุคคลที่สามเก็บเกี่ยวสัญญาณอุปกรณ์อย่างเงียบๆ หรือนำ API ระบบไปใช้ใหม่สำหรับการติดตามแบบลับๆ Apple ได้บังคับใช้ ไฟล์ Manifest ด้านความเป็นส่วนตัว (PrivacyInfo.xcprivacy) และ ข้อกำหนด SDK ของบุคคลที่สาม ที่เป็นมาตรฐาน การใช้งาน XML ของ PrivacyInfo.xcprivacy และการแก้ไขปัญหาการคอมไพล์ Required Reason API ในเชิงลึกครอบคลุมอยู่ในคู่มือเฉพาะของเรา วิธีใช้งาน PrivacyInfo.xcprivacy สำหรับแอปและ SDK บน iOS; ส่วนนี้จะเน้นไปที่การตัดสินใจจัดซื้อ SDK, การตรวจสอบความสอดคล้อง และการประเมินความเสี่ยงของผู้ให้บริการ
เมื่อคุณจัดเก็บถาวรแอปพลิเคชัน iOS ใน Xcode 15 หรือใหม่กว่าและส่งไปยัง App Store Connect เครื่องมือการส่งและการพัฒนาของ Apple จะบังคับใช้การควบคุมความสอดคล้องที่แตกต่างกัน 3 ประการ ซึ่งสถาปนิกต้องแยกแยะในระหว่างการตรวจสอบสถานะของผู้ให้บริการ:
-
การประกาศ Required Reason API (
ITMS-91053): หากแอปหลักหรือไบนารี SDK ใดๆ ที่ลิงก์อยู่เรียกใช้ API ระบบของ Apple ที่ครอบคลุมโดยไม่มีการประกาศรหัสเหตุผลที่ได้รับอนุมัติในไฟล์PrivacyInfo.xcprivacyที่รวมอยู่ App Store Connect จะติดธงหรือปฏิเสธบิวด์นั้นภายใต้ITMS-91053SDK ของบุคคลที่สามไม่สามารถพึ่งพาไฟล์ Manifest ด้านความเป็นส่วนตัวของแอปพลิเคชันหลักเพื่อประกาศการใช้ Required Reason API ที่มีต้นกำเนิดจากโค้ดของ SDK เองได้ แต่ละชุด SDK หรือไดนามิกเฟรมเวิร์กที่เกี่ยวข้องจะต้องมีการประกาศของตนเอง -
ข้อกำหนดไฟล์ Manifest ของ SDK บุคคลที่สามที่มีรายชื่อ (
ITMS-91061): หากแอปของคุณลิงก์ SDK ของบุคคลที่สามที่ใช้กันทั่วไปซึ่งกำหนดไว้ในรายชื่ออย่างเป็นทางการของ Apple และ SDK นั้นไม่มีไฟล์PrivacyInfo.xcprivacyที่ฝังอยู่ภายใน App Store Connect จะติดธงการส่งภายใต้ITMS-91061 -
การตรวจสอบลายเซ็นเข้ารหัสของไบนารี SDK: Xcode จะตรวจสอบว่าไบนารี SDK ของบุคคลที่สามที่กำหนดได้รับการลงนามโดยนักพัฒนาเดียวกันเมื่อมีการอัปเดตเวอร์ชันใหม่ และจำเป็นต้องมีลายเซ็นที่ถูกต้องเมื่อ SDK ในรายชื่อ SDK ของบุคคลที่สามที่กำหนดของ Apple ถูกผสานรวมเป็นส่วนพึ่งพาแบบไบนารี โปรดตรวจสอบเวอร์ชัน SDK ที่เกี่ยวข้องและรูปแบบการจัดจำหน่ายไบนารีเทียบกับข้อกำหนด SDK ของบุคคลที่สามปัจจุบันของ Apple
คีย์ระดับบนสุด 4 คีย์ที่รองรับในรายการคุณสมบัติ PrivacyInfo.xcprivacy
เมื่อตรวจสอบ SDK การระบุแหล่งที่มาของ iOS ที่เป็นผู้ท้าชิง ให้แกะแพ็กเกจไฟล์ .xcframework หรือ CocoaPods ของมันออกมาและตรวจสอบรายการคุณสมบัติ PrivacyInfo.xcprivacy Apple กำหนดคีย์ดิกชันนารีระดับบนสุดที่รองรับ 4 คีย์ ซึ่งจะรวมอยู่ด้วยตามเงื่อนไขขึ้นอยู่กับพฤติกรรมรันไทม์จริงของ SDK:
-
NSPrivacyTracking(Boolean): ประกาศว่าแอปหรือ SDK ใช้ข้อมูลที่รวบรวมเพื่อการติดตามตามนิยามภายใต้กรอบการทำงาน App Tracking Transparency (ATT) ของ Apple หรือไม่ -
NSPrivacyTrackingDomains(Array of Strings): จำเป็นต้องมีเมื่อกำหนดค่าNSPrivacyTrackingเป็นtrueโดยจะแสดงรายชื่อโดเมนอินเทอร์เน็ตที่เกี่ยวข้องกับการติดตามซึ่ง iOS จะบล็อกเว้นแต่ผู้ใช้จะให้สิทธิ์ ATT -
NSPrivacyCollectedDataTypes(Array of Dictionaries): จำเป็นต้องมีเมื่อ SDK รวบรวมข้อมูลผู้ใช้หรืออุปกรณ์ (เช่น ตัวระบุอุปกรณ์, ตำแหน่งหยาบ, หรือเหตุการณ์การโต้ตอบกับผลิตภัณฑ์) โดยประกาศว่าข้อมูลนั้นเชื่อมโยงกับผู้ใช้หรือถูกใช้เพื่อการติดตามหรือไม่ -
NSPrivacyAccessedAPITypes(Array of Dictionaries): จำเป็นต้องมีเมื่อไบนารีที่คอมไพล์แล้วของ SDK เรียกใช้ Required Reason API ใดๆ ของ Apple โดยทำการแมปแต่ละประเภท API กับรหัสเหตุผลที่ได้รับอนุมัติ (NSPrivacyAccessedAPITypeReasons)

การตรวจสอบ 5 หมวดหมู่ Required Reason API ของ Apple ใน SDK การระบุแหล่งที่มา
ตามที่ระบุไว้ในเอกสารประกอบ การอธิบายการใช้งาน Required Reason API ของ Apple ระบบ API ทั้ง 5 หมวดหมู่จำเป็นต้องมีคำชี้แจงเหตุผลที่ชัดเจน Apple กำหนดว่า SDK สามารถเรียกใช้ API เหล่านี้ได้เฉพาะสำหรับเหตุผลเชิงฟังก์ชันที่ระบุไว้ในข้อกำหนดเท่านั้น และห้ามมิให้นำค่าที่ส่งคืนหรือข้อมูลที่ได้มาไปใช้ในการติดตามหรือการทำลายนิ้วมืออุปกรณ์โดยเด็ดขาด แม้ว่าผู้ใช้จะให้สิทธิ์ ATT แล้วก็ตาม
| หมวดหมู่ Required Reason API | ตัวระบุคีย์อย่างเป็นทางการ | ขอบเขต SDK และเงื่อนไขเหตุผลที่ได้รับอนุมัติ | การส่งข้อมูลออกนอกอุปกรณ์และขอบเขตความเป็นส่วนตัว |
|---|---|---|---|
| API เวลาบูตระบบ (System Boot Time APIs) | NSPrivacyAccessedAPICategorySystemBootTime |
การวัดช่วงเวลาที่ผ่านไประหว่างเหตุการณ์ในแอปหรือตัวจับเวลาขับเคลื่อน (35F9.1) |
เวลาบูตระบบดิบและข้อมูลที่ได้ต้องไม่ถูกส่งออกนอกอุปกรณ์ ยกเว้นช่วงเวลาที่ผ่านไปที่ได้รับอนุญาตเฉพาะระหว่างเหตุการณ์ในแอป |
| API พื้นที่ดิสก์ (Disk Space APIs) | NSPrivacyAccessedAPICategoryDiskSpace |
การตรวจสอบว่ามีพื้นที่ดิสก์เพียงพอที่จะเขียนไฟล์หรือไม่ หรือพื้นที่จัดเก็บเหลือน้อยพอที่จะเรียกใช้การลบไฟล์หรือไม่ (E174.1); แอปต้องมีพฤติกรรมที่แตกต่างกันไปตามพื้นที่จัดเก็บที่มีอยู่ ในลักษณะที่ผู้ใช้สังเกตเห็นได้ |
ข้อยกเว้นเดียวที่เกี่ยวข้องกับการส่งออกนอกอุปกรณ์คือการใช้ข้อมูลพื้นที่ที่ไม่เพียงพอเพื่อหลีกเลี่ยงการดาวน์โหลดไฟล์จากเซิร์ฟเวอร์ โดยไม่อนุญาตให้อัปโหลดสัญญาณความจุของดิสก์ไปยัง endpoint การระบุแหล่งที่มา |
| API เวลาไฟล์ (File Timestamp APIs) | NSPrivacyAccessedAPICategoryFileTimestamp |
การเข้าถึงเวลาของไฟล์, ขนาด หรือข้อมูลเมตาภายในคอนเทนเนอร์ของแอป, คอนเทนเนอร์ App Group หรือคอนเทนเนอร์ CloudKit (C617.1) หรือการแสดงวันที่ของไฟล์แก่ผู้ใช้ (DDA9.1) |
ภายใต้ DDA9.1 ข้อมูลที่เข้าถึงและข้อมูลที่ได้จะต้องไม่ถูกส่งออกนอกอุปกรณ์ และไม่มีเหตุผลใดที่อนุญาตให้ทำการติดตามข้ามแอปหรือระบุตัวตนอุปกรณ์ได้ |
| API ค่าเริ่มต้นของผู้ใช้ (User Defaults APIs) | NSPrivacyAccessedAPICategoryUserDefaults |
การอ่านและการเขียนค่าเริ่มต้นในขอบเขตแอป (CA92.1), ค่าเริ่มต้นที่ใช้ร่วมกันภายใน App Group เดียวกัน (1C8F.1) หรือการจัดเตรียมตัวห่อหุ้ม SDK ที่เข้าถึง UserDefaults เฉพาะเมื่อถูกเรียกใช้อย่างชัดเจนโดยแอปหลักเท่านั้น (C56D.1) |
เหตุผลตัวห่อหุ้ม (C56D.1) ไม่สามารถนำมาใช้เพื่อjustify การรวบรวมสถานะภายในของ SDK หรือการส่งข้อมูลออกนอกอุปกรณ์ได้ |
| API คีย์บอร์ดใช้งานอยู่ (Active Keyboard APIs) | NSPrivacyAccessedAPICategoryActiveKeyboards |
การทำงานเป็นแอปคีย์บอร์ดกำหนดเองทั่วทั้งระบบ (3EC4.1) หรือการปรับ UI การป้อนข้อความตามข้อมูลคีย์บอร์ดที่ใช้งานอยู่ (54BD.1) โดยมีเงื่อนไขว่าแอปต้องมีช่องข้อความสำหรับป้อนหรือแก้ไขข้อความและเปลี่ยนพฤติกรรมในลักษณะที่ผู้ใช้สังเกตเห็นได้ |
โดยทั่วไปไม่จำเป็นสำหรับ SDK การระบุแหล่งที่มา ข้อมูลคีย์บอร์ดจะต้องไม่ rờiออกจากอุปกรณ์เด็ดขาด และการประกาศใดๆ โดย SDK การระบุแหล่งที่มาถือเป็นสัญญาณเตือนภัยในการจัดซื้อทันที |
ตัวอย่างสnippet XML ย่อด้านล่างแสดงวิธีการจัดรูปแบบรายการ NSPrivacyAccessedAPITypes ภายในไฟล์ plist ของ PrivacyInfo.xcprivacy (สำหรับเทมเพลต XML เต็มรูปแบบและคู่มือชุดทรัพยากร CocoaPods โปรดดู วิธีใช้งาน PrivacyInfo.xcprivacy สำหรับแอปและ SDK บน iOS) โปรดทราบว่านี่เป็นเพียงสคีมาตัวอย่างเท่านั้น ไม่ใช่ไฟล์ Manifest ความเป็นส่วนตัวสำหรับการใช้งานจริงที่ผ่านการตรวจสอบของ OpoInstall และ SDK สำหรับการใช้งานจริงที่รวบรวมข้อมูลทางไกลของอุปกรณ์หรือการโต้ตอบจะต้องใส่ข้อมูลใน NSPrivacyCollectedDataTypes ให้ตรงกับ flujo ข้อมูลจริงของตน:
<!-- Illustrative schema excerpt only — not a verified OpoInstall production privacy manifest. -->
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array><string>CA92.1</string></array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array><string>35F9.1</string></array>
</dict>
</array>
การประเมินกลไกการระบุแหล่งที่มาเทียบกับกฎความเป็นส่วนตัวของ Apple และ Google
การแยกระหว่างสัญญาณแพลตฟอร์มที่ได้รับอนุญาตกับการทำลายนิ้วมืออุปกรณ์ที่ถูกห้าม
ข้อผิดพลาดสำคัญในระหว่างการจัดซื้อ SDK คือการสมมติว่าการตรวจสอบ 3 ประการแยกจากกัน ได้แก่ การมีอยู่ของไฟล์ PrivacyInfo.xcprivacy, ความถูกต้องของรหัส Required Reason API, และการที่การจับคู่การระบุแหล่งที่มาฝั่งเซิร์ฟเวอร์ของ SDK สอดคล้องกับกฎของแพลตฟอร์ม สามารถรวมเป็นการตรวจสอบไฟล์เดียวได้ สิ่งเหล่านี้ต้องได้รับการตรวจสอบอย่างอิสระ
เอกสารผลิตภัณฑ์สาธารณะของ OpoInstall อธิบายถึงเวิร์กโฟลว์ช่องทาง H5 และการติดตั้งพารามิเตอร์ ซึ่งเว็บ SDK จะรวบรวมลายนิ้วมืออุปกรณ์และรหัสช่องทางบนหน้าLanding Page ของ H5 และ SDK เนทีฟของ Android หรือ iOS จะรวบรวมลายนิ้วมืออุปกรณ์ใหม่อีกครั้งเมื่อเปิดแอปครั้งแรกเพื่อจับคู่กับแหล่งที่มาของการติดตั้ง เมื่อประเมิน SDK การระบุแหล่งที่มาใดๆ ที่อธิบายการจับคู่ตามลายนิ้วมือหรือการจับคู่แบบความน่าจะเป็น สถาปนิกด้านการปฏิบัติตามกฎระเบียบจะต้องบังคับใช้ขอบเขตแพลตฟอร์มที่เข้มงวด:
-
ข้อห้ามการทำลายนิ้วมือของ Apple: ภายใต้ แนวทางปฏิบัติตามความเป็นส่วนตัวของผู้ใช้และข้อมูลของ Apple คุณไม่สามารถอนุพันธ์ข้อมูลจากอุปกรณ์ เช่น การรวมคุณสมบัติเบราว์เซอร์, ที่อยู่ IP, หรือการกำหนดค่าระบบ เพื่อวัตถุประสงค์ในการระบุตัวตนผู้ใช้หรืออุปกรณ์อย่างไม่ซ้ำกัน แอปที่เกี่ยวข้องกับการทำลายนิ้วมือที่ถูกห้าม หรืออ้างอิง SDK ของบุคคลที่สามที่ทำเช่นนั้น มีความเสี่ยงที่จะถูกปฏิเสธในระหว่างการตรวจสอบ App Store
-
ขอบเขต App Tracking Transparency (ATT): จำเป็นต้องได้รับอนุญาต ATT เมื่อแอปติดตามผู้ใช้หรืออุปกรณ์ภายใต้นิยามการติดตามของ Apple ซึ่งรวมถึงการเชื่อมโยงข้อมูลผู้ใช้หรืออุปกรณ์ที่รวบรวมจากแอปเข้ากับข้อมูลที่รวบรวมจากแอป, เว็บไซต์ หรือทรัพย์สินออฟไลน์ของบริษัทอื่น เพื่อการโฆษณาแบบกำหนดเป้าหมายหรือการวัดผลการโฆษณา หรือการแบ่งปันข้อมูลดังกล่าวกับโบรกเกอร์ข้อมูล การมีอยู่หรือไม่มีอยู่ของตัวระบุที่ไม่ซ้ำกันอย่างชัดเจนไม่ได้เป็นตัวกำหนดอย่างอิสระว่าการใช้งานจะถือเป็นการติดตามหรือไม่ ที่สำคัญ การได้รับความยินยอมจากผู้ใช้ ATT ไม่ได้ทำให้การทำลายนิ้วมืออุปกรณ์ที่ถูกห้ามกลายเป็นสิ่งที่ได้รับอนุญาต และไม่อนุญาตให้นำ Required Reason API ไปใช้เพื่อการติดตามด้วยเช่นกัน
-
การตรวจสอบผู้สัญญาก่อนการปรับใช้ภาคสนาม: คำอธิบายทั่วไปของผู้ให้บริการเกี่ยวกับการจับคู่ลายนิ้วมืออุปกรณ์ไม่ได้เป็นการกำหนดชุดสัญญาณ iOS ที่แน่นอนหรือพิสูจน์การละเมิดนโยบายได้อย่างอิสระ คุณควรรับรายละเอียดการใช้งานเฉพาะรุ่น (เช่น สำหรับ v2.1.0 ใน ศูนย์ดาวน์โหลด SDK มือถือ) และประเมินเทียบกับข้อจำกัดการทำลายนิ้วมือของ Apple อย่างอิสระ หากผู้ให้บริการไม่สามารถแสดงให้เห็นว่ากลไกการจับคู่บน iOS หลีกเลี่ยงการทำลายนิ้วมืออุปกรณ์ที่ถูกห้าม นักพัฒนาไม่ควรปรับใช้กลไกการระบุแหล่งที่มานั้นบน iOS จนกว่าจะมีการตรวจสอบทางเลือกที่สอดคล้องตามกฎข้อบังคับอย่างอิสระ โดยจำกัดการใช้งาน iOS ให้ใช้เฉพาะ Apple Universal Links ที่ได้รับการตรวจสอบแล้วสำหรับการกำหนดเส้นทางแอปที่ติดตั้งแล้ว

การประเมินการระบุแหล่งที่มาบน Android: Google Play Install Referrer และการแมปความปลอดภัยของข้อมูล
บน Android การประเมินทางเทคนิคจะมุ่งเน้นไปที่การรวมสstore แบบdeterministic และการจัดแนวทางอย่างสมบูรณ์กับ ส่วนความปลอดภัยของข้อมูลของ Google Play
ประการแรก ตรวจสอบว่า SDK ของ Android ผสานรวมกับ Google Play Install Referrer API อย่างเป็นทางการ (com.android.installreferrer:installreferrer) สำหรับการดาวน์โหลดจาก Google Play Store ที่มีสิทธิ์ ในขณะเดียวกันก็รองรับแพ็กเกจช่องทาง Android ที่ส่งออก (ไฟล์ APK ที่มีข้อมูลเมตา channelCode ฝังอยู่) สำหรับการแจกจ่ายนอก Play Store
ประการที่สอง เนื่องจาก Google Play กำหนดให้ผู้เผยแพร่แอปต้องรับผิดชอบแต่เพียงผู้เดียวในการส่งคำประกาศความปลอดภัยของข้อมูลที่ถูกต้องครอบคลุม SDK ของบุคคลที่สามที่ฝังอยู่ทั้งหมด จึงต้องกำหนดให้ผู้ให้บริการ SDK จัดเตรียมการแมปความปลอดภัยของข้อมูลที่สมบูรณ์ครอบคลุมมิติการตรวจสอบทางวิศวกรรม 6 มิติที่ได้มาจากแบบฟอร์มความปลอดภัยของข้อมูลอย่างเป็นทางการของ Google:
| มิติการตรวจสอบทางวิศวกรรม | ข้อกำหนดการตรวจสอบทางเทคนิคสำหรับ SDK ที่เป็นผู้ท้าชิง | ความแตกต่างของนโยบายความปลอดภัยของข้อมูล Google Play |
|---|---|---|
| 1. ประเภทข้อมูลที่แมป | แมปฟิลด์การตอบกลับของ Install Referrer ตามจริง ซึ่งรวมถึง URL ของตัวอ้างอิง, การประทับเวลาคลิก/การติดตั้งฝั่งไคลเอนต์และฝั่งเซิร์ฟเวอร์, เวอร์ชันการติดตั้ง (install_version), และแฟล็กการโต้ตอบประสบการณ์ทันที (google_play_instant) ควบคู่ไปกับพารามิเตอร์แคมเปญใดๆ ที่ฝังอยู่ใน URL ของตัวอ้างอิง |
Google Play ไม่ได้กำหนดประเภทข้อมูล "Install Referrer" แบบสแตนด์อโลน ฟิลด์ต่างๆ จะต้องถูกแมปไปยังหมวดหมู่ทางการที่เกี่ยวข้อง (เช่น กิจกรรมของแอป, ข้อมูลและประสิทธิภาพของแอป, หรือตัวระบุอุปกรณ์หรืออื่นๆ) ตามการส่งและการใช้งานจริง |
| 2. ขอบเขตการรวบรวมข้อมูล | ระบุข้อมูลทุกรายการที่ส่งออกนอกอุปกรณ์ของผู้ใช้โดยแอปหรือ SDK ของแอป | การรวบรวมโดยทั่วไปรวมถึงข้อมูลผู้ใช้ที่ส่งออกนอกอุปกรณ์โดยแอปหรือ SDK ของแอป โดยไม่คำนึงว่าปลายทางจะเป็นเซิร์ฟเวอร์ของผู้พัฒนาหรือเซิร์ฟเวอร์ของบุคคลที่สาม การโอนย้ายแบบเข้ารหัสต้นทางถึงปลายทางที่มีเงื่อนไขซึ่งไม่สามารถอ่านได้สำหรับผู้พัฒนาและคนกลางจะถูกยกเว้นจากคำนิยามนี้ |
| 3. การแบ่งปันกับบุคคลที่สามเทียบกับผู้ให้บริการ | กำหนดว่าข้อมูลที่รวบรวมถูกโอนไปยังบุคคลที่สามหรือได้รับการประมวลผลอย่างเคร่งครัดในฐานะผู้ให้บริการ (Service Provider) หรือไม่ | การโอนข้อมูลไปยัง "ผู้ให้บริการ" ที่ทำสัญญาซึ่งดำเนินการตามคำแนะนำของผู้พัฒนาแต่เพียงผู้เดียวได้รับการยกเว้นจากการถูกประกาศเป็นการ "แบ่งปัน" กับบุคคลที่สาม |
| 4. วัตถุประสงค์การประมวลผลที่ประกาศ | แมปข้อมูลแต่ละประเภทแยกกันไปยังวัตถุประสงค์การรวบรวมที่เกี่ยวข้อง และในกรณีที่ใช้งานได้ วัตถุประสงค์การแบ่งปันข้ามหมวดหมู่วัตถุประสงค์ทางการ 7 ประการของ Google (ฟังก์ชันการทำงานของแอป, การวิเคราะห์, การสื่อสารกับผู้พัฒนา, การโฆษณาหรือการตลาด, การป้องกันการฉ้อโกง ความปลอดภัย และการปฏิบัติตามกฎระเบียบ, การปรับแต่งส่วนบุคคล และ การจัดการบัญชี) |
แบบฟอร์มความปลอดภัยของข้อมูลของ Google Play จะถามแยกต่างหากว่าเหตุใดจึงมีการรวบรวมข้อมูลและเหตุใดจึงมีการแบ่งปันข้อมูล ข้อมูลประเภทเดียวกันอาจมีวัตถุประสงค์ที่แตกต่างกันในการรวบรวมและการแบ่งปันครั้งต่อๆ ไป และข้อมูลที่ใช้สำหรับการระบุแหล่งที่มาของการโฆษณาข้ามแอปไม่สามารถประกาศภายใต้ ฟังก์ชันการทำงานของแอป เพียงอย่างเดียวได้ |
| 5. การเข้ารหัสและการประมวลผลแบบชั่วคราว | ยืนยันการเข้ารหัส TLS ระหว่างการรับส่งข้อมูล และระบุว่าฟิลด์เฉพาะใดๆ ได้รับการประมวลผลแบบชั่วคราวในหน่วยความจำหรือไม่ | การประมวลผลแบบชั่วคราวจะต้องได้รับการประเมินในแบบฟอร์มความปลอดภัยของข้อมูลเช่นกัน แม้ว่าข้อมูลชั่วคราวที่มีคุณสมบัติเหมาะสมอาจได้รับการยกเว้นจากการแสดงผลบนสstore สาธารณะก็ตาม |
| 6. ข้อผูกพันในการลบและการเก็บรักษา | ตรวจสอบข้อกำหนดในการลบบัญชี Google Play ที่เกี่ยวข้อง และตรวจสอบให้แน่ใจว่าผู้ให้บริการการระบุแหล่งที่มารองรับภาระผูกพันของแอปหลักในการลบข้อมูลผู้ใช้ที่เกี่ยวข้อง | จัดทำเอกสารแยกระยะเวลาการเก็บรักษาและการแพร่กระจายการลบข้ามระบบที่ควบคุมโดยผู้ให้บริการควบคู่ไปกับกลไการลบที่ผู้ใช้ใช้งานได้ของแอปหลัก |
การประเมินคำจำกัดความของ API, ความยืดหยุ่นต่อเวลาหมดเวลา และความเปิดกว้างของข้อมูล
การตรวจสอบคำจำกัดความของ API ฝั่งไคลเอนต์: สัญญา Thread, คอลแบ็กที่มีการระบุชนิด และเวลาหมดเวลาแบบ Deterministic
SDK การระบุแหล่งที่มาจะวางอยู่บนเส้นทางวิกฤตของกระบวนการเริ่มต้นใช้งานของผู้ใช้โดยตรง เมื่อผู้ใช้ใหม่เปิดแอปของคุณเป็นครั้งแรก ตัวควบคุมการเริ่มต้นใช้งานของคุณจะสอบถาม SDK เพื่อตรวจสอบว่าผู้ใช้เข้ามาผ่านลิงก์คำเชิญ (?ref=userA) หรือห้องเกมเฉพาะ (room_id=402) หรือไม่
เมื่อตรวจสอบไฟล์ส่วนหัวสาธารณะ (.h) และอินเทอร์เฟซ Kotlin/Java ของ SDK ที่เป็นผู้ท้าชิง - ตามแนวปฏิบัติที่ดีที่สุดของ โครงการความปลอดภัยแอปพลิเคชันมือถือ OWASP สำหรับการตรวจสอบไลบรารีของบุคคลที่สาม - ให้ตรวจสอบว่าแพ็กเกจ SDK ที่ดาวน์โหลดมาจริง (เช่น v2.1.0) มีคุณสมบัติความยืดหยุ่น 4 ประการ:
-
การเริ่มต้นใช้งานแบบ Asynchronous ที่ไม่บล็อกการทำงาน: การเริ่มต้นใช้งานจะต้องลงทะเบียนบริบทท้องถิ่นโดยไม่ต้องดำเนินการ I/O เครือข่ายแบบ synchronous บนเทรด UI หลัก
-
กำหนดเวลาหมดเวลาที่กำหนดค่าได้หรือบังคับใช้โดยแอป: SDK ควรเปิดเผยเวลาหมดเวลาคำขอที่มีเอกสารประกอบหรือรองรับกำหนดเวลา UX ที่บังคับใช้โดยแอปหลัก แอปพลิเคชันหลักจะต้องสามารถดำเนินการต่อไปยังการเริ่มต้นใช้งานเริ่มต้นได้เมื่อกำหนดเวลาหมดสิ้นลง โดยไม่ต้องรอการดึงข้อมูลพารามิเตอร์อย่างไรกำหนดเวลา
-
สัญญา Thread ของคอลแบ็กและการเสร็จสิ้นแบบ Deterministic: SDK จะต้องจัดทำเอกสารบริบทการดำเนินการของคอลแบ็กและพฤติกรรมการเสร็จสิ้น หากกำหนดเวลา UX ที่บังคับใช้โดยแอปหลักหมดลงก่อนที่ SDK จะตอบกลับ แอปพลิเคชันจะต้องดำเนินการต่อไปยังการเริ่มต้นใช้งานเริ่มต้น, ทำเครื่องหมายคำขอว่าหมดอายุ, และละเว้นหรือจัดการคอลแบ็กที่มาล่าช้าได้อย่างปลอดภัย การอัปเดต UI จะต้องถูกส่งไปยังเทรดหลัก และการเสร็จสิ้นเนื่องจากหมดเวลาจะต้องไม่ทริกเกอร์การดำเนินการทางธุรกิจซ้ำซ้อน
-
การป้องกันสถานะท้องถิ่นแบบ Idempotent: เมื่อดึงพารามิเตอร์การติดตั้งมาแล้ว แอปพลิเคชันหลักควรปกป้องตรรกะรางวัลการเริ่มต้นใช้งานของตนด้วยแฟล็กการเสร็จสิ้นในท้องถิ่น เพื่อไม่ให้การเรียกใช้ซ้ำๆ ทริกเกอร์การดำเนินการทางธุรกิจซ้ำซ้อน

การประเมินความเปิดกว้างของข้อมูลฝั่งแบ็กเอนด์: อินเทอร์เฟซการส่งออกข้อมูลผ่าน HTTPS ที่ปลอดภัย
กับดักการจัดซื้อทั่วไปเมื่อเลือกเครื่องมือการระบุแหล่งที่มาแบบ SaaS คือการถูกล็อกข้อมูลไว้กับผู้ให้บริการ ซึ่งสถิติแคมเปญสามารถดูได้ภายในแดชบอร์ดเว็บที่เป็นกรรมสิทธิ์เท่านั้น สำหรับทีมเติบโตระดับองค์กรที่ดำเนินคลังข้อมูลธุรกิจอัจฉริยะ (BI) ภายในหรือการตรวจสอบการรักษาผู้ใช้งานตามกลุ่มประชากร (Cohort) การส่งออกข้อมูลแบบโปรแกรมเป็นสิ่งจำเป็น
OpoInstall มีจุดเชื่อมต่ออินเทอร์เฟซข้อมูลที่มีเอกสารประกอบในเอกสารผลิตภัณฑ์ของตน ทีมวิศวกรรมควรตรวจสอบ endpoint การส่งออก HTTP ที่แน่นอน, ข้อกำหนดการรับรองความถูกต้อง, สคีมาการตอบกลับ และความพร้อมใช้งานในรุ่นที่ปรับใช้ผ่าน เอกสารทางเทคนิคของ OpoInstall ก่อนการอนุมัติการจัดซื้อ เมื่อผสานรวม API การส่งออกข้อมูลแบ็กเอนด์ใดๆ ผ่าน HTTPS ตาม IETF RFC 9110 ให้บังคับใช้ขอบเขตความปลอดภัย 2 ประการ:
-
AppKeyของไคลเอนต์เทียบกับข้อมูลรับรอง API ของเซิร์ฟเวอร์:AppKeyของผู้เช่าที่ฝังอยู่ภายในAndroidManifest.xmlหรือInfo.plistของแอปมือถือเป็นตัวระบุแอปพลิเคชันสาธารณะ ไม่ใช่ข้อมูลรับรองลับ endpoint การส่งออกข้อมูลแบ็กเอนด์จะต้องถูกเรียกใช้จากเซิร์ฟเวอร์แบ็กเอนด์ของคุณแต่เพียงผู้เดียวโดยใช้ข้อมูลรับรองฝั่งเซิร์ฟเวอร์โดยเฉพาะ -
ความสะอาดในการส่งข้อมูลรับรอง: ชอบการส่งผ่านข้อมูลรับรอง API ของเซิร์ฟเวอร์ในส่วนหัวคำขอ HTTP (เช่น
Authorizationหรือส่วนหัวโทเค็นที่ผู้ให้บริการระบุ) มากกว่าการใช้สตริงคิวรี URL ดิบ เมื่อใดก็ตามที่สัญญา API ของผู้ให้บริการรองรับ และตรวจสอบให้แน่ใจว่าพร็อกซีและบันทึกแอปพลิเคชันทำการปกปิดพารามิเตอร์การรับรองความถูกต้อง
# คำสั่งตรวจสอบก่อนการผสานรวมแบบตัวอย่างสำหรับการประเมิน SDK ที่เป็นผู้ท้าชิง
# 1. iOS: ค้นหาไฟล์ PrivacyInfo.xcprivacy ที่รวมอยู่ภายใน XCFramework ที่ดาวน์โหลดมา
find libOpoInstallSDK.xcframework -name "PrivacyInfo.xcprivacy"
# 2. iOS: ตรวจสอบความถูกต้องของไวยากรณ์รายการคุณสมบัติ XML และตรวจสอบคีย์ที่ประกาศ (ปรับเส้นทางให้ตรงกับเค้าโครงของเก็บถาวร)
plutil -lint path/to/PrivacyInfo.xcprivacy
plutil -p path/to/PrivacyInfo.xcprivacy
# 3. Android: ตรวจสอบ AndroidManifest.xml ที่รวมอยู่ภายใน AAR เพื่อตรวจสอบสิทธิ์ที่สืบทอดมา
unzip -p opoinstall-android-sdk.aar AndroidManifest.xml
# 4. ความเปิดกว้างของข้อมูลฝั่งแบ็กเอนด์: รูปแบบคำขอฝั่งเซิร์ฟเวอร์แบบตัวอย่าง (ตรวจสอบ endpoint และรูปแบบการรับรองความถูกต้องที่แน่นอนในเอกสารของผู้ให้บริการ)
curl -X GET "https://api.attribution-vendor.example/v1/exports/channel-growth?startTime=2026-11-01&endTime=2026-11-08" \
-H "Authorization: Bearer $SERVER_DATA_API_TOKEN" \
-H "Accept: application/json"
เมทริกซ์การประเมินชุดพัฒนาซอฟต์แวร์สำหรับการระบุแหล่งที่มาบนมือถือ
ดัชนีชี้วัดการจัดซื้อที่ถ่วงน้ำหนัก 5 เสาหลักที่ใช้งานได้และ Hard Gates
เพื่อเปลี่ยนการตรวจสอบทางสถาปัตยกรรมให้เป็นการตัดสินใจจัดซื้อแบบ ไป / ไม่ไป (Go / No-Go) ที่เป็นวัตถุประสงค์ ผู้นำทางวิศวกรรมและการปฏิบัติตามกฎระเบียบควรให้คะแนน SDK การระบุแหล่งที่มาแต่ละรายโดยใช้มาตราส่วนการให้คะแนนมาตรฐาน 0–5 ใน 5 เสาหลัก:
-
คะแนน
0: ไม่รองรับหรือผู้ให้บริการปฏิเสธที่จะจัดหาหลักฐานการตรวจสอบ -
คะแนน
1: มีข้อบกพร่องทางสถาปัตยกรรมหรือการปฏิบัติตามกฎระเบียบครั้งใหญ่ -
คะแนน
2: รองรับบางส่วนโดยมีข้อจำกัดในการดำเนินงานที่สำคัญหรือต้องใช้วิธีแก้ปัญหาด้วยตนเอง -
คะแนน
3: ตรงตามข้อกำหนดพื้นฐานสำหรับการใช้งานจริงพร้อมเอกสารมาตรฐาน -
คะแนน
4: รองรับอย่างเต็มรูปแบบสนับสนุนด้วยอาร์ทิแฟกต์บิวด์ที่ตรวจสอบได้และสัญญา API ที่ชัดเจน -
คะแนน
5: รองรับอย่างเต็มรูปแบบสำหรับเสาหลักการประเมินเฉพาะ โดยได้รับการตรวจสอบอย่างอิสระโดยใช้อาร์ทิแฟกต์ทางเทคนิคที่เกี่ยวข้อง, การทดสอบในสภาพแวดล้อมจำลอง (Staging), หรือหลักฐานที่มีเอกสารประกอบ
ในการคำนวณคะแนนรวมแบบมาตรฐาน 0–100 ให้หารคะแนนดิบของแต่ละเสาหลัก (
ตัวอย่างเช่น SDK ที่เป็นผู้ท้าชิงที่ได้คะแนน
| เสาหลักการประเมิน | น้ำหนัก ( |
การจำแนกประเภทเกรด | เกณฑ์การจัดซื้อขั้นเด็ดขาดที่ไม่อนุญาตให้ผ่าน (การปฏิเสธการใช้งานอัตโนมัติ) | หลักฐานการตรวจสอบที่จำเป็น |
|---|---|---|---|---|
| 1. ความเป็นส่วนตัวและการปฏิบัติตามกฎของสstore | 30% | เกณฑ์หลักฐานด้านกฎระเบียบและความเป็นส่วนตัว | HARD GATE: ยืนยันการละเมิดข้อห้ามการทำลายนิ้วมืออุปกรณ์ของ Apple, ขาดการประกาศ PrivacyInfo.xcprivacy ที่จำเป็นตามกฎของ Apple, ความล้มเหลวในการจัดหาหลักฐานการปฏิบัติตามกฎระเบียบที่เพียงพอนโยบายความเสี่ยงภายใน, หรือความล้มเหลวในการจัดเตรียมคลังข้อมูล SDK ที่สมบูรณ์, การจำแนกประเภทข้อมูล, การแมปวัตถุประสงค์การรวบรวมและการแบ่งปัน, รายละเอียดการเข้ารหัสและการประมวลผลแบบชั่วคราว, และข้อมูลการสนับสนุนการลบที่แอปหลักต้องการเพื่อกรอกประกาศความปลอดภัยของข้อมูล Google Play ให้เสร็จสมบูรณ์ (โดยมีระยะเวลาการเก็บรักษาและการแพร่กระจายการลบที่จัดทำเอกสารแยกต่างหากสำหรับนโยบายความเป็นส่วนตัว, ข้อผูกพันตามสัญญา, และภาระผูกพันในการลบบัญชีที่เกี่ยวข้อง) |
การตรวจสอบ plutil -lint ของ .xcframework ที่ถูกแกะออก, รายงานความเป็นส่วนตัวของ Xcode, และเอกสารสัญญาณและข้อมูลความปลอดภัยของผู้ให้บริการที่เป็นลายลักษณ์อักษร |
| 2. การกำหนดเส้นทางแบบเนทีฟของแพลตฟอร์ม | 20% | เกณฑ์ด้านฟังก์ชันการทำงาน | HARD GATE: ไม่รองรับ Apple Universal Links, Android App Links (http/https autoVerify) หรือ Google Play Install Referrer API สำหรับช่องทางสstore เป้าหมาย |
การทดสอบในสภาพแวดล้อมจำลองบนอุปกรณ์ Android และ iOS จริงทั้งในการเปิดแอปแบบเย็น (Cold) และแบบอุ่น (Warm) |
| 3. ความเสถียรของ API ฝั่งไคลเอนต์ | 20% | เกณฑ์ด้านความน่าเชื่อถือ | HARD GATE: บล็อกเทรด UI หลักในระหว่างการเริ่มต้นใช้งานหรือป้องกันไม่ให้แอปหลักบังคับใช้กำหนดเวลาหมดเวลาการเริ่มต้นใช้งานแบบ Deterministic | การตรวจสอบส่วนหัว/อินเทอร์เฟซ (เก็บถาวร v2.1.0) และการทดสอบการเปิดแอปด้วยการจำลองอัตราการสูญหายของแพ็กเกจ 100% |
| 4. ความสะอาดของการคอมไพล์และไลบรารีที่พึ่งพา | 15% | เกณฑ์ความสมบูรณ์ในการคอมไพล์ | HARD GATE: นำความขัดแย้งของส่วนพึ่งพาทางอ้อมที่ไม่สามารถแก้ไขได้เข้ามา หรือแนะนำสิทธิ์อันตรายของ Android ที่ไม่มีเอกสารประกอบ ไม่ได้รับการ justification หรือไม่ได้รับการอนุมัติ | ./gradlew :app:dependencies, apkanalyzer apk compare และผลต่างของ AndroidManifest.xml |
| 5. ความเปิดกว้างของข้อมูลฝั่งแบ็กเอนด์ | 15% | การประนีประนอมทางสถาปัตยกรรมที่มีคะแนน | ไม่มี (การขาดการส่งออก HTTP แบบดิบช่วยลดคะแนนรวมสำหรับทีม BI ขององค์กร โดยไม่ทริกเกอร์การบล็อกความสอดคล้องของสstore อัตโนมัติ) | การตรวจสอบ endpoint การส่งออก HTTP ที่มีเอกสารประกอบและสคีมาการตอบกลับ JSON |
กฎการตัดสินใจ: ชุดพัฒนาซอฟต์แวร์ที่เป็นผู้ท้าชิงจะต้องผ่าน Hard Gates การจัดซื้อทั้ง 4 ประการ และบรรลุคะแนนรวมแบบมาตรฐานที่
ข้อผิดพลาดทั่วไปในการเลือก SDK การระบุแหล่งที่มาบนมือถือ
-
ข้อผิดพลาด 1: การเท่าเทียมกันระหว่างการมีไฟล์
PrivacyInfo.xcprivacyกับการปฏิบัติตามความเป็นส่วนตัวของ Apple อย่างสมบูรณ์: การใส่ไฟล์PrivacyInfo.xcprivacyลงใน.xcframeworkจะตอบสนองการตรวจสอบไฟล์แบบสถิตของ Xcode สำหรับ Required Reason API แต่ไม่ได้อนุญาตให้ SDK ทำการทำลายนิ้วมืออุปกรณ์ Apple ห้ามมิให้ใช้ Required Reason API (เช่นSystemBootTimeหรือDiskSpace) หรือคุณลักษณะเครือข่าย/เบราว์เซอร์เพื่อทำลายนิ้วมืออุปกรณ์อย่างชัดเจน -
ข้อผิดพลาด 2: การเลือก SDK โดยพิจารณาจากเปอร์เซ็นต์อัตราการจับคู่ที่เป็นหัวข้อข่าวเพียงอย่างเดียว: การกล่าวอ้างทางการตลาดเกี่ยวกับความแม่นยำในการกู้คืนพารามิเตอร์สูงมักจะสะท้อนถึงสภาพแวดล้อมในห้องปฏิบัติการที่เหมาะสม สถาปนิกจะต้องทดสอบว่า SDK มีพฤติกรรมอย่างไรภายใต้กรณีขอบเขตในโลกแห่งความเป็นจริง: การเปิดแอปครั้งแรกที่ล่าช้า, โหมดการท่องเว็บส่วนตัว, WebView ในแอปโซเชียล และการเปิดแอปครั้งแรกแบบออฟไลน์
-
ข้อผิดพลาด 3: การมองข้ามความเข้ากันได้ของการคอมไพล์ในรุ่น Release และการบำรุงรักษาข้ามแพลตฟอร์ม: SDK ที่ใช้งานได้ในบิวด์สำหรับการดีบักอาจล้มเหลวในบิวด์สำหรับการใช้งานจริงที่ถูกย่อขนาด (Minified) หากอินเทอร์เฟซคอลแบ็กของมันถูกตัดทอนโดย Android R8/ProGuard หรือหากปลั๊กอินตัวห่อหุ้มข้ามแพลตฟอร์มของมันตามการอัปเดต OS เนทีฟไม่ทัน
คำถามที่พบบ่อย (FAQ)
ฉันจะตรวจสอบชุดพัฒนาซอฟต์แวร์ของบุคคลที่สามเพื่อความสอดคล้องด้านความเป็นส่วนตัวของ Apple ได้อย่างไร?
ทำไม SDK การระบุแหล่งที่มาบนมือถือจึงประกาศ System Boot Time และ User Defaults ใน PrivacyInfo.xcprivacy?
ฉันควรืค้นหาอะไรในคำจำกัดความของ API ของ SDK การระบุแหล่งที่มา?
สรุปและรายการตรวจสอบการเลือกใช้ทางเทคนิค
การรู้วิธีเลือกชุดพัฒนาซอฟต์แวร์สำหรับการระบุแหล่งที่มาบนมือถือจำเป็นต้องสร้างความสมดุลระหว่างเป้าหมายการวัดผลทางการตลาดกับการปฏิบัติตามระบบปฏิบัติการที่เข้มงวดและความน่าเชื่อถือขณะรันไทม์ ด้วยการตรวจสอบ SDK ที่เป็นผู้ท้าชิงในด้านไฟล์ Manifest ด้านความเป็นส่วนตัว, โปรโตคอลการกำหนดเส้นทางแบบเนทีฟของแพลตฟอร์ม, ความยืดหยุ่นต่อเวลาหมดเวลาของคอลแบ็ก, ความสะอาดในการคอมไพล์ และความเปิดกว้างของข้อมูล—รวมถึงการบังคับใช้เกณฑ์การจัดซื้อขั้นเด็ดขาดที่ไม่อนุญาตให้ผ่าน—ผู้นำทางเทคนิคสามารถปกป้องแอปพลิเคชันของตนจากการถูกปฏิเสธการตรวจสอบจากสstore และปัญหาการถดถอยในการเริ่มต้นใช้งานได้
ก่อนลงนามอนุมัติการผสานรวม SDK การระบุแหล่งที่มาใดๆ ให้ดำเนินการตามรายการตรวจสอบการจัดซื้อ 4 ขั้นตอนนี้:
-
ตรวจสอบไฟล์ Manifest ด้านความเป็นส่วนตัวและการปฏิบัติตามสัญญาณ: ยืนยันว่าคลังข้อมูล iOS ที่ดาวน์โหลดมา (เช่น v2.1.0) มีไฟล์ Manifest
PrivacyInfo.xcprivacyที่ถูกต้องตามหลักไวยากรณ์ (plutil -lint), ตรวจสอบว่ารหัส Required Reason API ทั้งหมดตรงกับกฎการส่งออกนอกอุปกรณ์ที่ได้รับอนุมัติ, และยืนยันกับผู้ให้บริการว่าการระบุแหล่งที่มาบน iOS หลีกเลี่ยงการทำลายนิ้วมืออุปกรณ์ที่ถูกห้าม -
ดำเนินการแมปความปลอดภัยของข้อมูล Google Play ให้เสร็จสิ้น: ตรวจสอบไฟล์
AndroidManifest.xmlที่รวมอยู่ภายในคลังข้อมูล.aarสำหรับสิทธิ์อันตรายที่ยังไม่ได้รับการอนุมัติ และรับคลังข้อมูลที่สมบูรณ์ของผู้ให้บริการเพื่อแมปฟิลด์การตอบกลับ Install Referrer ทั้งหมด, ตัวระบุอุปกรณ์, และวัตถุประสงค์การรวบรวม/แบ่งปันในประกาศความปลอดภัยของข้อมูล Google Play Console ของคุณ -
ทดสอบเวลาหมดเวลาและความยืดหยุ่นสำรอง: ตรวจสอบลายเซ็นเมธอดจริงทั้งหมดในสภาพแวดล้อมการคอมไพล์ที่สะอาดของคุณ และจำลองสภาพเครือข่ายแบบออฟไลน์และมีความหน่วงสูงในระหว่างการเปิดแอปครั้งแรก เพื่อยืนยันว่าคอลแบ็กการดึงข้อมูลพารามิเตอร์ของ SDK หรือกำหนดเวลา UX ของแอปหลักเสร็จสมบูรณ์แบบ deterministic โดยไม่บล็อก UI
-
คำนวณคะแนนการจัดซื้อแบบมาตรฐาน: ตรวจสอบความสามารถในการส่งออก Data Interface ที่มีเอกสารประกอบของแพลตฟอร์ม และยืนยันว่าผู้สมัครผ่าน Hard Gates การจัดซื้อทั้ง 4 ประการด้วยคะแนนรวมแบบมาตรฐานที่
ทีมวิศวกรรมสามารถลงทะเบียนแอปพลิเคชันจำลองบน คอนโซลนักพัฒนา OpoInstall เพื่อตรวจสอบคลังข้อมูล SDK ปัจจุบัน, ทดสอบพฤติกรรมเวลาหมดเวลา, และประเมินความเหมาะสมของการผสานรวมในสภาพแวดล้อมแซนด์บ็อกซ์ได้
วัสดุและเอกสารที่เกี่ยวข้อง
-
แนวคิด: การเลือกชุดพัฒนาซอฟต์แวร์, ไฟล์ Manifest ความเป็นส่วนตัวของ Apple, Required Reason APIs, ความปลอดภัยของข้อมูล Google Play
-
เทคโนโลยี:
PrivacyInfo.xcprivacy, รายงานความเป็นส่วนตัวของ Xcode, Google Play Install Referrer API, อินเทอร์เฟซการส่งออกข้อมูลผ่าน HTTP -
มาตรฐาน: IETF RFC 9110 HTTP Semantics, IETF RFC 3986 URI Generic Syntax, โครงการความปลอดภัยแอปพลิเคชันมือถือ OWASP
-
อินเทอร์เฟซแพลตฟอร์มและการผสานรวม:
NSPrivacyAccessedAPITypes,UserDefaults(CA92.1),SystemBootTime(35F9.1),DiskSpace(E174.1) -
เอกสารประกอบและข้อมูลอ้างอิงอย่างเป็นทางการ:
Share this article



