دليل المطوِّر في Cloud Anchors لنظام التشغيل iOS

حزمة ARCore SDK لواجهات iOS مع ARKit لتوفير Cloud Anchor Google، مما يتيح لك مشاركة علامات الارتساء بين أجهزة 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 Anchors:

تفعيل Cloud Anchors في تطبيقك

لاستخدام واجهة برمجة تطبيقات Cloud Anchors، عليك إنشاء GARSessionConfiguration وتعيين السمة cloudAnchorMode له، كما هو موضح في إعداد جلسة ARCore في iOS استخدام setConfiguration:error: (GARSession) لضبط الإعدادات.

يجب أيضًا تفعيل ARCore API. على تطبيقك.

استضافة الإعلانات الثابتة وحلها

يمكنك استضافة علامات ارتساء على السحابة الإلكترونية وحلّها باستخدام واجهة برمجة التطبيقات ARCore Cloud Anchor API. واجهة برمجة التطبيقات يتضمن طرق معاودة الاتصال للعمليات المكتملة، وكذلك الكائنات المستقبلية التي يمكن استطلاع رأيها

استضافة إعلان ثابت في أسفل الصفحة

تؤدي استضافة 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 الحصص التالية لمعدل نقل البيانات للطلب:

نوع الحصة الحد الأقصى المدة ينطبق على
عدد علامات الارتساء غير محدودة لا ينطبق Project
طلبات مضيف ثابتة 30 دقيقة عنوان IP والمشروع
طلبات الحل للارتساء 300 دقيقة عنوان IP والمشروع

المشاكل المعروفة والحلول البديلة

هناك بعض المشاكل المعروفة عند التعامل مع ARCore SDK لنظام التشغيل iOS.

تتسبب إعدادات المخطط التلقائية في تعطُّل التطبيق على فترات متقطعة

يتم تفعيل إعدادات "التقاط إطار وحدة معالجة الرسومات" ومخطط التحقق من صحة واجهة برمجة التطبيقات Metal API من خلال والذي قد يؤدي أحيانًا إلى تعطُّل التطبيق داخل حزمة SDK.

تشخيص أعطال التطبيق

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

الحلّ

  1. الانتقال إلى Product > Scheme > Edit Scheme…

  2. افتح علامة التبويب "Run".

  3. انقر على Options للاطّلاع على إعداداتك الحالية.

  4. تأكَّد من إيقاف كل من GPU Frame Capture وMetal API Validation.

  5. أنشئ تطبيقك وشغِّله.

يمكنك الاطّلاع على CHANGELOG Cocoapods للاطّلاع على المشاكل المعروفة الأخرى.

القيود

لا تتوافق حزمة ARCore SDK لنظام التشغيل iOS مع طلب طريقة ARKit setWorldOrigin(relativeTransform:).

اعتبارات الأداء

يزداد استخدام الذاكرة عند تفعيل ARCore API. يمكنك توقُّع لارتفاع استخدام بطارية الجهاز بسبب زيادة استخدام الشبكة واستخدام وحدة المعالجة المركزية (CPU).

الخطوات التالية