常见问题
1.DWPlayInfo数据获取失败的问题
当遇到DWPlayInfo回调失败时,首先要排除userId、APIKEY是否有效,其次判断网络是否正常、是否已经连接、videoId是否是userId和APIKEY名下的视频。除此之外还可以通过HTTP通信日志排查问题。
2.关于加密音视频的播放问题
新版本中,对于原旧版本加密服务DWDrmServer的调用封装到了SDK内部,用户无需再对DWDrmServer服务进行操作,SDK会自动识别加密音视频进行播放。
3.对于通过#import "DWSDK.h"无法引入路径下的文件的问题
找到TARGETS -> Build Setting -> Search Paths。添加Header Search Path
,路径到SDK的文件夹下。若还无法找到,继续添加User Header Search Path
即可。
4.关于控制台频繁出现"[] nw_connection_copy_connected_path"日志的问题
找到Edit Scheme -> Run -> Arguments -> Enviroment Variables,添加属性OS_ACTIVITY_MODE
,设置为0即可。
5.程序进入前台时,下载任务回调可能不执行的问题
我们发现,在iOS12的系统下,app进入前台时,有极小的概率会发生下载的回调不执行的问题。若想临时解决这个问题,只需要在appDelegate的applicationDidBecomeActive:方法中,将正在下载的任务暂停,然后延迟1秒以后在重新开始下载即可。最终还要等待苹果官方解决此问题。
6.当集成4.2.3 SDK时,若出现
Undefined symbols for architecture x84_64:
"__isPlatformVersionAtLeast",referenced from;
...
...
...
ld:symbol(s) not found for architecture x84_64
clane: error: linker command failed with exit code 1 (use -v to see invocation)
编译错误时,请升级4.2.4及以上版本SDK或升级最新的Xcode重新编译即可。
7.升级4.8.0及以后版本编译报错的问题
'DWxxx.h' file not found错误分为以下两种情况:
1.DWSDK.h文件,原DWSDK.h现更名为CCVodSDK.h,使用#import <CCVodSDK/CCVodSDK.h>方式引入头文件。
2.其他SDK文件报错,由于SDK库类型的变化,引入方式修改为#import <CCVodSDK/DWxxx.h>;或删除全部引入异常的头文件,在项目pch文件中,引入#import <CCVodSDK/CCVodSDK.h>即可。
8.集成点播SDK打包上线报错的问题
关于打包上线过程中,不支持 x86_64 和 i386 等情况。错误描述如下:
The following issues occurred while distributing your application.
App Store Connect Operation Error
ERROR ITMS-90097:"Unsupported Architectures. The executable for xxx.framework contains unsupported architectures '[x86_64]."
...
App Store Connect Operation Error
ERROR ITMS-90097:"Unsupported Architectures. The executable for xxx.framework contains unsupported architectures '[x86_64,i386]."
解决方案:Target --> Build Phases --> 点击"+"按钮,选择"New Run Script Phase",在 Run Script 内添加以下脚本方法,重新编译打包即可。
# This script loops through the frameworks embedded in the application and
# removes unused architectures.
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done
9.关于使用Cocoapods更新4.9.0及以上SDK编译报错的问题
由于Xcode12的兼容性问题,在使用Cocoapods集成4.9.0及以上版本的SDK时,会导致如下编译错误
dyld: Library not loaded: @rpath/HDBaseUtils.framework/HDBaseUtils
Referenced from: /private/var/containers/Bundle/Application/83A9ECB5-758F-4B99-90AA-56D4B0D835DC/xxx.app/xxx
Reason: image not found
dyld: launch, loading dependent libraries
DYLD_LIBRARY_PATH=/usr/lib/system/introspection
DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/GPUTools.framework/libglInterpose.dylib:/usr/lib/libMTLCapture.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib
Message from debugger: Terminated due to signal 6
解决方案: 第一步:项目 - TARGETS - Build Phases - Link Binary With Libraries - Add Other - Add Files.. 添加Pods/HDBaseUtils/HDBaseUtils/HDBaseUtils.framework、Pods/CCVodSDK/include/CCVodSDK.framework。
第二步:项目 - TARGETS - General - Frameworks.Libraries,and Embedded Content - 找到HDBaseUtils.framework、CCVodSDK.framework,将默认Do Not Embed修改为Embed & Sign,即可。
10.关于Xcode12.3编译报but the linked and embedded framework 'xxx.framework' was built for iOS + iOS的错误
有两种解决方案,如下: 第一种解决方案:项目 - Target-Build Settings - Validate Workspace 设置成YES。 第二种解决方案:项目 - File - Workspace Settings... - Build System 修改为旧的Legacy Build System (Deprecatied)。
更多信息请参考 “获得场景视频帮助中心”,如果在使用SDK过程中遇到其他问题请联系获得场景视频客服进行反馈。