uni-app 应用内导航插件需求 支持ios和安卓 是否有人有兴趣帮忙开发

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

uni-app 应用内导航插件需求 支持ios和安卓 是否有人有兴趣帮忙开发

3 回复

高德导航不知道满足不? 插件需求找我 Q 1196097915


有现成的地图导航插件,联系QQ:16792999 第三方sdk原生安卓和ios插件开发

当然,对于开发一个支持iOS和Android的uni-app应用内导航插件,我们可以考虑利用uni-app的插件机制来实现跨平台导航功能。以下是一个简单的代码案例,展示如何创建一个基本的导航插件,该插件将能够在uni-app项目中调用系统的地图应用进行导航。

插件开发步骤

  1. 创建插件项目

    首先,在uni-app项目根目录下,使用HBuilderX创建一个新的原生插件项目。

  2. 编写插件代码

    在插件项目中,我们需要为iOS和Android分别编写代码。

    iOS部分(Objective-C/Swift)

    // MyNavigationPlugin.m
    #import <Foundation/Foundation.h>
    #import <UniAppPlugin/UniPlugin.h>
    
    [@interface](/user/interface) MyNavigationPlugin : NSObject <UniPluginProtocol>
    [@end](/user/end)
    
    [@implementation](/user/implementation) MyNavigationPlugin
    
    - (void)navigateTo:(NSDictionary *)args callback:(UniJSCallback *)callback {
        NSString *latitude = args[@"latitude"];
        NSString *longitude = args[@"longitude"];
        NSString *destinationName = args[@"destinationName"];
    
        NSString *url = [NSString stringWithFormat:@"maps:0,0?q=%@,%@", latitude, longitude];
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url] options:@{} completionHandler:nil];
    
        callback(@[@"success"]);
    }
    
    [@end](/user/end)
    

    Android部分(Java/Kotlin)

    // MyNavigationPlugin.java
    import io.dcloud.feature.uniapp.bridge.UniJSCallback;
    import io.dcloud.feature.uniapp.common.UniModule;
    
    public class MyNavigationPlugin extends UniModule {
    
        public void navigateTo(JSONObject args, UniJSCallback callback) {
            String latitude = args.optString("latitude");
            String longitude = args.optString("longitude");
            String destinationName = args.optString("destinationName");
    
            String url = String.format("geo:0,0?q=%s,%s", latitude, longitude);
            try {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                getContext().startActivity(intent);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            callback.invokeAndKeepAlive(new JSONArray().put("success"));
        }
    }
    
  3. 注册插件

    manifest.json中注册插件,并暴露navigateTo方法。

  4. 在uni-app项目中使用插件

    // 在uni-app项目中调用插件
    const myNavigation = uni.requireNativePlugin('MyNavigationPlugin');
    myNavigation.navigateTo({
        latitude: '39.9042',
        longitude: '116.4074',
        destinationName: 'Beijing'
    }, (res) => {
        console.log(res);
    });
    

以上代码案例展示了如何创建一个基本的导航插件,通过调用系统的地图应用进行导航。当然,实际开发中可能需要处理更多细节,比如错误处理、参数校验等。希望这个案例能为你提供一个良好的起点。

回到顶部