邀请码及通用飘屏
This commit is contained in:
2
Podfile
2
Podfile
@@ -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'
|
||||
|
@@ -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 */,
|
||||
|
@@ -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 - 表情
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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 {
|
||||
|
@@ -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;
|
||||
|
@@ -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 = @"";
|
||||
|
||||
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
@@ -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
|
@@ -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
|
142
YuMi/Modules/YMRoom/View/AnimationView/PIUniversalBannerView.m
Normal file
142
YuMi/Modules/YMRoom/View/AnimationView/PIUniversalBannerView.m
Normal 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
|
@@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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];
|
||||
|
@@ -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
|
||||
|
@@ -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{
|
||||
|
||||
|
@@ -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];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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"];
|
||||
|
||||
|
@@ -62,4 +62,5 @@ public class PILineLoginManager: NSObject {
|
||||
@objc public class func destroyLine() {
|
||||
PILineLoginManager.manager = nil
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
Reference in New Issue
Block a user