Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
tx_player_fork
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蒋俊
tx_player_fork
Commits
ae72a6d8
提交
ae72a6d8
authored
11月 10, 2023
作者:
kongdywang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1. fix fileId preDownload not callback when error
2. fix fileId preDownload failed with sign
上级
c0cb0201
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
121 行增加
和
36 行删除
+121
-36
FTXDownloadManager.java
...main/java/com/tencent/vod/flutter/FTXDownloadManager.java
+6
-3
FTXDownloadManager.m
Flutter/ios/Classes/FTXDownloadManager.m
+39
-32
PredownloadFileHelperDelegate.h
Flutter/ios/Classes/helper/PredownloadFileHelperDelegate.h
+23
-0
PredownloadFileHelperDelegate.m
Flutter/ios/Classes/helper/PredownloadFileHelperDelegate.m
+44
-0
txvoddownload_controller.dart
Flutter/lib/Core/txvoddownload_controller.dart
+9
-1
没有找到文件。
Flutter/android/src/main/java/com/tencent/vod/flutter/FTXDownloadManager.java
浏览文件 @
ae72a6d8
...
...
@@ -95,8 +95,11 @@ public class FTXDownloadManager implements ITXVodDownloadListener, TXFlutterDown
sendSuccessEvent
(
CommonUtil
.
getParams
(
FTXEvent
.
EVENT_PREDOWNLOAD_ON_COMPLETE
,
bundle
));
}
private
void
onErrorEvent
(
int
taskId
,
String
url
,
int
code
,
String
msg
)
{
private
void
onErrorEvent
(
long
tmpTaskId
,
int
taskId
,
String
url
,
int
code
,
String
msg
)
{
Bundle
bundle
=
new
Bundle
();
if
(
tmpTaskId
>=
0
)
{
bundle
.
putLong
(
"tmpTaskId"
,
tmpTaskId
);
}
bundle
.
putInt
(
"taskId"
,
taskId
);
bundle
.
putInt
(
"code"
,
code
);
bundle
.
putString
(
"url"
,
url
);
...
...
@@ -293,7 +296,7 @@ public class FTXDownloadManager implements ITXVodDownloadListener, TXFlutterDown
@Override
public
void
onError
(
int
taskID
,
String
url
,
int
code
,
String
msg
)
{
onErrorEvent
(
taskID
,
url
,
code
,
msg
);
onErrorEvent
(
-
1
,
taskID
,
url
,
code
,
msg
);
}
});
IntMsg
res
=
new
IntMsg
();
...
...
@@ -337,7 +340,7 @@ public class FTXDownloadManager implements ITXVodDownloadListener, TXFlutterDown
@Override
public
void
onError
(
int
taskID
,
String
url
,
int
code
,
String
msg
)
{
onErrorEvent
(
taskID
,
url
,
code
,
msg
);
onErrorEvent
(
t
mpTaskId
,
t
askID
,
url
,
code
,
msg
);
}
});
if
(
isUrlPreload
&&
tmpTaskId
>=
0
)
{
...
...
Flutter/ios/Classes/FTXDownloadManager.m
浏览文件 @
ae72a6d8
...
...
@@ -9,11 +9,12 @@
#import "FTXEvent.h"
#import "CommonUtil.h"
#import "FtxMessages.h"
#import "PredownloadFileHelperDelegate.h"
@interface
FTXDownloadManager
()
<
FlutterStreamHandler
,
TXVodPreloadManagerDelegate
,
TXVodDownloadDelegate
,
TXFlutterDownloadApi
>
@property
(
nonatomic
,
strong
)
dispatch_queue_t
mPreloadQueue
;
@property
(
atomic
,
strong
)
NSMutable
Dictionary
*
mPreloadFileDic
;
@property
(
atomic
,
strong
)
NSMutable
Array
*
delegateArray
;
@end
...
...
@@ -36,7 +37,7 @@
NSString
*
path
=
[
NSString
stringWithFormat
:
@"%@/videoCache"
,
cachesDir
];
[[
TXVodDownloadManager
shareInstance
]
setDownloadPath
:
path
];
self
.
mPreloadQueue
=
dispatch_queue_create
(
@"cloud.tencent.com.preload"
,
NULL
);
self
.
mPreloadFileDic
=
@{}.
mutableCopy
;
self
.
delegateArray
=
[[
NSMutableArray
alloc
]
init
]
;
}
return
self
;
}
...
...
@@ -60,15 +61,31 @@
[
_eventSink
success
:[
FTXDownloadManager
getParamsWithEvent
:
EVENT_PREDOWNLOAD_ON_START
withParams
:
dict
]];
}
-
(
void
)
addPreloadFileStartTask
:
(
NSString
*
)
fileId
tmpTaskId
:
(
long
)
tmpTaskId
{
@synchronized
(
self
.
mPreloadFileDic
)
{
self
.
mPreloadFileDic
[
fileId
]
=
@
(
tmpTaskId
);
-
(
void
)
onErrorEvent
:
(
long
)
tmpTaskId
taskId
:
(
int
)
taskID
url
:
(
NSString
*
)
url
error
:
(
NSError
*
)
error
{
NSMutableDictionary
*
dict
=
[
NSMutableDictionary
dictionary
];
if
(
tmpTaskId
>=
0
)
{
[
dict
setObject
:
@
(
tmpTaskId
)
forKey
:
@"tmpTaskId"
];
}
[
dict
setObject
:
@
(
taskID
)
forKey
:
@"taskId"
];
[
dict
setObject
:
url
forKey
:
@"url"
];
[
dict
setObject
:
@
(
error
.
code
)
forKey
:
@"code"
];
if
(
nil
!=
error
.
userInfo
.
description
)
{
[
dict
setObject
:
error
.
userInfo
.
description
forKey
:
@"msg"
];
}
[
_eventSink
success
:[
FTXDownloadManager
getParamsWithEvent
:
EVENT_PREDOWNLOAD_ON_ERROR
withParams
:
dict
]];
}
-
(
void
)
removePreDelegate
:
(
PredownloadFileHelperDelegate
*
)
delegate
{
@synchronized
(
self
.
delegateArray
)
{
[
self
.
delegateArray
removeObject
:
delegate
];
}
}
-
(
void
)
removePreloadFileStartTask
:
(
NSString
*
)
fileId
{
@synchronized
(
self
.
mPreloadFileDic
)
{
[
self
.
mPreloadFileDic
removeObjectForKey
:
fileId
];
-
(
void
)
addPreDelegate
:
(
PredownloadFileHelperDelegate
*
)
delegate
{
@synchronized
(
self
.
delegateArray
)
{
if
(
!
[
self
.
delegateArray
containsObject
:
delegate
])
{
[
self
.
delegateArray
addObject
:
delegate
];
}
}
}
...
...
@@ -107,16 +124,6 @@
#pragma mark - TXVodPreloadManager delegate
-
(
void
)
onStart
:
(
int
)
taskID
fileId
:
(
NSString
*
)
fileId
url
:
(
NSString
*
)
url
param
:
(
NSDictionary
*
)
param
{
if
(
self
.
mPreloadFileDic
[
fileId
]
&&
[
self
.
mPreloadFileDic
[
fileId
]
isKindOfClass
:[
NSNumber
class
]])
{
long
tmpTaskId
=
[
self
.
mPreloadFileDic
[
fileId
]
longValue
];
if
(
tmpTaskId
>=
0
)
{
[
self
onStartEvent
:
tmpTaskId
taskID
:
taskID
fileId
:
fileId
url
:
url
param
:
param
];
[
self
removePreloadFileStartTask
:
fileId
];
}
}
}
-
(
void
)
onComplete
:
(
int
)
taskID
url
:
(
NSString
*
)
url
{
NSMutableDictionary
*
dict
=
[
NSMutableDictionary
dictionary
];
...
...
@@ -127,14 +134,7 @@
-
(
void
)
onError
:
(
int
)
taskID
url
:
(
NSString
*
)
url
error
:
(
NSError
*
)
error
{
NSMutableDictionary
*
dict
=
[
NSMutableDictionary
dictionary
];
[
dict
setObject
:
@
(
taskID
)
forKey
:
@"taskId"
];
[
dict
setObject
:
url
forKey
:
@"url"
];
[
dict
setObject
:
@
(
error
.
code
)
forKey
:
@"code"
];
if
(
nil
!=
error
.
userInfo
.
description
)
{
[
dict
setObject
:
error
.
userInfo
.
description
forKey
:
@"msg"
];
}
[
_eventSink
success
:[
FTXDownloadManager
getParamsWithEvent
:
EVENT_PREDOWNLOAD_ON_ERROR
withParams
:
dict
]];
[
self
onErrorEvent
:
-
1
taskId
:
taskID
url
:
url
error
:
error
];
}
#pragma mark - TXDownloadManager
...
...
@@ -354,16 +354,23 @@
params
.
appId
=
(
msg
.
appId
!=
nil
&&
[
msg
.
appId
isKindOfClass
:[
NSNumber
class
]])
?
[
msg
.
appId
intValue
]
:
0
;
params
.
fileId
=
fileId
;
params
.
sign
=
(
msg
.
pSign
!=
nil
&&
[
msg
.
pSign
isKindOfClass
:[
NSString
class
]])
?
msg
.
pSign
:
@""
;
[
self
addPreloadFileStartTask
:
fileId
tmpTaskId
:
tmpTaskId
];
__block
PredownloadFileHelperDelegate
*
delegate
=
[[
PredownloadFileHelperDelegate
alloc
]
initWithBlock
:
tmpTaskId
start
:
^
(
long
tmpTaskId
,
int
taskID
,
NSString
*
_Nonnull
fileId
,
NSString
*
_Nonnull
url
,
NSDictionary
*
_Nonnull
param
)
{
[
self
onStartEvent
:
tmpTaskId
taskID
:
taskID
fileId
:
fileId
url
:
url
param
:
param
];
}
complete
:^
(
int
taskID
,
NSString
*
_Nonnull
url
)
{
[
self
onComplete
:
taskID
url
:
url
];
[
self
removePreDelegate
:
delegate
];
}
error
:^
(
long
tmpTaskId
,
int
taskID
,
NSString
*
_Nonnull
url
,
NSError
*
_Nonnull
error
)
{
[
self
onErrorEvent
:
-
1
taskId
:
taskID
url
:
url
error
:
error
];
[
self
removePreDelegate
:
delegate
];
}];
// retain delegate
[
self
addPreDelegate
:
delegate
];
int
taskID
=
[[
TXVodPreloadManager
sharedManager
]
startPreloadWithModel
:
params
preloadSize
:
preloadSizeMB
preferredResolution
:
preferredResolution
delegate
:
self
];
if
(
isUrlPreload
)
{
if
(
tmpTaskId
>=
0
)
{
delegate
:
delegate
];
if
(
isUrlPreload
&&
tmpTaskId
>=
0
)
{
[
self
onStartEvent
:
tmpTaskId
taskID
:
taskID
fileId
:
fileId
url
:
msg
.
playUrl
param
:
@{}];
[
self
removePreloadFileStartTask
:
fileId
];
}
}
});
}
...
...
Flutter/ios/Classes/helper/PredownloadFileHelperDelegate.h
0 → 100644
浏览文件 @
ae72a6d8
// Copyright (c) 2022 Tencent. All rights reserved.
#ifndef SUPERPLAYER_FLUTTER_IOS_CLASSES_HELPER_PREDOWNLOADFILEHELPERDELEGATE_H_
#define SUPERPLAYER_FLUTTER_IOS_CLASSES_HELPER_PREDOWNLOADFILEHELPERDELEGATE_H_
#import <Foundation/Foundation.h>
#import <TXLiteAVSDK_Player/TXVodPreloadManager.h>
NS_ASSUME_NONNULL_BEGIN
typedef
void
(
^
FTXPreDownloadOnStart
)(
long
tmpTaskId
,
int
taskID
,
NSString
*
fileId
,
NSString
*
url
,
NSDictionary
*
param
);
typedef
void
(
^
FTXPreDownloadOnCompelete
)(
int
taskID
,
NSString
*
url
);
typedef
void
(
^
FTXPreDownloadOnError
)(
long
tmpTaskId
,
int
taskID
,
NSString
*
url
,
NSError
*
error
);
@interface
PredownloadFileHelperDelegate
:
NSObject
<
TXVodPreloadManagerDelegate
>
-
(
instancetype
)
initWithBlock
:
(
long
)
tmpTaskId
start
:
(
FTXPreDownloadOnStart
)
onStart
complete
:
(
FTXPreDownloadOnCompelete
)
onComplete
error
:
(
FTXPreDownloadOnError
)
onError
;
@end
NS_ASSUME_NONNULL_END
#endif // SUPERPLAYER_FLUTTER_IOS_CLASSES_HELPER_PREDOWNLOADFILEHELPERDELEGATE_H_
Flutter/ios/Classes/helper/PredownloadFileHelperDelegate.m
0 → 100644
浏览文件 @
ae72a6d8
// Copyright (c) 2022 Tencent. All rights reserved.
#import "PredownloadFileHelperDelegate.h"
@interface
PredownloadFileHelperDelegate
()
@property
(
nonatomic
,
assign
)
long
tmpTaskId
;
@property
(
nonatomic
,
strong
)
FTXPreDownloadOnStart
onStartBlock
;
@property
(
nonatomic
,
strong
)
FTXPreDownloadOnCompelete
onCompleteBlock
;
@property
(
nonatomic
,
strong
)
FTXPreDownloadOnError
onErrorBlock
;
@end
@implementation
PredownloadFileHelperDelegate
-
(
instancetype
)
initWithBlock
:(
long
)
tmpTaskId
start
:(
FTXPreDownloadOnStart
)
onStart
complete
:(
FTXPreDownloadOnCompelete
)
onComplete
error
:(
FTXPreDownloadOnError
)
onError
{
self
=
[
super
init
];
if
(
self
)
{
self
.
tmpTaskId
=
tmpTaskId
;
self
.
onStartBlock
=
onStart
;
self
.
onCompleteBlock
=
onComplete
;
self
.
onErrorBlock
=
onError
;
}
return
self
;
}
-
(
void
)
onStart
:(
int
)
taskID
fileId
:(
NSString
*
)
fileId
url
:(
NSString
*
)
url
param
:(
NSDictionary
*
)
param
{
if
(
self
.
onStartBlock
)
{
self
.
onStartBlock
(
self
.
tmpTaskId
,
taskID
,
fileId
,
url
,
param
);
}
}
-
(
void
)
onComplete
:(
int
)
taskID
url
:(
NSString
*
)
url
{
if
(
self
.
onCompleteBlock
)
{
self
.
onCompleteBlock
(
taskID
,
url
);
}
}
-
(
void
)
onError
:(
int
)
taskID
url
:(
NSString
*
)
url
error
:(
NSError
*
)
error
{
if
(
self
.
onErrorBlock
)
{
self
.
onErrorBlock
(
self
.
tmpTaskId
,
taskID
,
url
,
error
);
}
}
@end
Flutter/lib/Core/txvoddownload_controller.dart
浏览文件 @
ae72a6d8
...
...
@@ -73,7 +73,8 @@ class TXVodDownloadController {
return
taskId
;
}
Future
<
void
>
startPreload
(
TXPlayInfoParams
txPlayInfoParams
,
Future
<
void
>
startPreload
(
TXPlayInfoParams
txPlayInfoParams
,
final
int
preloadSizeMB
,
final
int
preferredResolution
,
{
FTXPredownlodOnCompleteListener
?
onCompleteListener
,
...
...
@@ -86,6 +87,7 @@ class TXVodDownloadController {
..
playUrl
=
txPlayInfoParams
.
url
..
fileId
=
txPlayInfoParams
.
fileId
..
appId
=
txPlayInfoParams
.
appId
..
pSign
=
txPlayInfoParams
.
psign
..
preloadSizeMB
=
preloadSizeMB
..
preferredResolution
=
preferredResolution
);
_fileIdBeforeStartListeners
[
tmpPreloadTaskId
]
=
_PreloadListener
()
...
...
@@ -252,13 +254,19 @@ class TXVodDownloadController {
_preloadListeners
.
remove
(
taskId
);
break
;
case
TXVodPlayEvent
.
EVENT_PREDOWNLOAD_ON_ERROR
:
int
tmpTaskId
=
map
[
'tmpTaskId'
]
??
-
1
;
int
taskId
=
map
[
'taskId'
];
String
url
=
map
[
'url'
];
int
code
=
map
[
'code'
]
??
0
;
String
msg
=
map
[
'msg'
]
??
''
;
LogUtils
.
d
(
TAG
,
'receive EVENT_PREDOWNLOAD_ON_ERROR, taskID=
$taskId
,url=
$url
, code=
$code
, msg=
$msg
'
);
if
(
tmpTaskId
>=
0
)
{
_fileIdBeforeStartListeners
[
tmpTaskId
]!.
onErrorListener
?.
call
(
taskId
,
url
,
code
,
msg
);
_fileIdBeforeStartListeners
.
remove
(
tmpTaskId
);
}
else
{
_preloadListeners
[
taskId
]?.
onErrorListener
?.
call
(
taskId
,
url
,
code
,
msg
);
_preloadListeners
.
remove
(
taskId
);
}
break
;
case
TXVodPlayEvent
.
EVENT_PREDOWNLOAD_ON_START
:
int
tmpTaskId
=
map
[
'tmpTaskId'
];
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论