i***@fjskec.com
i***@fjskec.com
  • 发布:2026-02-05 11:35
  • 更新:2026-02-05 14:02
  • 阅读:29

#插件需求# uniapp(ios端)接入AR引擎外委需求

分类:招聘与外包

需求描述
需要将AR引擎sdk插件,接入到uniapp的ios离线工程里面(由我们提供现有的ios离线工程),在uniapp中去调用离线工程暴露的方法查看AR并使用相关功能。
需求目的
在ios手机上能够查看模型,能够上传到testFlight上,且不影响已接入的其他插件功能

具体需要实现的功能:
1.能够在ios里面查看模型文件,具备默认自带的操作栏功能,添加业务需求的操作栏按钮(部分调用ios原生方法, 部分调用引擎内部方法),示例(android)见附件。

具体实现思路:
1.准备好ios的sdk文件
2.准备好ios工程文件
3.按照文档说明导入sdk里面指定的文件到ios工程里面
4.对这个工程进行一些必要的配置设置
5.引擎加载:是需要我们在工程里面去定义一个页面,在页面里去调用模型渲染的方法,然后加载模型
(有文档说明)
6.需要把这个方法按照uniapp的形式暴露出来,这里可能需要参考uniapp官网文档ios插件开发教程。
7.在uni-app上我们通过下面这个方法来调用该实例,调用方法和传参来显示模型。
uni.requireNativePlugin('DCloud-RichAlert');
8.我们在uni-app里,另一个类似插件调用模型的方法示例如下:

  var reModule =    
  uni.requireNativePlugin('BlackHoleUniAppTestUniplugin-REModule') || {};    
export async function previewBim(id) {    
  try {    
    uni.showLoading({    
      title: '加载中',    
    });    
    let res = await getUrn({    
      data: [id],    
    });    
    if (res.code == '1') {    
      reModule.showEngineRender(    
        {    
          modelUrl: (res.result[0] || {}).resourceId,    
          dataSetId: (res.result[0] || {}).modelId,    
        },    
        (ret) => {    
          uni.showToast({    
            title: ret.msg,    
            icon: 'none',    
          });    
        }    
      );    
    }    
    this.$nextTick((item) => {    
      uni.hideLoading();    
    });    
  } catch (e) {    
    uni.hideLoading();    
    console.log(e);    
  }    
}  

我们也可以提供离线工程里面实现该方法的相关代码以供参考。

提供的文件包含:
uniapp- ios端离线工程
IOS SDK 文件
IOS demo示例工程
等需要的相关文件

感兴趣的朋友可以加下微信沟通下。二维码在附件图片里面

2026-02-05 11:35 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

根据知识库中关于「uni-app 与原生 App 混合开发」的说明,结合你给出的需求,可以把整个外委任务拆成 5 个明确步骤,每一步都有官方文档或社区最佳实践可依,供你和外委团队对照执行即可。

  1. 明确主从关系
    你们的应用主体是 uni-app(离线打包),AR 引擎只是扩展能力。因此应走「原生插件」路线,而不是「uni 小程序 SDK」路线。
    参考文档:原生插件开发教程

  2. 离线工程准备
    你们已提供现有 iOS 离线工程,外委方只需在该工程里继续集成,无需重新创建。离线打包 SDK 获取与目录规范见:
    App 离线打包 SDK

  3. 集成 AR SDK
    按 AR 引擎官方文档把 framework / bundle / 权限 / Info.plist 配置全部加进离线工程。
    这一步纯原生操作,与 uni-app 无关,只要保证离线工程能独立编译通过即可。

  4. 封装 uni-app 原生插件
    4.1 在离线工程中新建一个继承自 DCUniModule 的类(如 AREngineModule),实现 showEngineRender 方法,方法内部调 AR SDK 的加载与展示逻辑。
    4.2 在类上方写 UNI_EXPORT_METHOD(@selector(showEngineRender:callback:)) 把方法暴露给 uni-app。
    4.3 把该类及依赖库一起打成 plugin 文件夹,放到 uni_modules/xxx/ios/ 目录。
    官方示例与模板:iOS 原生插件示例

  5. uni-app 端调用
    前端代码与你们给出的示例完全一致:

    const reModule = uni.requireNativePlugin('BlackHoleUniAppTestUniplugin-REModule')  
    reModule.showEngineRender({  
       modelUrl: 'xxx',  
       dataSetId: 'yyy'  
    }, ret => {  
       uni.showToast({ title: ret.msg, icon: 'none' })  
    })  

    只要插件的 UNI_EXPORT_METHOD 名字与前端保持一致即可。

额外注意点

  • 如果 AR 引擎需要额外权限(如相机、麦克风),务必在 Info.plist 里声明,并在插件内部做权限检查。
  • 若 AR 引擎体积较大,建议用「条件编译」仅在 App-iOS 平台引入,减少包体:
    // #ifdef APP-IOS  
    const reModule = uni.requireNativePlugin('xxx')  
    // #endif  
  • 最终 ipa 需上传 TestFlight,请确认离线打包使用的证书与描述文件包含 TestFlight 支持。
内容为 AI 生成,仅供参考
三杯五岳

三杯五岳 - 专业插件定制Q:2579546054

要回复问题请先登录注册