Android movFilePlay视频播放Java逻辑转Objective-C代码求助
问题背景
- 故障表现:iOS端App打开对应业务页面时,视频无法正常播放
- 排查结果:项目内
StandardPlug.m文件缺失movFilePlay服务对应的实现逻辑 - 处理需求:将已有的Android端Java功能实现转换为Objective-C代码,补入项目指定位置
参考Android端Java源码
else if(mServiceId.equals("movFilePlay")) { //hband 이상연대표 요청 220415 String filePath = mParamData.getString( "filePath" ); Intent intent = new Intent( Intent.ACTION_VIEW ); intent.setData( Uri.parse( filePath ) ); startActivity( intent ); break; }
转换后Objective-C实现代码
代码逻辑完全对齐Android端实现,同时适配iOS系统URL规则,避免本地路径打开失败问题:
else if ([mServiceId isEqualToString:@"movFilePlay"]) { // hband需求 220415 // 从参数字典中获取视频路径 NSString *filePath = mParamData[@"filePath"]; NSURL *targetURL = nil; // 区分网络路径/本地路径,生成符合系统要求的URL格式 if ([filePath hasPrefix:@"http://"] || [filePath hasPrefix:@"https://"]) { targetURL = [NSURL URLWithString:filePath]; } else { targetURL = [NSURL fileURLWithPath:filePath]; } // 调用系统默认能力打开视频,对齐Android端ACTION_VIEW逻辑 if ([[UIApplication sharedApplication] canOpenURL:targetURL]) { [[UIApplication sharedApplication] openURL:targetURL options:@{} completionHandler:nil]; } break; }
接入注意事项
- 将上述代码添加到
StandardPlug.m文件中服务ID分支判断的对应位置,和其他服务的判断分支保持同级即可 - 若路径包含中文或特殊字符,需要先对
filePath做百分号编码处理,避免URL生成失败 - 若后续需要改为应用内播放器播放,只需替换上述代码中调用系统打开URL的部分,将
targetURL传入自定义播放器组件即可
内容的提问来源于stack exchange,提问作者STARK
相关产品推荐
相关产品推荐

