uni-app ios端接入图形引擎外委需求

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app ios端接入图形引擎外委需求 需求描述
需要将图形引擎sdk插件,接入到uniapp的ios离线工程里面(由我们提供现有的ios离线工程),在uniapp中去调用离线工程暴露的方法查看模型并使用相关功能。

需求目的
在ios手机上能够查看模型,能够上传到testFlight上,且不影响已接入的其他插件功能。

具体需要实现的功能:

  1. 能够在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里,android端上调用模型的方法示例如下:
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);  
  }  
}  

5 回复

可以做,联系QQ:1804945430


可以做 专业插件开发 q 1196097915 主页 https://ask.dcloud.net.cn/question/91948

v:mingboai2024 私信给你报价

可以开发,联系:18968864472(同微)

针对uni-app在iOS端接入图形引擎的外委需求,以下是一个简要的实现思路和代码示例。由于具体图形引擎的接入会依赖于引擎的SDK及其API,这里假设我们使用一个假想的图形引擎“GraphEngine”来进行演示。

实现思路

  1. 准备图形引擎SDK

    • 确保你已经获得了GraphEngine的iOS SDK,并了解其基本使用方法。
  2. 创建uni-app项目

    • 使用HBuilderX或其他支持uni-app的开发工具创建一个新项目。
  3. 配置原生插件

    • 在uni-app项目的manifest.json中配置原生插件,指向GraphEngine的iOS SDK。
  4. 编写原生代码

    • 在iOS原生代码中,编写桥接代码,将GraphEngine的功能暴露给uni-app的JavaScript环境。
  5. 调用图形引擎

    • 在uni-app的JavaScript代码中,通过JSBridge调用原生插件的方法,使用GraphEngine进行图形渲染。

代码示例

1. 配置原生插件(manifest.json

{
  "mp-weixin": {},
  "app-plus": {
    "distribute": {
      "plugins": {
        "GraphEnginePlugin": {
          "version": "1.0.0",
          "provider": "your_provider_name",
          "sdkConfigs": {
            "iOS": {
              "framework": "GraphEngine.framework"
            }
          }
        }
      }
    }
  }
}

2. 编写原生代码(Objective-C/Swift)

// GraphEngineBridge.m
#import <Foundation/Foundation.h>
#import <UniAppJSBridge/UniModule.h>
#import <GraphEngine/GraphEngine.h>

@interface GraphEngineBridge : NSObject <UniModule>

@end

@implementation GraphEngineBridge

- (void)renderGraph:(NSDictionary *)params resolve:(nullable UniPromiseResolveBlock)resolve reject:(nullable UniPromiseRejectBlock)reject {
    GraphEngine *engine = [[GraphEngine alloc] init];
    // 假设GraphEngine有一个render方法,接受参数并渲染图形
    [engine renderWithOptions:params completion:^(BOOL success) {
        if (success) {
            resolve(@"Rendering successful");
        } else {
            reject(@"Rendering failed");
        }
    }];
}

@end

3. 在uni-app中调用

// 在uni-app的某个页面中
export default {
    methods: {
        renderGraph() {
            const options = {
                // 图形引擎所需的参数
            };
            uni.requireNativePlugin('GraphEnginePlugin').renderGraph(options)
                .then(result => {
                    console.log(result);
                })
                .catch(error => {
                    console.error(error);
                });
        }
    },
    onLoad() {
        this.renderGraph();
    }
}

注意事项

  • 上述代码仅为示例,具体实现需根据GraphEngine的实际API进行调整。
  • 确保GraphEngine的iOS SDK已正确集成到uni-app的原生项目中。
  • 考虑到性能和兼容性,务必在真机上进行充分测试。
回到顶部