حزمة ARCore SDK لواجهات iOS مع ARKit لتوفير Cloud Anchor الأخرى، بما يتيح لك مشاركة علامات الارتساء بين أجهزة iOS وAndroid في نفس البيئة.
تعرَّف على كيفية استخدام ARCore Cloud Anchor API أو خدمة ARCore Cloud Anchor في تطبيقاتك.
المتطلبات الأساسية
- الإصدار 13.0 من Xcode أو إصدار أحدث
- Cocoapods 1.4.0 أو إصدار أحدث في حال استخدام Cocoapods
- جهاز Apple متوافق مع ARKit ويعمل بنظام التشغيل iOS 12.0 أو إصدار أحدث (مطلوب النشر بالإصدار 12.0 أو إصدار أحدث من نظام التشغيل iOS)
إذا كنت مستخدمًا جديدًا لميزة "تثبيتات السحابة الإلكترونية":
تأكَّد من فهم العملية المستخدَمة لاستضافة "هِمّة" Cloud وحلّها.
راجع التشغيل السريع للتعرف على متطلبات النظام، وإرشادات التثبيت والإعداد.
الاطلاع على أحد نماذج Cloud Anchor
تفعيل Cloud Anchors في تطبيقك
لاستخدام واجهة برمجة تطبيقات Cloud Anchors، عليك إنشاء GARSessionConfiguration
وضبط السمة cloudAnchorMode
لها، كما هو موضّح في ضبط جلسة ARCore في نظام التشغيل iOS. استخدِم
setConfiguration:error: (GARSession)
لضبط الإعدادات.
يجب أيضًا تفعيل ARCore API. على تطبيقك.
استضافة الإعلانات الثابتة وحلها
يمكنك استضافة نقاط تثبيت السحابة الإلكترونية وحلّها باستخدام واجهة برمجة التطبيقات ARCore Cloud Anchor API. تتضمّن واجهة برمجة التطبيقات methods طلبات استدعاء للعمليات المكتملة، بالإضافة إلى عناصر Future التي يمكن فحصها.
استضافة إعلان ثابت في أسفل الصفحة
عند استضافة ARAnchor
، يتم وضع العنصر الأساسي في نظام إحداثيات شائع لأي مساحة مكانية معيّنة.
يرسل طلب المضيف بيانات مرئية إلى خادم Google الذي يضبط خادم ARAnchor
.
الموضع في نظام إحداثي يمثل المساحة المادية الحالية. حاسمة
طلب مضيف ناجح يؤدي إلى إرجاع معرّف Cloud Anchor جديد، والذي يمكن مشاركته
يُستخدم لحل علامة الارتساء لاحقًا.
- (void)addAnchorWithTransform:(matrix_float4x4)transform {
self.arAnchor = [[ARAnchor alloc] initWithTransform:transform];
[self.sceneView.session addAnchor:self.arAnchor];
__weak ExampleViewController *weakSelf = self;
self.hostFuture = [self.cloudAnchorManager
hostCloudAnchor:self.arAnchor
completion:^(NSString *anchorId, GARCloudAnchorState cloudState) {
[weakSelf handleHostAnchor:anchorId cloudState:cloudState];
}
error:nil];
[self enterState:HelloARStateHosting];
}
حلّ علامة الارتساء
يؤدي حلّ ARAnchor
إلى السماح لأجهزة Android وiOS في مساحة جغرافية معيّنة
بإضافة عناصر تثبيت مستضافة سابقًا إلى المشاهد الجديدة.
عند طلب الحل، يتم إرسال "رقم تعريف ارتساء السحابة الإلكترونية" إلى جانب البيانات المرئية إلى خادم Google. من الإطار الحالي. سيحاول الخادم مطابقة هذه البيانات المرئية مع صور الأماكن التي تمّ ربط "نقاط الإسناد في السحابة" المستضافة حاليًا بها. فعندما بنجاح، تتم إضافة علامة ارتساء جديدة إلى الجلسة وإعادتها.
- (void)resolveAnchorWithIdentifier:(NSString *)identifier {
GARResolveCloudAnchorFuture *garFuture =
[self.gSession resolveCloudAnchorWithIdentifier:identifier
completionHandler:completion
error:&error];
}
// Pass the ARFRame to the ARCore session every time there is a frame update.
// This returns a GARFrame that contains a list of updated anchors. If your
// anchor's pose or tracking state changed, your anchor will be in the list.
- (void)cloudAnchorManager:(CloudAnchorManager *)manager didUpdateFrame:(GARFrame *)garFrame {
for (GARAnchor *garAnchor in garFrame.updatedAnchors) {
if ([garAnchor isEqual:self.garAnchor] && self.resolvedAnchorNode) {
self.resolvedAnchorNode.simdTransform = garAnchor.transform;
self.resolvedAnchorNode.hidden = !garAnchor.hasValidTransform;
}
}
}
GARSession
نمط الاستطلاع الاختياري
إذا كنت تستخدم Metal أو كنت بحاجة إلى خيار طلب معلومات، وكان تطبيقك يعمل بمعدل رسوم متحركة لا يقل عن 30 لقطة في الثانية، استخدِم النمط التالي لتمرير ARFrame
إلى
GARSession
:
-(void)myOwnPersonalUpdateMethod {
ARFrame *arFrame = arSession.currentFrame;
NSError *error = nil;
GARFrame *garFrame = [garSession update:arFrame error:&error];
// your update code here
}
حصص واجهة برمجة التطبيقات
تتضمّن واجهة برمجة التطبيقات ARCore API الحصص التالية لمعدل نقل بيانات الطلبات:
نوع الحصة | الحد الأقصى | المدة | ينطبق على |
---|---|---|---|
عدد علامات الارتساء | غير محدودة | لا ينطبق | Project |
طلبات استضافة المحتوى الأساسي | 30 | دقيقة | عنوان IP والمشروع |
طلبات حلّ التناقضات | 300 | دقيقة | عنوان IP والمشروع |
المشاكل المعروفة والحلول البديلة
هناك بعض المشاكل المعروفة عند التعامل مع ARCore SDK لنظام التشغيل iOS.
إعدادات المخطّط التلقائية تؤدي إلى تعطُّل التطبيق بشكل متقطّع
يتم تفعيل إعدادات مخطط التحقّق من واجهة برمجة التطبيقات Metal API و"التقاط اللقطات باستخدام وحدة معالجة الرسومات" تلقائيًا، ما قد يؤدي أحيانًا إلى تعطُّل التطبيق داخل حزمة SDK.
تشخيص أعطال التطبيق
عند الاشتباه في حدوث عطل، يمكنك إلقاء نظرة على تقرير تتبُّع تسلسل استدعاء الدوال البرمجية.
إذا ظهر لك الرمز MTLDebugComputeCommandEncoder
في تتبع تسلسل استدعاء الدوال البرمجية، من المرجّح أن يكون ذلك ناتجًا عن
إعدادات المخطّط التلقائية.
حلّ بديل
الانتقال إلى Product > Scheme > Edit Scheme…
افتح علامة التبويب "Run".
انقر على Options لعرض إعداداتك الحالية.
تأكَّد من إيقاف كل من GPU Frame Capture وMetal API Validation.
أنشئ تطبيقك وشغِّله.
يمكنك الاطّلاع على CHANGELOG
Cocoapods للاطّلاع على المشاكل المعروفة الأخرى.
القيود
لا تتوافق حزمة تطوير البرامج (SDK) لـ ARCore على نظام التشغيل iOS مع طلب setWorldOrigin(relativeTransform:)
في ARKit.
اعتبارات الأداء
يزداد استخدام الذاكرة عند تفعيل ARCore API. من المتوقّع أن يزداد استهلاك البطارية في الجهاز بسبب زيادة استخدام الشبكة ووحدة المعالجة المركزية.