الـ SDK لنظام iOS مكتبة Swift لتطبيقات iPhone. تجلب عدسات الوجه وتأثيرات الشاشة المنشورة في مساحة عملك باستخدام مفتاح API، وتتحقّق من كل ملف، وتحتفظ بكل إصدار على الهاتف، وترسمها داخل تطبيقك. وهي تتبع التنسيق وقواعد الرسم نفسها التي تتبعها المعاينة الحية في الاستوديو، فترسم ما يراه مصمّموك في المحرّر.
الإصدار الحالي هو 0.2.0. وهو منشور بصيغة ثنائية، مع تطبيق نموذجي، على github.com/Ingevora/mirage-ios.
في Xcode، اختر File → Add Package Dependencies…، وأدخل https://github.com/Ingevora/mirage-ios، واختر الإصدار 0.2.0 تحديدًا. أو أضفها إلى Package.swift:
https://github.com/Ingevora/mirage-ios
Package.swift
.package(url: "https://github.com/Ingevora/mirage-ios.git", exact: "0.2.0"),
ثم أضف المنتج إلى الهدف (target) الخاص بك:
.product(name: "IngevoraMirage", package: "mirage-ios"),
أنشئ عميلًا واحدًا للتطبيق، بمفتاح API الخاص بالتطبيق، واحتفظ به.
import IngevoraMirage let mirage = MirageClient(configuration: .init(apiKey: "mk_…")) // Prefetch what the app will show, so it starts without waiting. let effect = try await mirage.prefetchEffect(id: "7c1e9a2b-4d3f-4a6e-8b5c-2f9d0e1a3b4c")
async
prefetchLens(id:version:)
prefetchEffect(id:version:)
version
// One player per screen that shows effects; keep it, for example in the screen's view model. let player = MirageEffectPlayer(mirage: mirage) // SwiftUI: an overlay above the screen's content. It passes every touch through. content.overlay { MirageEffectOverlay(player: player).ignoresSafeArea() } // UIKit: add MirageEffectView(player: player) above the content, pinned to the screen's edges. player.play(effectId: "7c1e9a2b-4d3f-4a6e-8b5c-2f9d0e1a3b4c") player.onEnd = { playback in if playback.state == .ended(.finished) { // the effect finished } }
player.cue(effectId:)
Codable
player.play(cue)
// One player per camera session; keep it. let lens = MirageLensPlayer(mirage: mirage) lens.attach(lensId: "3f2b8c1e-6d4a-4f7e-9b2c-8a1d5e6f7a90") // stored at once, else downloaded // On your video queue, for every camera frame: send it, and show the frame that comes back. let drawn = lens.process(pixelBuffer, time: presentationTime, orientation: .right) // The self-view, in SwiftUI; MirageLensPreviewView(player: lens) in UIKit. MirageLensPreview(player: lens)
process
.right
process(_:time:orientation:face:)
state
يرسل تطبيقك أسماء أحداثه الخاصة، فتعمل المُشغِّلات التي تستمع إليها:
player.fire(event: "order.placed") // every running screen effect lens.fire(event: "round.start") // the attached face lens
يُتجاهل أي اسم لا يسمح به التنسيق. راجع المُشغِّلات وأحداثك.
كل إخفاق يكون من نوع MirageError:
MirageError
invalidAPIKey
401
productDisabled
403
notFound
404
unavailable
429
5xx
engineTooOld
unsupportedFormat
invalidPackage
قد يضيف إصدار لاحق حالات جديدة إلى أنواع enum في الـ SDK، لذا تحتاج عبارة switch على أحدها إلى @unknown default:
switch
@unknown default
switch error { case .invalidAPIKey: showKeyHelp() case .notFound: showMissing() default: showRetry() // or list every case, then `@unknown default:` }
راجع الأخطاء والحدود.
Library/Caches/com.ingevora.mirage
clearCache()
freshness
source
.cacheFallback
لا تشغّل الـ SDK إلا عدسات الوجه وتأثيرات الشاشة المنشورة. لتجربة مسودة عدسة وجه قبل نشرها، استخدم الاختبار على هاتفك: يفتح رمز QR الخاص بها المسودة على كاميرا هاتفك، داخل المتصفح.
يتضمّن إطار العمل ملف بيان خصوصية (PrivacyInfo.xcprivacy): لا تجمع الـ SDK أي بيانات، ولا تُجري أي تتبّع، ولا تستخدم أيًا من واجهات API التي تطلب Apple تبريرًا لاستخدامها. ولا تغادر إطارات الكاميرا الهاتف أبدًا.
PrivacyInfo.xcprivacy
يعرض الملف Example/MirageExample.xcodeproj في المستودع عملية الدمج كاملة في أربعة ملفات قصيرة. افتحه، واختر فريقك ومعرّف حزمة (bundle ID) خاصًا بك (من Signing & Capabilities في الهدف)، وشغّله على iPhone. الصق مفتاح API الخاص بك، ثم معرّف عدسة وجه أو تأثير شاشة منشور.
Example/MirageExample.xcodeproj