bug修复 1.0.1发布

This commit is contained in:
zjx 2025-06-10 18:21:00 +08:00
parent b018486f21
commit 689d38261f
27 changed files with 141 additions and 34 deletions

View File

@ -1607,7 +1607,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 1.0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.qjwl168.veloria.ios;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@ -1648,7 +1648,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 1.0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.qjwl168.veloria.ios;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";

View File

@ -35,6 +35,7 @@ class VPHomeListViewController: VPViewController, WMZPageProtocol {
collectionView.vp_addRefreshBackFooter(insetBottom: 0) { [weak self] in
self?.handleFooterRefresh(nil)
}
collectionView.vp_addNormalEmpty()
collectionView.register(VPHomeListCell.self, forCellWithReuseIdentifier: "cell")
return collectionView
}()

View File

@ -168,6 +168,10 @@ extension VPMeViewController: UITableViewDelegate, UITableViewDataSource {
let vc = VPFeedbackViewController()
self.navigationController?.pushViewController(vc, animated: true)
case .orderRecord:
let vc = VPWalletViewController()
self.navigationController?.pushViewController(vc, animated: true)
default:
break
}
@ -204,15 +208,16 @@ extension VPMeViewController {
]
var cellArr: [VPMeItem] = []
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_07"), title: "Order Record".localized, type: .orderRecord, cellKey: .normal))
// cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_05"), title: "Language".localized, type: .language, cellKey: .normal))
if VPLoginManager.manager.userInfo?.is_tourist == false {
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_06"), title: "Delete Account".localized, type: .deleteAccount, cellKey: .normal))
}
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_01"), title: "Privacy Policy".localized, type: .privacyPolicy, cellKey: .normal))
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_02"), title: "User Agreement".localized, type: .userAgreement, cellKey: .normal))
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_04"), title: "Help Center".localized, type: .feedback, cellKey: .normal))
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_04"), title: "Feedback".localized, type: .feedback, cellKey: .normal))
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_03"), title: "About Us".localized, type: .aboutUs, cellKey: .normal))
if VPLoginManager.manager.userInfo?.is_tourist == false {
cellArr.append(VPMeItem(icon: UIImage(named: "me_item_icon_06"), title: "Delet Account".localized, type: .deleteAccount, cellKey: .normal))
}
dataArr.append(cellArr)

View File

@ -14,6 +14,7 @@ struct VPMeItem {
case aboutUs
case feedback
case deleteAccount
case orderRecord
case informationProtection
case civizatioConvention
case informationSharing

View File

@ -94,7 +94,7 @@ extension VPMeUserInfoCell {
contentView.addSubview(avatarImageView)
contentView.addSubview(nicknameLabel)
contentView.addSubview(idLabel)
contentView.addSubview(loginButton)
// contentView.addSubview(loginButton)
avatarImageView.snp.makeConstraints { make in
make.left.equalToSuperview()
@ -114,11 +114,11 @@ extension VPMeUserInfoCell {
make.bottom.equalTo(avatarImageView).offset(-3)
}
loginButton.snp.makeConstraints { make in
make.centerY.equalTo(avatarImageView)
make.right.equalToSuperview()
make.height.equalTo(34)
}
// loginButton.snp.makeConstraints { make in
// make.centerY.equalTo(avatarImageView)
// make.right.equalToSuperview()
// make.height.equalTo(34)
// }
}

View File

@ -190,7 +190,7 @@ class VPVideoPlayerViewController: VPViewController {
CATransaction.setCompletionBlock { [weak self] in
guard let self = self else { return }
if !animated {
if self.currentIndexPath != indexPath {
if self.currentIndexPath != indexPath, indexPath.row < self.getDataCount() {
self.skip(indexPath: indexPath)
} else {
self.play()

View File

@ -47,7 +47,7 @@ class VPShortModel: VPModel, SmartCodable {
static func mappingForKey() -> [SmartKeyTransformer]? {
return [
CodingKeys.vp_description <--- ["description"],
CodingKeys.vp_description <--- ["description", "short_video_description"],
CodingKeys.name <--- ["short_video_title", "name"]
]
}

View File

@ -20,7 +20,7 @@ class VPPlayerCoinBuyView: UIView {
var videoId: String?
var buyFinishBlock: (() -> Void)?
private lazy var selectedIndex = 0
private var selectedIndex: Int?
private lazy var collectionViewLayout: UICollectionViewFlowLayout = {

View File

@ -20,7 +20,7 @@ class VPPlayerVipBuyView: UIView {
var buyFinishBlock: (() -> Void)?
private lazy var currentIndex: Int = 0
private var currentIndex: Int?
private lazy var collectionViewLayout: UICollectionViewFlowLayout = {
let layout = UICollectionViewFlowLayout()

View File

@ -95,8 +95,6 @@ class VPVideoPlayerCell: VPCollectionViewCell, VPPlayerProtocol {
didSet {
controlView.isCurrent = isCurrent
if !isCurrent {
// self.player.replay()
// self.player.seekToTime(toTime: 0)
self.coverImageView.isHidden = false
}
}
@ -210,6 +208,7 @@ extension VPVideoPlayerCell: VPPlayerDelegate {
func vp_playerReadyToPlay(_ player: VPPlayer) {
self.seekToTime(toTime: (videoInfo?.play_seconds ?? 0) / 1000)
player.rate = self.viewModel?.rateModel.rate.getRate() ?? 1
}
private func updateCoverShowState() {

View File

@ -201,11 +201,27 @@ extension VPVideoPlayerControlView {
}
@objc private func handleCollectButton() {
guard let shortPlayId = self.videoInfo?.short_play_id else { return }
guard let videoId = self.videoInfo?.short_play_video_id else { return }
let isCollect = !(self.shortModel?.is_collect ?? false)
if isCollect {
self.collectShort(isCollect: isCollect)
} else {
let alert = VPAlertView(title: "kUnFavoritesAlertTitle".localized, subtitle: "kUnFavoritesAlertText".localized, icon: UIImage(named: "alert_icon_03"), normalButtonText: nil, highlightButtonText: "Confirm".localized)
alert.show()
alert.clickHighlightButton = { [weak self] in
self?.collectShort(isCollect: isCollect)
}
}
}
private func collectShort(isCollect: Bool) {
guard let shortPlayId = self.videoInfo?.short_play_id else { return }
guard let videoId = self.videoInfo?.short_play_video_id else { return }
VPVideoAPI.requestCollectShort(isCollect: isCollect, shortPlayId: shortPlayId, videoId: videoId) { [weak self] in
guard let self = self else { return }
var count = self.shortModel?.collect_total ?? 0

View File

@ -16,7 +16,7 @@ class VPCoinsViewController: VPViewController {
}
}
private lazy var selectedIndex = 0
private var selectedIndex: Int?
//MARK: UI
private lazy var scrollView: UIScrollView = {

View File

@ -29,6 +29,7 @@ class VPGiveCoinRecordsViewController: VPViewController {
tableView.vp_addRefreshBackFooter(insetBottom: tableView.contentInset.bottom) { [weak self] in
self?.handleFooterRefresh(nil)
}
tableView.vp_addNormalEmpty()
tableView.register(VPGiveCoinRecordsCell.self, forCellReuseIdentifier: "cell")
return tableView
}()

View File

@ -16,7 +16,7 @@ class VPVipViewController: VPViewController {
}
}
private lazy var currentIndex: Int = 0
private var currentIndex: Int?
private lazy var scrollView: UIScrollView = {
let scrollView = VPScrollView()

View File

@ -13,6 +13,7 @@ class VPCoinRecordCell: VPWalletBaseCell {
didSet {
coinCountLabel.text = "+\(model?.value ?? "0")"
timeLabel.text = model?.created_at
titleLabel.text = model?.type
}
}
@ -21,7 +22,7 @@ class VPCoinRecordCell: VPWalletBaseCell {
let label = UILabel()
label.font = .fontRegular(ofSize: 14)
label.textColor = .colorFFFFFF(alpha: 0.9)
label.text = "Recharge Coins".localized
return label
}()

View File

@ -23,11 +23,15 @@ class VPCoinsBuyCell: VPCollectionViewCell {
if let sendCoins = item?.send_coins, sendCoins > 0, let coins = item?.coins {
sendBgView.isHidden = false
sendCountLabel.isHidden = false
sendCountLabel.text = String(format: "kBonusCoinCount".localized, "\(sendCoins)")
let percent = CGFloat(sendCoins) / CGFloat(coins) * 100
sendLabel.text = String(format: "+%.0f%%".localized, percent)
} else {
sendBgView.isHidden = true
sendCountLabel.isHidden = true
}
}
}
@ -59,6 +63,11 @@ class VPCoinsBuyCell: VPCollectionViewCell {
return imageView
}()
private lazy var coinBgView: UIView = {
let view = UIView()
return view
}()
private lazy var coinCountLabel: UILabel = {
let label = UILabel()
label.font = .fontMedium(ofSize: 16)
@ -71,6 +80,13 @@ class VPCoinsBuyCell: VPCollectionViewCell {
return imageView
}()
private lazy var sendCountLabel: UILabel = {
let label = UILabel()
label.font = .fontRegular(ofSize: 12)
label.textColor = .color05CEA0()
return label
}()
private lazy var priceLabel: UILabel = {
let label = UILabel()
label.font = .fontRegular(ofSize: 12)
@ -131,8 +147,10 @@ extension VPCoinsBuyCell {
private func vp_setupUI() {
contentView.addSubview(bgView)
contentView.addSubview(selectedImageView)
contentView.addSubview(coinCountLabel)
contentView.addSubview(iconImageView)
contentView.addSubview(coinBgView)
coinBgView.addSubview(coinCountLabel)
coinBgView.addSubview(iconImageView)
contentView.addSubview(sendCountLabel)
contentView.addSubview(priceLabel)
contentView.addSubview(hotBgView)
hotBgView.addSubview(hotLabel)
@ -148,14 +166,26 @@ extension VPCoinsBuyCell {
make.bottom.right.equalToSuperview()
}
coinCountLabel.snp.makeConstraints { make in
coinBgView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalToSuperview().offset(22)
make.top.equalToSuperview().offset(28)
}
coinCountLabel.snp.makeConstraints { make in
make.left.equalToSuperview()
make.centerY.equalToSuperview()
}
sendCountLabel.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(coinBgView.snp.bottom).offset(8)
}
iconImageView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalToSuperview().offset(45)
make.left.equalTo(coinCountLabel.snp.right).offset(3)
make.right.equalToSuperview()
make.centerY.equalToSuperview()
make.top.equalToSuperview()
}
priceLabel.snp.makeConstraints { make in

View File

@ -13,6 +13,7 @@ class VPVIPRecordCell: VPWalletBaseCell {
didSet {
dayLabel.text = model?.value
timeLabel.text = model?.created_at
titleLabel.text = model?.type
}
}

View File

@ -180,6 +180,8 @@ extension VPIAPManager: JXIAPManagerDelegate {
if code == .noProduct {
VPToast.show(text: "kIapErrorToast02".localized)
} else if code == .cancelled {
VPToast.show(text: "kIapErrorToast04".localized)
}
self.completionHandler?(false)
}

View File

@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "通知图标-切图图层@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "通知图标-切图图层@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Frame@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Frame@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

View File

@ -31,7 +31,6 @@
"Explicit List of Personal Information Collection" = "Explicit List of Personal Information Collection";
"About Us" = "About Us";
"Visitor" = "Visitor";
"Help Center" = "Help Center";
"Feedback History" = "Feedback History";
"Feedback" = "Feedback";
"Feedback Details" = "Feedback Details";
@ -73,7 +72,7 @@
"Login with Facebook" = "Login with Facebook";
"Log In" = "Log In";
"Sign Out" = "Sign Out";
"Delet Account" = "Delet Account";
"Delete Account" = "Delete Account";
"Account Deletion" = "Account Deletion";
"Delete Account" = "Delete Account";
"Delete Forever" = "Delete Forever";
@ -89,13 +88,17 @@
"Restore" = "Restore";
"Watch Now" = "Watch Now";
"More" = "More";
"Confirm" = "Confirm";
"Order Record" = "Order Record";
"kBonusCoinCount" = "+%@ Bonus";
"kEmptyTitle01" = "Nothing Here Yet";
"kEmptyDes01" = "Start exploring and add something!";
"kEmptyTitle02" = "Not Found";
"kEmptyDes02" = "Sorry, we couldn't find anything.";
"kDetailRecommandTitle" = "Picked Just for You";
"kHomeTitleText" = "10,000+ addictive shorts await!";
"kHomeTitleText" = "10,000+ Addictive Shorts Await!";
"kSearchPlaceholderText1" = "Search dramas";
"kSearchPlaceholderText2" = "#Recersal of fate";
"kHomeMenuTitle" = "Select Categories";
@ -123,6 +126,7 @@
"kIapErrorToast02" = "Invalid in-app purchase";
///没有可恢复购买
"kIapErrorToast03" = "There are no in-app purchases to restore.";
"kIapErrorToast04" = "Payment has been cancelled.";
///请购买上一集
"kUnlockVideoErrorToast01" = "The prequel to this series is not unlocked. Please unlock the prequel before unlocking this series";
@ -131,14 +135,16 @@
"kStoreTips" = "1. Coins are virtual items and cannot be refunded. Use it for this product.
2. Gold coins will never expire, the reward coins will expire 24 hours a day.
3. Coins will be used first when unlocking episodes. If the amount is insufficient, reward coins will automatically be used.
4. The purchase has not been credited, click <Restore> torefresh.
5. For other questions, contact us via Profile>Help &feedback.";
4. The purchase has not been credited, click <Restore> to refresh.
5. For other questions, contact us via Me>Feedback.";
//请选择需要删除的短剧
"kToastText1" = "Please select the short plays that need to be deleted";
"kDeleteAccountAlertTitle" = "Confirm Account Deletion";
"kDeleteAccountAlertText" = "This action cannot be undone.";
"kUnFavoritesAlertTitle" = "UnFavorites";
"kUnFavoritesAlertText" = "You may not find this collection after you uncollect it";
"kLogoutAlertTitle" = "Ready to Leave?";
"kLogoutAlertText" = "when you sign out, your watch history will not be synced to your account.";