حزمة 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 Anchor
تفعيل 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
في تقرير تتبُّع تسلسل استدعاء الدوال البرمجية، من المحتمل أن يكون ذلك بسبب
إلى إعدادات المخطط الافتراضية.
الحلّ
الانتقال إلى Product > Scheme > Edit Scheme…
افتح علامة التبويب "Run".
انقر على Options للاطّلاع على إعداداتك الحالية.
تأكَّد من إيقاف كل من GPU Frame Capture وMetal API Validation.
أنشئ تطبيقك وشغِّله.
يمكنك الاطّلاع على CHANGELOG
Cocoapods للاطّلاع على المشاكل المعروفة الأخرى.
القيود
لا تتوافق حزمة ARCore SDK لنظام التشغيل iOS مع طلب طريقة ARKit setWorldOrigin(relativeTransform:)
.
اعتبارات الأداء
يزداد استخدام الذاكرة عند تفعيل ARCore API. يمكنك توقُّع لارتفاع استخدام بطارية الجهاز بسبب زيادة استخدام الشبكة واستخدام وحدة المعالجة المركزية (CPU).