邀请码及通用飘屏

This commit is contained in:
liyuhua
2024-03-20 19:55:26 +08:00
parent d9d9976046
commit 9688b04a25
24 changed files with 511 additions and 23 deletions

View File

@@ -62,7 +62,7 @@ target 'YuMi' do
pod 'SVGAPlayer'
pod 'GoogleSignIn'
#pod 'mob_linksdk_pro'
pod 'mob_linksdk_pro'
pod 'mob_sharesdk'
pod 'mob_sharesdk/ShareSDKPlatforms/Apple'
#pod 'mob_sharesdk/ShareSDKPlatforms/Line'

View File

@@ -236,6 +236,8 @@
237B94BE2A984DA7007853E3 /* XPRoomTrumpetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 237B94B72A984DA7007853E3 /* XPRoomTrumpetViewController.m */; };
237B94BF2A984DA7007853E3 /* XPRoomTrumpetView.m in Sources */ = {isa = PBXBuildFile; fileRef = 237B94B82A984DA7007853E3 /* XPRoomTrumpetView.m */; };
237B94C02A984DA7007853E3 /* Api+RoomTrumpet.m in Sources */ = {isa = PBXBuildFile; fileRef = 237B94BA2A984DA7007853E3 /* Api+RoomTrumpet.m */; };
238A90072BA9729200828123 /* PIUniversalBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 238A90062BA9729200828123 /* PIUniversalBannerView.m */; };
238A900A2BA9756600828123 /* PIUniversalBannerModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238A90092BA9756600828123 /* PIUniversalBannerModel.m */; };
238B37A32AC55A2C00BFC9D5 /* XPTreasureFailyPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B37242AC55A2C00BFC9D5 /* XPTreasureFailyPresenter.m */; };
238B37A42AC55A2C00BFC9D5 /* TreasureFairyLimitModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B372B2AC55A2C00BFC9D5 /* TreasureFairyLimitModel.m */; };
238B37A52AC55A2C00BFC9D5 /* TreasureFailyKeyInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 238B372C2AC55A2C00BFC9D5 /* TreasureFailyKeyInfoModel.m */; };
@@ -1941,6 +1943,10 @@
237B94B82A984DA7007853E3 /* XPRoomTrumpetView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPRoomTrumpetView.m; sourceTree = "<group>"; };
237B94BA2A984DA7007853E3 /* Api+RoomTrumpet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Api+RoomTrumpet.m"; sourceTree = "<group>"; };
237B94BB2A984DA7007853E3 /* Api+RoomTrumpet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+RoomTrumpet.h"; sourceTree = "<group>"; };
238A90052BA9729200828123 /* PIUniversalBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PIUniversalBannerView.h; sourceTree = "<group>"; };
238A90062BA9729200828123 /* PIUniversalBannerView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIUniversalBannerView.m; sourceTree = "<group>"; };
238A90082BA9756600828123 /* PIUniversalBannerModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PIUniversalBannerModel.h; sourceTree = "<group>"; };
238A90092BA9756600828123 /* PIUniversalBannerModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIUniversalBannerModel.m; sourceTree = "<group>"; };
238B37242AC55A2C00BFC9D5 /* XPTreasureFailyPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPTreasureFailyPresenter.m; sourceTree = "<group>"; };
238B37252AC55A2C00BFC9D5 /* XPTreasureFailyPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailyPresenter.h; sourceTree = "<group>"; };
238B37272AC55A2C00BFC9D5 /* XPTreasureFailyProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPTreasureFailyProtocol.h; sourceTree = "<group>"; };
@@ -7523,6 +7529,8 @@
F1D8556E2931FC86008C418F /* XPRoomYearActivityView.m */,
E80E09B12A42071C00CD2BE7 /* XPRoomStarKitchenBannerView.h */,
E80E09B22A42071D00CD2BE7 /* XPRoomStarKitchenBannerView.m */,
238A90052BA9729200828123 /* PIUniversalBannerView.h */,
238A90062BA9729200828123 /* PIUniversalBannerView.m */,
);
path = AnimationView;
sourceTree = "<group>";
@@ -7676,6 +7684,8 @@
E80E09B52A42078F00CD2BE7 /* XPRoomStarKitchenModel.m */,
23BA16592A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.h */,
23BA165A2A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.m */,
238A90082BA9756600828123 /* PIUniversalBannerModel.h */,
238A90092BA9756600828123 /* PIUniversalBannerModel.m */,
);
path = Model;
sourceTree = "<group>";
@@ -10823,6 +10833,7 @@
E839532D276A030F00CF2F24 /* XPMineDressUpListViewController.m in Sources */,
E821077B2987D4AB00DE7040 /* MessageFindNewGreetModel.m in Sources */,
E85E7BA32A4EC99300B6D00A /* XPMineGiveDiamondDetailsVC.m in Sources */,
238A90072BA9729200828123 /* PIUniversalBannerView.m in Sources */,
E8B846D826FDE17300A777FE /* XPMineRechargeProtocol.h in Sources */,
E88C72A6282921D60047FB2B /* XPRoomBackMusicPlayerView.m in Sources */,
E84CBCE72843807500D43221 /* XPMineFriendPresenter.m in Sources */,
@@ -11020,6 +11031,7 @@
23194DCD2AD14BF000649F51 /* DDASLLogger.m in Sources */,
E85E7B492A4EB0D300B6D00A /* XPMineGuildSearchViewController.m in Sources */,
9B86D88328192DC000494FCD /* XPRoomRankEntranceView.m in Sources */,
238A900A2BA9756600828123 /* PIUniversalBannerModel.m in Sources */,
E85E7B012A4EB0D200B6D00A /* XPSuperAdminSetPresenter.m in Sources */,
18F404B7276095D700A6C548 /* SessionChatLimitView.m in Sources */,
E8788942273A55AD00BF1D57 /* XPGiftUsersView.m in Sources */,

View File

@@ -11,7 +11,7 @@
#import <ShareSDK/ShareSDK.h>
#import <UserNotifications/UNUserNotificationCenter.h>
#import <UserNotifications/UserNotifications.h>
#import <MOBFoundation/MobSDK+Privacy.h>
///Tool
#import "YUMIConstant.h"
#import "CustomAttachmentDecoder.h"
@@ -145,6 +145,14 @@ UIKIT_EXTERN NSString * adImageName;
// [platformsRegister setupFacebookWithAppkey:@"1266232494209868" appSecret:@"c9b170b383f8be9cdf118823b8632821" displayName:YMLocalizedString(@"AppDelegate_ThirdConfig0")];
[platformsRegister setupLineAuthType:SSDKAuthorizeTypeBoth];
}];
NSString *isUpload = [[NSUserDefaults standardUserDefaults]valueForKey:@"kMobLinkUploadPrivacy"];
if (isUpload == nil){
[MobSDK uploadPrivacyPermissionStatus:YES onResult:^(BOOL success) {
}];
[[NSUserDefaults standardUserDefaults] setValue:@"YES" forKey:@"kMobLinkUploadPrivacy"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
#pragma mark -

View File

@@ -5,6 +5,8 @@
// Created by admin on 2023/3/9.
//
#import <MobLinkPro/MobLink.h>
#import <MobLinkPro/MLSDKScene.h>
#import "AppDelegate.h"
#import "TabbarViewController.h"
#import "BaseNavigationController.h"
@@ -25,7 +27,7 @@
@import Firebase;
UIKIT_EXTERN NSString * const kOpenRoomNotification;
@interface AppDelegate ()
@interface AppDelegate ()<IMLSDKRestoreDelegate>
@end
@@ -60,12 +62,19 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
}
[[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
[FIRApp configure];
[MobLink setDelegate:self];
return YES;
}
- (void) IMLSDKWillRestoreScene:(MLSDKScene *)scene Restore:(void (^)(BOOL, RestoreStyle))restoreHandler
{
restoreHandler(YES, MLDefault);
}
@@ -171,11 +180,8 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
}else if (type == 8){
NSString *inviteCode = paramsDict[@"inviteCode"];
if (inviteCode != nil && [[AccountInfoStorage instance]getUid].length == 0){
LoginFullInfoViewController *fullVC = [LoginFullInfoViewController new];
BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:fullVC];
fullVC.inviteCode = inviteCode;
nav.modalPresentationStyle = UIModalPresentationFullScreen;
kWindow.rootViewController = nav;
ClientConfig *config = [ClientConfig shareConfig];
config.inviteCode = inviteCode;
}
}
return YES;

View File

@@ -31,6 +31,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, copy) NSString *__nullable chatId;
///用户id推送跳转到聊天页面
@property (nonatomic, copy) NSString *__nullable pushChatId;
///邀请码,从外面进来会进入注册页面,并自动填写这个邀请码
@property(nonatomic,copy) NSString *inviteCode;
///表情---
@property (nonatomic, copy) NSString *version;
@property (nonatomic, copy) NSString *zipMd5;

View File

@@ -31,6 +31,8 @@ typedef enum : NSUInteger {
} XPShareItemTag;
@interface XPShareItem : NSObject
@property(nonatomic,assign) BOOL isShareInvite;
@property (nonatomic, copy) NSString *inviteTitle;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *imageName;
@property (nonatomic, copy) NSString *disableImageName;

View File

@@ -184,6 +184,9 @@
return;
}
NSString*contentKey= [encodedUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\\<> "].invertedSet];
if(item.isShareInvite){
contentKey = [NSString stringWithFormat:@"%@[%@]",item.inviteTitle,encodedUrl];
}
NSString*contentType =@"text";
NSString*urlString = [NSString stringWithFormat:@"line://msg/%@/%@",contentType, contentKey];
@@ -202,11 +205,6 @@
urlString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];
linkContent.contentURL= [NSURL URLWithString:urlString];
linkContent.quote = content;
FBSDKSharePhoto *p = [[FBSDKSharePhoto alloc]initWithImageURL:nil isUserGenerated:NO];
FBSDKShareDialog *shareDialog = [[FBSDKShareDialog alloc]initWithViewController:[XCCurrentVCStackManager shareManager].getCurrentVC content:linkContent delegate:self];
// web
shareDialog.mode = FBSDKShareDialogModeNative;

View File

@@ -24,7 +24,7 @@
#import "LoginFullInfoPresenter.h"
#import "LoginFullInfoProtocol.h"
#import "PILoginManager.h"
#import "ClientConfig.h"
@interface LoginFullInfoViewController ()<LoginFullInfoProtocol>
@@ -81,6 +81,11 @@
[self initSubViews];
[self initSubViewConstraints];
[self initEvents];
ClientConfig *config = [ClientConfig shareConfig];
if (config.inviteCode.length > 0){
self.inviteCode = config.inviteCode;
config.inviteCode = @"";
}
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

View File

@@ -115,6 +115,8 @@ typedef NS_ENUM(NSUInteger, CustomMessageType) {
CustomMessageType_General_Public_Screen = 103,
///疯狂动物园飘屏
CustomMessageType_Graffiti_Star_Kitchen = 104,
///通用飘屏
CustomMessageType_General_Floating_Screen = 105,
};
@@ -633,7 +635,13 @@ typedef NS_ENUM(NSUInteger, CustomMessageTypeGeneralPublicScreen) {
Custom_Message_Sub_General_Public_Screen_One_Room = 1031,//单房间
Custom_Message_Sub_General_Public_Screen_All_Room = 1032,///全部房间
};
///通用飘屏
//CustomMessageType_General_Floating_Screen = 105,
typedef NS_ENUM(NSUInteger, CustomMessageTypeGeneralFloatingScreen) {
///所有房间
Custom_Message_Sub_General_Floating_Screen_One_Room = 1051,//单房间
Custom_Message_Sub_General_Floating_Screen_All_Room = 1052,///全部房间
};
@interface AttachmentModel : PIBaseModel<NIMCustomAttachment>
@property (nonatomic,assign) int first;
@property (nonatomic,assign) int second;

View File

@@ -188,7 +188,7 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor];
header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor];
self.pagingView.mainTableView.mj_header = header;
[ClientConfig shareConfig].inviteCode = @"";

View File

@@ -17,6 +17,7 @@ typedef enum : NSUInteger {
GiftBannerType_Tarrow,//塔罗
GiftBannerType_Common_H5,//通用h5
GiftBannerType_Magic_House,//魔法屋
GiftBannerType_General_Floating_Screen,///通用飘屏
} GiftBannerType;
NS_ASSUME_NONNULL_BEGIN

View File

@@ -0,0 +1,38 @@
//
// PIUniversalBannerModel.h
// YuMi
//
// Created by duoban on 2024/3/19.
//
#import <Foundation/Foundation.h>
#import <SVGA.h>
NS_ASSUME_NONNULL_BEGIN
@class PIUniversalBannerItemModel;
@interface PIUniversalBannerModel : NSObject
@property(nonatomic,copy) NSDictionary *template;
@property(nonatomic,copy) NSString *textColor;
@property(nonatomic,assign) CGFloat fontSize;
@property(nonatomic,copy) NSString *resourceType;
@property(nonatomic,copy) NSString *resourceContent;
@property(nonatomic,assign) int skipType;
@property(nonatomic,copy) NSString *skipContent;
@property(nonatomic,copy) NSString *svgaTextKey;
@property(nonatomic,copy) NSArray<PIUniversalBannerItemModel *> *contents;
@property(nonatomic,assign) CGFloat resourceWidth;
@property(nonatomic,assign) CGFloat resourceHeight;
@property(nonatomic,strong) SVGAVideoEntity *videoItem;
@property(nonatomic,strong) UIImage *image;
@end
@interface PIUniversalBannerItemModel : NSObject
@property(nonatomic,copy) NSString *type;
@property(nonatomic,copy) NSString *textColor;
@property(nonatomic,copy) NSString *key;
@property(nonatomic,copy) NSDictionary *text;
@property(nonatomic,assign) int skipType;
@property(nonatomic,copy) NSString *skipContent;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,17 @@
//
// PIUniversalBannerModel.m
// YuMi
//
// Created by duoban on 2024/3/19.
//
#import "PIUniversalBannerModel.h"
@implementation PIUniversalBannerModel
+ (NSDictionary *)objectClassInArray {
return @{@"contents":PIUniversalBannerItemModel.class};
}
@end
@implementation PIUniversalBannerItemModel
@end

View File

@@ -0,0 +1,28 @@
//
// PIUniversalBannerView.h
// YuMi
//
// Created by duoban on 2024/3/19.
//
#import <UIKit/UIKit.h>
#import "PIUniversalBannerModel.h"
NS_ASSUME_NONNULL_BEGIN
@class PIUniversalBannerView;
@protocol PIUniversalBannerViewDelegate <NSObject>
- (void)pIUniversalBannerView:(PIUniversalBannerView *)view didClick:(PIUniversalBannerModel *)model;
@end
@interface PIUniversalBannerView : UIView
@property (nonatomic,assign) BOOL isSvga;
@property (nonatomic,strong) PIUniversalBannerModel *model;
@property (nonatomic,weak) id<PIUniversalBannerViewDelegate> delegate;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,142 @@
//
// PIUniversalBannerView.m
// YuMi
//
// Created by duoban on 2024/3/19.
//
#import <Masonry/Masonry.h>
#import "YUMIMacroUitls.h"
#import "DJDKMIMOMColor.h"
#import "PIUniversalBannerView.h"
#import <SVGA.h>
#import "DJDKMIMOMColor.h"
#import "YuMi-swift.h"
@interface PIUniversalBannerView()
@property (strong, nonatomic) SVGAParser *parser;
@property (nonatomic,strong) SVGAImageView *svgaView;
@property (nonatomic,strong) UIImageView *bgImageView;
@property (nonatomic,strong) UILabel *titleView;
@property (nonatomic,strong) UIButton *clickBtn;
@property(nonatomic,strong) SVGAVideoEntity *videoItem;
@end
@implementation PIUniversalBannerView
-(instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if(self){
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.bgImageView];
[self addSubview:self.svgaView];
[self addSubview:self.titleView];
[self addSubview:self.clickBtn];
}
- (void)initSubViewConstraints {
[self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
[self.svgaView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
[self.titleView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.equalTo(self);
make.leading.trailing.equalTo(self).inset(kGetScaleWidth(70));
}];
[self.clickBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
}
-(void)setModel:(PIUniversalBannerModel *)model{
_model = model;
NSDictionary *textDic = model.template;
if(textDic.allKeys.count == 0)return ;
NSString *title = textDic[@"zh-CHT"] == nil ? textDic[textDic.allKeys.firstObject] : textDic[@"zh-CHT"];
if(title.length == 0)return;
NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:_model.fontSize],NSForegroundColorAttributeName:[DJDKMIMOMColor colorWithHexString:_model.textColor]}];
for (PIUniversalBannerItemModel *model in _model.contents) {
if([model.type isEqualToString:@"TEXT"]){
NSDictionary *subTextDic = model.text;
if(subTextDic.allKeys.count > 0){
NSString *subText = subTextDic[@"zh-CHT"] == nil ? subTextDic[subTextDic.allKeys.firstObject] : subTextDic[@"zh-CHT"];
NSAttributedString *attText = [[NSAttributedString alloc]initWithString:subText attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor colorWithHexString:model.textColor]}];
[attribute replaceCharactersInRange:[attribute.string rangeOfString:[NSString stringWithFormat:@"{%@}",model.key]] withAttributedString:attText];
}
}
}
if(_isSvga == YES){
self.bgImageView.hidden = YES;
self.svgaView.hidden = NO;
self.titleView.hidden = YES;
self.svgaView.loops = 1;
self.svgaView.clearsAfterStop = NO;
self.svgaView.videoItem = _model.videoItem;
[self.svgaView setAttributedText:attribute forKey:_model.svgaTextKey];
[self.svgaView startAnimation];
}else{
self.bgImageView.hidden = NO;
self.bgImageView.image = _model.image;
self.titleView.hidden = NO;
self.svgaView.hidden = YES;
self.titleView.attributedText = attribute;
}
}
-(void)clickAction{
if(self.delegate &&
[self.delegate respondsToSelector:@selector(pIUniversalBannerView:didClick:)]){
[self.delegate pIUniversalBannerView:self didClick:self.model];
}
}
#pragma mark -
- (UIImageView *)bgImageView{
if (!_bgImageView){
_bgImageView = [UIImageView new];
_bgImageView.userInteractionEnabled = YES;
}
return _bgImageView;
}
-(UILabel *)titleView{
if (!_titleView){
_titleView = [UILabel new];
_titleView.textAlignment = NSTextAlignmentCenter;
_titleView.numberOfLines = 2;
}
return _titleView;
}
- (SVGAParser *)parser {
if (!_parser) {
_parser = [[SVGAParser alloc]init];
}
return _parser;
}
- (SVGAImageView *)svgaView {
if (!_svgaView) {
_svgaView= [[SVGAImageView alloc]init];
_svgaView.backgroundColor = [UIColor clearColor];
_svgaView.userInteractionEnabled = YES;
}
return _svgaView;
}
-(UIButton *)clickBtn{
if (!_clickBtn){
_clickBtn = [UIButton new];
[_clickBtn addTarget:self action:@selector(clickAction) forControlEvents:UIControlEventTouchUpInside];
}
return _clickBtn;
}
@end

View File

@@ -63,10 +63,11 @@
#import "XPTreasureFairyGiftView.h"
#import "XPRoomTarrowBannerView.h"
#import "PIRoomGiftBroadcastWindow.h"
#import "PIUniversalBannerModel.h"
#import "PIUniversalBannerView.h"
@interface XPRoomAnimationView ()<SVGAPlayerDelegate,NIMBroadcastManagerDelegate, XPRoomGiftBroadcastViewDelegate, HWDMP4PlayDelegate, XPRoomLuckyBigPrizeViewDelegate, XPRoomGraffitiGiftAnimationViewDelegate, XPRoomStarKitchenBannerViewDelegate,PAGViewListener,XPRoomAnchorRankBannerViewDelegate,PIRoomGiftBroadcastWindowDelegate>
@interface XPRoomAnimationView ()<SVGAPlayerDelegate,NIMBroadcastManagerDelegate, XPRoomGiftBroadcastViewDelegate, HWDMP4PlayDelegate, XPRoomLuckyBigPrizeViewDelegate, XPRoomGraffitiGiftAnimationViewDelegate, XPRoomStarKitchenBannerViewDelegate,PAGViewListener,XPRoomAnchorRankBannerViewDelegate,PIRoomGiftBroadcastWindowDelegate,PIUniversalBannerViewDelegate>
///
///
@property (nonatomic,strong) XPRoomAnimationHitView * lowLevelView;
@@ -254,6 +255,8 @@
[self receiveTarotBanner:attachment];
}else if (attachment.first == CustomMessageType_Common_H5 &&(attachment.second == Custom_Message_Sub_Common_H5_Novice || attachment.second == Custom_Message_Sub_Common_H5_Advanced)){
[self receiveCommonH5Banner:attachment];
}else if (attachment.first == CustomMessageType_General_Floating_Screen && attachment.second == Custom_Message_Sub_General_Floating_Screen_All_Room ){
[self receiveRoomGeneralFloatingScreen:attachment];
}
}
}
@@ -365,6 +368,8 @@
[self receiveTarotBanner:attachment];
}else if (attachment.first == CustomMessageType_Common_H5 &&(attachment.second == Custom_Message_Sub_Common_H5_Novice || attachment.second == Custom_Message_Sub_Common_H5_Advanced)){
[self receiveCommonH5Banner:attachment];
}else if (attachment.first == CustomMessageType_General_Floating_Screen && attachment.second == Custom_Message_Sub_General_Floating_Screen_One_Room){
[self receiveRoomGeneralFloatingScreen:attachment];
}
}
}
@@ -386,8 +391,102 @@
[self userEnterRoom:content ext:extModel];
}
}
#pragma mark -
-(void)receiveRoomGeneralFloatingScreen:(AttachmentModel *)attacment{
PIBaseAnimationViewModel *roomGraffiti = [PIBaseAnimationViewModel new];
roomGraffiti.data = attacment.data;
roomGraffiti.type = GiftBannerType_General_Floating_Screen;
roomGraffiti.first = attacment.first;
roomGraffiti.second = attacment.second;
if(self.animationListB.count == 0 && self.isPlayOfB == NO){
[self createGeneralFloatingScreenAnimation:roomGraffiti];
}
[self.animationListB addObject:roomGraffiti];
}
- (void)createGeneralFloatingScreenAnimation:(PIBaseAnimationViewModel *)attacment{
self.isPlayOfB = YES;
CGFloat top = self.isPlayOfA == YES ? (self.broadCastHieght + statusbarHeight) : (kNavigationHeight + 15);
PIUniversalBannerModel *model = [PIUniversalBannerModel modelWithDictionary:attacment.data];
BOOL isSvga = [model.resourceType isEqualToString:@"SVGA"];
__block PIUniversalBannerView *bannerView;
if (isSvga == YES) {
SVGAParser *parser = [SVGAParser new];
[parser parseWithURL:[NSURL URLWithString:model.resourceContent] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) {
model.videoItem = videoItem;
bannerView = [[PIUniversalBannerView alloc]initWithFrame:CGRectMake(0, top, model.resourceWidth, model.resourceHeight) ];
[self showGeneralFloatingScreenView:bannerView model:model];
} failureBlock:^(NSError * _Nonnull error) {
#pragma mark -
}];
}else{
NetImageView *imageView = [NetImageView new];
[imageView loadImageWithUrl:model.resourceContent completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) {
model.image = image;
CGFloat width = image.size.width <= 0 ? kGetScaleWidth(60) : image.size.width;
CGFloat height = image.size.height ;
CGFloat getHeigth = KScreenWidth * height / width;
bannerView = [[PIUniversalBannerView alloc]initWithFrame:CGRectMake(0, top, KScreenWidth, getHeigth) ];
[self showGeneralFloatingScreenView:bannerView model:model];
}];
}
}
-(void)showGeneralFloatingScreenView:(PIUniversalBannerView *)bannerView model:(PIUniversalBannerModel *)model{
BOOL isSvga = [model.resourceType isEqualToString:@"SVGA"];
bannerView.isSvga = isSvga;
bannerView.model = model;
bannerView.delegate = self;
[self.highLevleView addSubview:bannerView];
POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter];
springAnimation.springSpeed = 12;
springAnimation.springBounciness = 10.f;
springAnimation.fromValue = [NSValue valueWithCGPoint:bannerView.center];
springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(bannerView.frame.size.width / 2, bannerView.center.y)];
[springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) {
if (finished) {
POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter];
moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, bannerView.center.y)];
moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, bannerView.center.y)];
moveAnimation.beginTime = CACurrentMediaTime() + 3;
moveAnimation.duration = 0.5;
moveAnimation.repeatCount = 1;
moveAnimation.removedOnCompletion = YES;
@kWeakify(self);
[moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) {
@kStrongify(self);
if (finished) {
[bannerView removeFromSuperview];
self.isPlayOfB = NO;
if(self.animationListB.count > 0){
[self.animationListB removeObjectAtIndex:0];
}
[self playAnimationWithModel];
}
}];
[bannerView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"];
}
}];
[bannerView pop_addAnimation:springAnimation forKey:@"starKitchenOutAnimation"];
}
#pragma mark - PIUniversalBannerViewDelegate
- (void)pIUniversalBannerView:(PIUniversalBannerView *)view didClick:(PIUniversalBannerModel *)model{
if (model.skipType == 2){
[self.delegate exitRoom];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[XPRoomViewController openRoom:model.skipContent viewController:[XCCurrentVCStackManager shareManager].getCurrentVC];
});
}else if (model.skipType == 3){
XPWebViewController * webVC = [[XPWebViewController alloc] init];
webVC.isPush = YES;
webVC.url = model.skipContent;
[self.delegate.getCurrentNav pushViewController:webVC animated:YES];
}
}
#pragma mark -
-(void)receiveRoomGraffitiStarKitchen:(AttachmentModel *)attacment{
PIBaseAnimationViewModel *roomGraffiti = [PIBaseAnimationViewModel new];
roomGraffiti.data = attacment.data;
@@ -1719,6 +1818,8 @@
[self createCommonH5BannerAnimation:model];
}else if(model.type == GiftBannerType_Magic_House){
[self createGiftCompoundBannerAnimation:model];
}else if (model.type == GiftBannerType_General_Floating_Screen){
[self createGeneralFloatingScreenAnimation:model];
}
}

View File

@@ -191,7 +191,16 @@
[TTPopup actionSheetWithItems:@[inviteMic, lockMic, muteMic]];
} else if (member.type == NIMTeamMemberTypeManager) {//
[TTPopup actionSheetWithItems:@[lockMic, muteMic]];
// Ta
TTActionSheetConfig *inviteMic = [TTActionSheetConfig normalTitle:YMLocalizedString(@"AnchorStageView4") clickAction:^{
XPRoomInviteUserViewController * inviteUserMicVC = [[XPRoomInviteUserViewController alloc] init];
inviteUserMicVC.roomId = roomId;
inviteUserMicVC.position = position;
inviteUserMicVC.blindDateVipUid = roomInfo.blindDateVipUid;
[self.hostDelegate.getCurrentNav pushViewController:inviteUserMicVC animated:YES];
}];
[TTPopup actionSheetWithItems:@[inviteMic,lockMic, muteMic]];
} else {
// 2.2
NSString* selfUid = [NSString stringWithFormat:@"%ld", (long)self.hostDelegate.getUserInfo.uid];

View File

@@ -19,6 +19,7 @@ NS_ASSUME_NONNULL_BEGIN
-(void)receiveCommonH5Banner:(AttachmentModel *)attachment;
- (void)receiveAnchorHourRank:(AttachmentModel *)attachment;
- (void)receiveNobleLevelUp:(AttachmentModel *)attachment;
-(void)receiveRoomGeneralFloatingScreen:(AttachmentModel *)attacment;
@end
NS_ASSUME_NONNULL_END

View File

@@ -62,7 +62,9 @@
#import "XPTreasureFairyGiftView.h"
#import "XPRoomTarrowBannerView.h"
#import "PIRoomGiftBroadcastWindow.h"
@interface PIFullScreenBannerAnimation()<XPRoomGiftBroadcastViewDelegate,XPRoomLuckyBigPrizeViewDelegate, XPRoomStarKitchenBannerViewDelegate,XPRoomAnchorRankBannerViewDelegate,PIRoomGiftBroadcastWindowDelegate>
#import "PIUniversalBannerModel.h"
#import "PIUniversalBannerView.h"
@interface PIFullScreenBannerAnimation()<XPRoomGiftBroadcastViewDelegate,XPRoomLuckyBigPrizeViewDelegate, XPRoomStarKitchenBannerViewDelegate,XPRoomAnchorRankBannerViewDelegate,PIRoomGiftBroadcastWindowDelegate,PIUniversalBannerViewDelegate>
/// PresentAchieveAbstractMatrix
@property(nonatomic,strong) NSMutableArray<GiftReceiveInfoModel *> *animationListA;
/// YUMIPresentBigCaptureMatrix
@@ -222,8 +224,101 @@
[self createBigPrizeAnimation:model];
}else if(model.type == GiftBannerType_Common_H5){
[self createCommonH5BannerAnimation:model];
}else if (model.type == GiftBannerType_General_Floating_Screen){
[self createGeneralFloatingScreenAnimation:model];
}
}
#pragma mark -
-(void)receiveRoomGeneralFloatingScreen:(AttachmentModel *)attacment{
PIBaseAnimationViewModel *roomGraffiti = [PIBaseAnimationViewModel new];
roomGraffiti.data = attacment.data;
roomGraffiti.type = GiftBannerType_General_Floating_Screen;
roomGraffiti.first = attacment.first;
roomGraffiti.second = attacment.second;
if(self.animationListB.count == 0 && self.isPlayOfB == NO){
[self createGeneralFloatingScreenAnimation:roomGraffiti];
}
[self.animationListB addObject:roomGraffiti];
}
- (void)createGeneralFloatingScreenAnimation:(PIBaseAnimationViewModel *)attacment{
self.isPlayOfB = YES;
CGFloat top = self.isPlayOfA == YES ? (self.broadCastHieght + statusbarHeight) : (kNavigationHeight + 15);
PIUniversalBannerModel *model = [PIUniversalBannerModel modelWithDictionary:attacment.data];
BOOL isSvga = [model.resourceType isEqualToString:@"SVGA"];
__block PIUniversalBannerView *bannerView;
if (isSvga == YES) {
SVGAParser *parser = [SVGAParser new];
[parser parseWithURL:[NSURL URLWithString:model.resourceContent] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) {
model.videoItem = videoItem;
bannerView = [[PIUniversalBannerView alloc]initWithFrame:CGRectMake(0, top, model.resourceWidth, model.resourceHeight) ];
[self showGeneralFloatingScreenView:bannerView model:model];
} failureBlock:^(NSError * _Nonnull error) {
}];
}else{
NetImageView *imageView = [NetImageView new];
[imageView loadImageWithUrl:model.resourceContent completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) {
model.image = image;
CGFloat width = image.size.width <= 0 ? kGetScaleWidth(60) : image.size.width;
CGFloat height = image.size.height ;
CGFloat getHeigth = KScreenWidth * height / width;
bannerView = [[PIUniversalBannerView alloc]initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth, getHeigth) ];
[self showGeneralFloatingScreenView:bannerView model:model];
}];
}
}
-(void)showGeneralFloatingScreenView:(PIUniversalBannerView *)bannerView model:(PIUniversalBannerModel *)model{
BOOL isSvga = [model.resourceType isEqualToString:@"SVGA"];
bannerView.isSvga = isSvga;
bannerView.model = model;
bannerView.delegate = self;
[kWindow addSubview:bannerView];
POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter];
springAnimation.springSpeed = 12;
springAnimation.springBounciness = 10.f;
springAnimation.fromValue = [NSValue valueWithCGPoint:bannerView.center];
springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(bannerView.frame.size.width / 2, bannerView.center.y)];
[springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) {
if (finished) {
POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter];
moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, bannerView.center.y)];
moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, bannerView.center.y)];
moveAnimation.beginTime = CACurrentMediaTime() + 3;
moveAnimation.duration = 0.5;
moveAnimation.repeatCount = 1;
moveAnimation.removedOnCompletion = YES;
@kWeakify(self);
[moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) {
@kStrongify(self);
if (finished) {
[bannerView removeFromSuperview];
self.isPlayOfB = NO;
if(self.animationListB.count > 0){
[self.animationListB removeObjectAtIndex:0];
}
[self playAnimationWithModel];
}
}];
[bannerView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"];
}
}];
[bannerView pop_addAnimation:springAnimation forKey:@"starKitchenOutAnimation"];
}
#pragma mark - PIUniversalBannerViewDelegate
- (void)pIUniversalBannerView:(PIUniversalBannerView *)view didClick:(PIUniversalBannerModel *)model{
if (model.skipType == 2){
[XPRoomViewController openRoom:model.skipContent viewController:[XCCurrentVCStackManager shareManager].getCurrentVC];
}else if (model.skipType == 3){
XPWebViewController * webVC = [[XPWebViewController alloc] init];
webVC.isPush = YES;
webVC.url = model.skipContent;
[[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES];
}
}
#pragma mark - h5
-(void)receiveCommonH5Banner:(AttachmentModel *)attachment{

View File

@@ -630,6 +630,9 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return;
[self.roomAnimation receiveNobleLevelUp:attachment];
}else if (attachment.first == CustomMessageType_General_Floating_Screen && attachment.second == Custom_Message_Sub_General_Floating_Screen_All_Room){
if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return;
[self.roomAnimation receiveRoomGeneralFloatingScreen:attachment];
}
}
}

View File

@@ -607,9 +607,12 @@ NSString * const kJSSavePictureShare = @"savePictureShare";
shareInfo.type = ShareType_H5;
shareInfo.uid = [AccountInfoStorage instance].getUid;
NSString *urlStr = ((NSString *)dic[@"toUrl"]).length > 0 ? dic[@"toUrl"] : @"";
shareInfo.shareUrl = urlStr;
NSString *title = ((NSString *)dic[@"shareTitle"]).length > 0 ? dic[@"shareTitle"] : @"";
shareInfo.shareUrl = [NSString stringWithFormat:@"%@",urlStr];
XPShareItem *cycle = [XPShareItem itemWitTag:XPShareItemTagFaceBook title:@"FaceBook" imageName:@"share_fb" disableImageName:@"share_fb"];
XPShareItem *wechat = [XPShareItem itemWitTag:XPShareItemTagLine title:@"Line" imageName:@"share_line" disableImageName:@"share_line"];
wechat.isShareInvite = YES;
wechat.inviteTitle = title;
XPShareItem *qq = [XPShareItem itemWitTag:XPShareItemTagCopyLink title:YMLocalizedString(@"XPWebViewNavView1") imageName:@"share_copy_link" disableImageName:@"share_copy_link"];
XPShareItem *save = [XPShareItem itemWitTag:XPShareItemTagAppSaveAlbum title:YMLocalizedString(@"PIWebViewSavePhotoView4") imageName:@"share_save_icon" disableImageName:@"share_save_icon"];

View File

@@ -62,4 +62,5 @@ public class PILineLoginManager: NSObject {
@objc public class func destroyLine() {
PILineLoginManager.manager = nil
}
}

View File

@@ -8,5 +8,9 @@
<array>
<string>Default</string>
</array>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:cebg.t4m.cn</string>
</array>
</dict>
</plist>

View File

@@ -8,5 +8,9 @@
<array>
<string>Default</string>
</array>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:cebg.t4m.cn</string>
</array>
</dict>
</plist>