Compare commits

...

12 Commits

Author SHA1 Message Date
liyuhua
509c47cc2a 2.4.1版本发版 此commit置顶 2023-12-12 11:59:46 +08:00
liyuhua
0f47ed8ed7 2.4.0版本发版 此commit置顶 2023-12-12 11:55:07 +08:00
liyuhua
972f6d61ea 2.4.0版本发版 此commit置顶 2023-12-11 16:14:02 +08:00
liyuhua
5e2c5080c5 修复bug 2023-12-11 16:11:56 +08:00
liyuhua
ce308df1b6 修复bug 2023-12-08 10:34:47 +08:00
liyuhua
6a3201135b 选择区号修改 2023-12-07 19:44:52 +08:00
liyuhua
6e8ead27dd 修复bug 2023-12-07 15:44:03 +08:00
liyuhua
a8bef5946e 修复bug 2023-12-06 17:40:56 +08:00
liyuhua
3afa60587a 优化地区 2023-12-04 18:42:38 +08:00
liyuhua
52e7d4ff7e 修复bug 2023-11-30 16:41:28 +08:00
liyuhua
566d8a3672 房间踢人逻辑优化 2023-11-28 16:50:45 +08:00
liyuhua
8dffff8492 修复贵族页无法充值钻石bug 2023-11-28 11:48:00 +08:00
42 changed files with 1410 additions and 278 deletions

View File

@@ -300,6 +300,7 @@
239141C92AE1358F00322CA9 /* PIInputEntireServerScrollingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 239141C82AE1358F00322CA9 /* PIInputEntireServerScrollingView.m */; };
239141CC2AE267EF00322CA9 /* PIReceiveRedPacketSuccessView.m in Sources */ = {isa = PBXBuildFile; fileRef = 239141CB2AE267EF00322CA9 /* PIReceiveRedPacketSuccessView.m */; };
23942E912A86424500D0ECC2 /* XPLoginAuthCodeVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 23942E902A86424500D0ECC2 /* XPLoginAuthCodeVC.m */; };
2396FCE42B22BE5D0014021D /* pi_area_info.json in Resources */ = {isa = PBXBuildFile; fileRef = 2396FCE32B22BE5D0014021D /* pi_area_info.json */; };
239BEEDB2AA1E058005CDA94 /* PIHoemCategoryTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 239BEEDA2AA1E058005CDA94 /* PIHoemCategoryTitleView.m */; };
23A439742AA1CF7C002E6039 /* XPNewHomeHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23A439732AA1CF7C002E6039 /* XPNewHomeHeadView.m */; };
23B2AEC12A64E9C200543D17 /* LoginForgetEditView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23B2AEC02A64E9C200543D17 /* LoginForgetEditView.m */; };
@@ -2063,6 +2064,7 @@
239141CB2AE267EF00322CA9 /* PIReceiveRedPacketSuccessView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIReceiveRedPacketSuccessView.m; sourceTree = "<group>"; };
23942E8F2A86424500D0ECC2 /* XPLoginAuthCodeVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginAuthCodeVC.h; sourceTree = "<group>"; };
23942E902A86424500D0ECC2 /* XPLoginAuthCodeVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginAuthCodeVC.m; sourceTree = "<group>"; };
2396FCE32B22BE5D0014021D /* pi_area_info.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = pi_area_info.json; sourceTree = "<group>"; };
239BEED92AA1E058005CDA94 /* PIHoemCategoryTitleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PIHoemCategoryTitleView.h; sourceTree = "<group>"; };
239BEEDA2AA1E058005CDA94 /* PIHoemCategoryTitleView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIHoemCategoryTitleView.m; sourceTree = "<group>"; };
23A439722AA1CF7C002E6039 /* XPNewHomeHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNewHomeHeadView.h; sourceTree = "<group>"; };
@@ -4593,6 +4595,7 @@
E84A2EAC2A52F20900D6AF8A /* Launch Screen.storyboard */,
23E9EB322A85E97B00B792F2 /* pi_login_new_logo.png */,
23E9EB302A85E5D100B792F2 /* pi_app_logo_new_bg.png */,
2396FCE32B22BE5D0014021D /* pi_area_info.json */,
189DD53D26DE255600AB55B1 /* Info.plist */,
E80E09AB2A40B70100CD2BE7 /* Localizable.strings */,
189DD53E26DE255600AB55B1 /* main.m */,
@@ -10749,6 +10752,7 @@
E80EC87628ACD84000D133C5 /* emoji_139@2x.png in Resources */,
23CEFC572AFB8FC100576D89 /* pay_off@2x.png in Resources */,
E80EC86328ACD84000D133C5 /* emoji_41@2x.png in Resources */,
2396FCE42B22BE5D0014021D /* pi_area_info.json in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -12197,7 +12201,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 20.20.2;
MARKETING_VERSION = 20.20.5;
PRODUCT_BUNDLE_IDENTIFIER = com.peko.enterprise.ios;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -12232,7 +12236,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 20.20.2;
MARKETING_VERSION = 20.20.5;
PRODUCT_BUNDLE_IDENTIFIER = com.peko.enterprise.ios;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";

View File

@@ -49,7 +49,7 @@ isPhoneXSeries = [[UIApplication sharedApplication] delegate].window.safeAreaIns
///内置版本号
#define PI_App_Version @"2.3.0"
#define PI_App_Version @"2.4.1"
///渠道
#define PI_App_Source @"appstore"
//#define PI_App_Source @"pi_tf"

View File

@@ -54,7 +54,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>9</string>
<string>1</string>
<key>FacebookAppID</key>
<string>1266232494209868</string>
<key>FacebookClientToken</key>

View File

@@ -13,13 +13,13 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,copy) NSString *codeId;
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSString *abbr;
@property (nonatomic,copy) NSString *phone_area_code;
@property (nonatomic,copy) NSString *pi_phoneAreaCode;
@property (nonatomic,copy) NSString *code;
@property (nonatomic,copy) NSString *seq;
@property (nonatomic,copy) NSString *status;
@property (nonatomic,copy) NSString *region;
@property (nonatomic,copy) NSString *create_time;
@property (nonatomic,copy) NSString *update_time;
@property (nonatomic,copy) NSString * mcc;
@end
NS_ASSUME_NONNULL_END

View File

@@ -8,7 +8,5 @@
#import "LoginAreaModel.h"
@implementation LoginAreaModel
+ (NSDictionary *)replacedKeyFromPropertyName {
return @{@"pi_phoneAreaCode":@"phoneAreaCode"};
}
@end

View File

@@ -144,7 +144,8 @@
if (!_codeView){
_codeView = [UILabel new];
_codeView.userInteractionEnabled = YES;
_codeView.attributedText = [self getChooseCodeText:@"+852"];
NSString *code = [NSString getCountryCode];
_codeView.attributedText = [self getChooseCodeText: code];
}
return _codeView;

View File

@@ -177,7 +177,8 @@
if (!_countryLabel) {
_countryLabel = [[UILabel alloc] init];
_countryLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15];
_countryLabel.text = @"+852";
NSString *code = [NSString getCountryCode];
_countryLabel.text = code;
_countryLabel.textColor = [DJDKMIMOMColor mainTextColor];
_countryLabel.backgroundColor = [UIColor clearColor];
_countryLabel.textAlignment = NSTextAlignmentCenter;

View File

@@ -14,7 +14,7 @@
#import "Api+Login.h"
///Third
#import <Masonry/Masonry.h>
@interface XPLoginAraeViewController ()<UITableViewDelegate,UITableViewDataSource>
@interface XPLoginAraeViewController ()<UITableViewDelegate,UITableViewDataSource,XPLoginAreaTableViewCellDelegate>
@property (nonatomic,strong) UITableView *tableView;
@property (nonatomic,strong) NSMutableArray *listData;
@property (nonatomic,strong) NSMutableArray *titleList;
@@ -26,39 +26,49 @@
[super viewDidLoad];
[self initSubViews];
[self initSubViewConstraints];
[Api getPhoneAreaCodeList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
if (code == 200) {
NSArray *list = [LoginAreaModel modelsWithArray:data.data];
[self.titleList removeAllObjects];
[self.listData removeAllObjects];
[self getLocalPlistWithList:list];
}
}];
[self getPhoneAreaCodeList];
}
#pragma mark - LoginVerifCodeProtocol
-(void)getPhoneAreaCodeListSuccess:(NSArray *)list{
[self hideHUD];
[self.titleList removeAllObjects];
[self.listData removeAllObjects];
[self getLocalPlistWithList:list];
}
-(void)getPhoneAreaCodeListFail{
[self hideHUD];
NSBundle *bundle = [NSBundle mainBundle];
NSString *file = [bundle pathForResource:@"district" ofType:@"plist"];
NSArray *dictArray = [NSArray arrayWithContentsOfFile:file];
NSArray *list = [LoginAreaModel modelsWithArray:dictArray];
[self getLocalPlistWithList:list];
-(void)getPhoneAreaCodeList{
//
NSString *path = [[NSBundle mainBundle] pathForResource:@"pi_area_info" ofType:@"json"];
//
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
// JSON
NSDictionary *codeData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
NSArray *codeList = [LoginAreaModel modelsWithArray:codeData[@"RECORDS"]];
[self getLocalPlistWithList:codeList];
}
-(void)getLocalPlistWithList:(NSArray *)list{
NSArray * letterList = @[@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z"];
NSArray * letterList = @[@"",@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z"];
NSMutableArray *otherList = [NSMutableArray array];
NSMutableArray *defaultList = [NSMutableArray array];
LoginAreaModel *TwModel;
LoginAreaModel *HKModel ;
LoginAreaModel *SPModel ;
LoginAreaModel *MYModel ;
LoginAreaModel *ChinsModel ;
[self.titleList addObject:@""];
for (NSString *letter in letterList) {
NSMutableArray *modelList = [NSMutableArray array];
for (LoginAreaModel *model in list) {
if([model.code isEqualToString:@"886"]){
TwModel = model;
}
if([model.code isEqualToString:@"852"]){
HKModel = model;
}
if([model.code isEqualToString:@"65"]){
SPModel = model;
}
if([model.code isEqualToString:@"60"]){
MYModel = model;
}
if([model.code isEqualToString:@"86"]){
ChinsModel = model;
}
NSString *fristLetter = [model.name substringWithRange:NSMakeRange(0, 1)];
if([letter isEqualToString:fristLetter]){
[modelList addObject:model];
@@ -74,8 +84,26 @@
[self.listData addObject:modelList];
}
}
[self.listData addObject:otherList];
[self.titleList addObject:@"#"];
if(TwModel != nil){
[defaultList addObject:TwModel];
}
if(HKModel != nil){
[defaultList addObject:HKModel];
}
if(SPModel != nil){
[defaultList addObject:SPModel];
}
if(MYModel != nil){
[defaultList addObject:MYModel];
}
if(ChinsModel != nil){
[defaultList addObject:ChinsModel];
}
[self.listData insertObject:defaultList atIndex:0];
if(otherList.count > 0){
[self.listData addObject:otherList];
[self.titleList addObject:@"#"];
}
[self.tableView reloadData];
}
#pragma mark - UITableViewDelegate
@@ -96,6 +124,9 @@
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
XPLoginAreaTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPLoginAreaTableViewCell class]) forIndexPath:indexPath];
if(cell.delegate == nil){
cell.delegate = self;
}
if(indexPath.section < self.listData.count){
NSArray *listModel = self.listData[indexPath.section];
if(indexPath.row < listModel.count){
@@ -104,13 +135,15 @@
}
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
LoginAreaModel *codeModel = self.listData[indexPath.section][indexPath.row];
if(self.delegate && [self.delegate respondsToSelector:@selector(chooseAreaCodeSuccess:)]){
[self.delegate chooseAreaCodeSuccess:codeModel.pi_phoneAreaCode ?: codeModel.phone_area_code];
}
[self.navigationController popViewControllerAnimated:YES];
#pragma mark - XPLoginAreaTableViewCellDelegate
- (void)didSelectModel:(LoginAreaModel *)model{
LoginAreaModel *codeModel = model;
if(self.delegate && [self.delegate respondsToSelector:@selector(chooseAreaCodeSuccess:)]){
[self.delegate chooseAreaCodeSuccess:codeModel.code];
}
[self.navigationController popViewControllerAnimated:YES];
}
#pragma mark - Private Method
- (void)initSubViews {

View File

@@ -6,13 +6,19 @@
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@class LoginAreaModel;
@interface XPLoginAreaTableViewCell : UITableViewCell
@protocol XPLoginAreaTableViewCellDelegate <NSObject>
@property (nonatomic,strong) LoginAreaModel *areaModel;
-(void)didSelectModel:(LoginAreaModel *_Nullable)model;
@end
NS_ASSUME_NONNULL_BEGIN
@interface XPLoginAreaTableViewCell : UITableViewCell
@property (nonatomic,strong) LoginAreaModel *areaModel;
@property(nonatomic,weak) id<XPLoginAreaTableViewCellDelegate>delegate;
@end
NS_ASSUME_NONNULL_END

View File

@@ -14,6 +14,7 @@
@interface XPLoginAreaTableViewCell()
@property (nonatomic,strong) UILabel *areaVeiw;
@property (nonatomic,strong) UILabel *codeView;
@property(nonatomic,strong) UIButton *clickBtn;
@end
@implementation XPLoginAreaTableViewCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
@@ -30,6 +31,7 @@
self.selectionStyle = UITableViewCellSelectionStyleNone;
[self.contentView addSubview:self.areaVeiw];
[self.contentView addSubview:self.codeView];
[self.contentView addSubview:self.clickBtn];
}
- (void)initSubViewConstraints {
[self.areaVeiw mas_makeConstraints:^(MASConstraintMaker *make) {
@@ -40,15 +42,21 @@
make.right.mas_equalTo(-kGetScaleWidth(15));
make.centerY.equalTo(self.contentView);
}];
[self.clickBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.left.bottom.equalTo(self.contentView);
make.right.mas_equalTo(-kGetScaleWidth(20));
}];
}
-(void)didClickBtnAction{
if(self.delegate && [self.delegate respondsToSelector:@selector(didSelectModel:)]){
[self.delegate didSelectModel:self.areaModel];
}
}
- (void)setAreaModel:(LoginAreaModel *)areaModel{
_areaModel = areaModel;
_areaVeiw.text = _areaModel.name;
if(_areaModel.pi_phoneAreaCode == nil){
_codeView.text = _areaModel.phone_area_code;
return;
}
_codeView.text = _areaModel.pi_phoneAreaCode;
_codeView.text = _areaModel.code;
}
#pragma mark -
@@ -70,5 +78,11 @@
}
return _codeView;
}
- (UIButton *)clickBtn{
if(!_clickBtn){
_clickBtn = [UIButton new];
[_clickBtn addTarget:self action:@selector(didClickBtnAction) forControlEvents:UIControlEventTouchUpInside];
}
return _clickBtn;
}
@end

View File

@@ -9,6 +9,7 @@
#import "DJDKMIMOMColor.h"
#import <Masonry.h>
#import <ReactiveObjC.h>
#import "LoginAreaModel.h"
@interface XPLoginInputView()
@@ -46,12 +47,16 @@
areaImageView.userInteractionEnabled = NO;
///
NSString *code = [NSString getCountryCode];
UIButton *areaCodeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[areaCodeBtn setTitle:@"+852" forState:UIControlStateNormal];
[areaCodeBtn setTitle:code forState:UIControlStateNormal];
[areaCodeBtn setTitleColor:UIColorFromRGB(0x1F1B4F) forState:UIControlStateNormal];
areaCodeBtn.titleLabel.font = kFontMedium(16);
_areaCodeBtn = areaCodeBtn;
areaCodeBtn.userInteractionEnabled = NO;
UIStackView *areaStackView = [[UIStackView alloc] init];
areaStackView.axis = UILayoutConstraintAxisHorizontal;

View File

@@ -201,6 +201,7 @@
[TTPopup alertWithConfig:config showBorder:NO confirmHandler:^{
XPIAPRechargeViewController * webVC =[[XPIAPRechargeViewController alloc] init];
webVC.type = @"4";
[self.navigationController pushViewController:webVC animated:YES];
} cancelHandler:^{

View File

@@ -364,16 +364,18 @@
///
- (void)rechargeNewProcessStatus:(StoreConditionResult)status {
if (status == StoreConditionResultPay || status == StoreConditionResultStart || status == StoreConditionResultVerifiedServer) {
}else if (status == StoreConditionResultUnowned) {
[XNDJTDDLoadingTool hideHUDInView:kWindow];
[self showErrorToast:YMLocalizedString(@"XPIAPRechargeViewController1")];
}else{
[XNDJTDDLoadingTool hideHUDInView:kWindow];
[self showErrorToast:YMLocalizedString(@"XPIAPRechargeViewController0")];
}
dispatch_async(dispatch_get_main_queue(), ^{
if (status == StoreConditionResultPay || status == StoreConditionResultStart || status == StoreConditionResultVerifiedServer) {
}else if (status == StoreConditionResultUnowned) {
[XNDJTDDLoadingTool hideHUDInView:kWindow];
[self showErrorToast:YMLocalizedString(@"XPIAPRechargeViewController1")];
}else{
[XNDJTDDLoadingTool hideHUDInView:kWindow];
[self showErrorToast:YMLocalizedString(@"XPIAPRechargeViewController0")];
}
});
}
///id

View File

@@ -7,10 +7,12 @@
#import <Foundation/Foundation.h>
#import "YUMINNNN.h"
#import "UserLevelVo.h"
NS_ASSUME_NONNULL_BEGIN
@interface HomeSearchResultModel : PIBaseModel
@interface HomeSearchResultModel : PIBaseModel
@property(nonatomic,strong) UserLevelVo *userLevelVo;
///头像
@property (nonatomic,copy) NSString *avatar;
///在线人数

View File

@@ -24,8 +24,6 @@
@property (nonatomic,strong) UIStackView *nameStackView;
///
@property (nonatomic,strong) UILabel *nickLabel;
///
@property (nonatomic,strong) UIButton *sexImageView;
///id
@property (nonatomic,strong) UILabel *idLabel;
///线
@@ -36,6 +34,10 @@
@property (nonatomic,strong) UIImageView *noteImageView;
///
@property (nonatomic,strong) UILabel *numberLabel;
///
@property (nonatomic,strong) NetImageView *experImageView;
///
@property (nonatomic,strong) NetImageView *charmImageView;
@end
@implementation XPSearchListTableViewCell
@@ -51,12 +53,11 @@
- (void)configData:(HomeSearchResultModel *)resultModel type:(SearchType)type {
if (resultModel) {
self.avatarImageView.imageUrl = resultModel.avatar;
self.nickLabel.text = type == SearchType_Room ? resultModel.title : resultModel.nick;
NSString *name = type == SearchType_Room ? resultModel.title : resultModel.nick;
self.nickLabel.text = name.length > 8 ? [NSString stringWithFormat:@"%@...",[name substringToIndex:8]]:name;
self.idLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineUserInfoTableViewCell3"),AppName, resultModel.erbanNo];
[self.sexImageView setTitle:[NSString getAgeWithBirth:resultModel.birth] forState:UIControlStateNormal];
self.sexImageView.backgroundColor = resultModel.gender == GenderType_Male ? UIColorFromRGB(0x6BB3FF) :UIColorFromRGB(0xFF80CC);
self.sexImageView.titleEdgeInsets = resultModel.gender != GenderType_Male ? UIEdgeInsetsMake(0, 2, 0, 0):UIEdgeInsetsMake(0, -1, 0, 0);
self.sexImageView.selected = resultModel.gender != GenderType_Male;
self.charmImageView.imageUrl = resultModel.userLevelVo.charmUrl;
self.experImageView.imageUrl = resultModel.userLevelVo.experUrl;
if (type == SearchType_Users) {
self.numberLabel.text = YMLocalizedString(@"XPSearchListTableViewCell1");
self.numberView.hidden = resultModel.roomUid.length <= 0;
@@ -76,11 +77,7 @@
self.avatarImageView.imageUrl = resultModel.avatar;
self.nickLabel.text = resultModel.title ;
self.idLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPMineUserInfoTableViewCell3"),AppName, resultModel.erbanNo];
[self.sexImageView setTitle:[NSString getAgeWithBirth:resultModel.birth] forState:UIControlStateNormal];
self.sexImageView.backgroundColor = resultModel.gender == GenderType_Male ? UIColorFromRGB(0x6BB3FF) :UIColorFromRGB(0xFF80CC);
self.sexImageView.titleEdgeInsets = resultModel.gender != GenderType_Male ? UIEdgeInsetsMake(0, 2, 0, 0):UIEdgeInsetsMake(0, -1, 0, 0);
self.sexImageView.selected = resultModel.gender != GenderType_Male;
if (resultModel.onlineNum > 100) {
self.numberLabel.text = [NSString stringWithFormat:@"%ld", resultModel.onlineNum];
} else {
@@ -103,7 +100,8 @@
[self.numberView addSubview:self.noteImageView];
[self.nameStackView addArrangedSubview:self.nickLabel];
[self.nameStackView addArrangedSubview:self.sexImageView];
[self.nameStackView addArrangedSubview:self.experImageView];
[self.nameStackView addArrangedSubview:self.charmImageView];
}
- (void)initSubViewConstraints {
@@ -119,10 +117,7 @@
make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-1.5);
}];
[self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(28);
make.height.mas_equalTo(14);
}];
[self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.nameStackView);
@@ -153,6 +148,17 @@
make.size.mas_equalTo(CGSizeMake(10, 9));
make.right.mas_equalTo(self.numberLabel.mas_left).offset(-3);
}];
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(kGetScaleWidth(36));
make.height.mas_equalTo(kGetScaleWidth(18));
}];
[self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(kGetScaleWidth(36));
make.height.mas_equalTo(kGetScaleWidth(18));
}];
}
#pragma mark - Getters And Setters
@@ -190,19 +196,7 @@
return _nickLabel;
}
- (UIButton *)sexImageView {
if (!_sexImageView) {
_sexImageView = [[UIButton alloc] init];
[_sexImageView setImage:kImage(@"home_age_boy_icon") forState:UIControlStateNormal];
[_sexImageView setImage:kImage(@"home_age_girl_icon") forState:UIControlStateSelected];
_sexImageView.titleLabel.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium];
[_sexImageView setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_sexImageView.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
_sexImageView.layer.cornerRadius = 14/2;
_sexImageView.layer.masksToBounds = YES;
}
return _sexImageView;
}
- (UILabel *)idLabel {
if (!_idLabel) {
@@ -251,5 +245,22 @@
}
return _numberLabel;
}
- (NetImageView *)experImageView {
if (!_experImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_experImageView = [[NetImageView alloc] initWithConfig:config];
}
return _experImageView;
}
- (NetImageView *)charmImageView {
if (!_charmImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_charmImageView = [[NetImageView alloc] initWithConfig:config];
}
return _charmImageView;
}
@end

View File

@@ -223,6 +223,10 @@ NS_ASSUME_NONNULL_BEGIN
/// @param completion 完成
/// @param roomUid 房间id
+(void)getUnlockRoomAlbumPhotoList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid;
///获取踢人列表
/// @param completion 完成
/// @param roomUid 房间id
+(void)getKickUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid;
@end
NS_ASSUME_NONNULL_END

View File

@@ -191,7 +191,7 @@
/// @param completion
/// @param teamUid uid
+ (void)requestFansTeamTask:(HttpRequestHelperCompletion)completion teamUid:(NSString *)teamUid {
NSString * fang = [NSString stringFromBase64String:@"Y3Jvc3Nyb29tcGtyb3VuZC9nZXRTaW5nbGVSb29tUGtSdWxl"];///crossroompkround/getSingleRoomPkRule
NSString * fang = @"anchorFansTeam/getFansTaskInfo";
[self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, teamUid, nil];
}
@@ -310,4 +310,11 @@
+(void)getUnlockRoomAlbumPhotoList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid{
[self makeRequest:@"roomAlbum/listUnlockPhoto" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,roomUid,nil];
}
///
/// @param completion
/// @param roomUid id
+(void)getKickUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid{
[self makeRequest:@"room/kick/" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,roomUid,nil];
}
@end

View File

@@ -26,11 +26,11 @@ NS_ASSUME_NONNULL_BEGIN
/// @param backPic 房间背景
/// @param mgId 小游戏的id
- (void)openRoom:(NSString *)title
type:(RoomType)type
roomPwd:(NSString *)roomPwd
roomDesc:(NSString *)roomDesc
backPic:(NSString *)backPic
mgId:(NSString *)mgId;
type:(RoomType)type
roomPwd:(NSString *)roomPwd
roomDesc:(NSString *)roomDesc
backPic:(NSString *)backPic
mgId:(NSString *)mgId;
///福袋礼物爆出的礼物的bug
///进入房间的时候需要获取一次礼物信息 因为如果有人送礼物的话 如果是福袋礼物的话 爆出的礼物需要从礼物列表中获取 会导致公屏不显示那个礼物
@@ -73,6 +73,9 @@ NS_ASSUME_NONNULL_BEGIN
/// 获取已解锁照片id列表
/// @param roomUid 房间id
-(void)getUnlockRoomAlbumPhotoListWithRoomUid:(NSString *)roomUid;
///得到踢人名单
/// @param roomUid 房间id
-(void)getKickUserListWithRoomUid:(NSString *)roomUid;
@end
NS_ASSUME_NONNULL_END

View File

@@ -297,4 +297,13 @@
[[self getView]getUnlockRoomAlbumPhotoListSuccessWithList:data.data];
} showLoading:NO errorToast:NO] roomUid:roomUid];
}
///
/// @param roomUid id
-(void)getKickUserListWithRoomUid:(NSString *)roomUid{
[Api getKickUserList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
[[self getView]getKickUserListSuccessWithList:data.data];
} fail:^(NSInteger code, NSString * _Nullable msg) {
} showLoading:NO errorToast:NO] roomUid:roomUid];
}
@end

View File

@@ -39,6 +39,8 @@ NS_ASSUME_NONNULL_BEGIN
-(void)getFreeGiftDataSuccess:(XPFreeGiftModel *)freeModel;
///获取已解锁照片id列表
-(void)getUnlockRoomAlbumPhotoListSuccessWithList:(NSArray *)list;
///获取踢人房间列表
-(void)getKickUserListSuccessWithList:(NSArray *)list;
@end
NS_ASSUME_NONNULL_END

View File

@@ -61,13 +61,13 @@
[self.scrollView addSubview:self.ruleLabel];
[self.scrollView addSubview:self.randomImageView];
[self.scrollView addSubview:self.randomLabel];
[self.scrollView addSubview:self.randomContentLb];
[self.scrollView addSubview:self.inviteImageView];
[self.scrollView addSubview:self.inviteLabel];
[self.scrollView addSubview:self.inviteContentLb];
// [self.scrollView addSubview:self.randomImageView];
// [self.scrollView addSubview:self.randomLabel];
// [self.scrollView addSubview:self.randomContentLb];
//
// [self.scrollView addSubview:self.inviteImageView];
// [self.scrollView addSubview:self.inviteLabel];
// [self.scrollView addSubview:self.inviteContentLb];
}
@@ -99,37 +99,37 @@
make.left.right.mas_equalTo(self.backgroundImageView).inset(18);
}];
[self.randomLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.ruleLabel.mas_bottom).offset(16);
make.centerX.mas_equalTo(self.scrollView);
}];
[self.randomImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(88, 8));
make.top.mas_equalTo(self.randomLabel.mas_bottom).offset(-6);
make.centerX.mas_equalTo(self.randomLabel);
}];
[self.randomContentLb mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.backgroundImageView).inset(18);
make.top.mas_equalTo(self.randomImageView.mas_bottom).offset(8);
}];
[self.inviteLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.randomContentLb.mas_bottom).offset(16);
make.centerX.mas_equalTo(self.scrollView);
}];
[self.inviteImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(88, 8));
make.top.mas_equalTo(self.inviteLabel.mas_bottom).offset(-6);
make.centerX.mas_equalTo(self.inviteLabel);
}];
[self.inviteContentLb mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.backgroundImageView).inset(18);
make.top.mas_equalTo(self.inviteImageView.mas_bottom).offset(8);
}];
// [self.randomLabel mas_makeConstraints:^(MASConstraintMaker *make) {
// make.top.mas_equalTo(self.ruleLabel.mas_bottom).offset(16);
// make.centerX.mas_equalTo(self.scrollView);
// }];
//
// [self.randomImageView mas_makeConstraints:^(MASConstraintMaker *make) {
// make.size.mas_equalTo(CGSizeMake(88, 8));
// make.top.mas_equalTo(self.randomLabel.mas_bottom).offset(-6);
// make.centerX.mas_equalTo(self.randomLabel);
// }];
//
// [self.randomContentLb mas_makeConstraints:^(MASConstraintMaker *make) {
// make.left.right.mas_equalTo(self.backgroundImageView).inset(18);
// make.top.mas_equalTo(self.randomImageView.mas_bottom).offset(8);
// }];
//
// [self.inviteLabel mas_makeConstraints:^(MASConstraintMaker *make) {
// make.top.mas_equalTo(self.randomContentLb.mas_bottom).offset(16);
// make.centerX.mas_equalTo(self.scrollView);
// }];
//
// [self.inviteImageView mas_makeConstraints:^(MASConstraintMaker *make) {
// make.size.mas_equalTo(CGSizeMake(88, 8));
// make.top.mas_equalTo(self.inviteLabel.mas_bottom).offset(-6);
// make.centerX.mas_equalTo(self.inviteLabel);
// }];
//
// [self.inviteContentLb mas_makeConstraints:^(MASConstraintMaker *make) {
// make.left.right.mas_equalTo(self.backgroundImageView).inset(18);
// make.top.mas_equalTo(self.inviteImageView.mas_bottom).offset(8);
// }];
[self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.top.mas_equalTo(self.backgroundImageView);
@@ -264,6 +264,7 @@ CGSize size = [self.ruleLabel sizeThatFits:CGSizeMake(300 -36, CGFLOAT_MAX)];
[attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, title.length)];
_inviteContentLb.attributedText = attribute;
_inviteContentLb.numberOfLines = 0;
}
return _inviteContentLb;
}

View File

@@ -273,18 +273,24 @@
self.nameLabel.text = self.model.anchorNick;
self.countLabel.text = [NSString stringWithFormat:YMLocalizedString(@"XPAnchorFansTeamViewController0"), self.model.teamNum];
XPAnchorFansPrivilegeModel *nameplateModel = self.model.privilegeConfigVos[0];
self.nameplateImageView.imageUrl = nameplateModel.icon;
self.nameplateLabel.text = nameplateModel.name;
self.nameplateDescLabel.text = nameplateModel.desc;
XPAnchorFansPrivilegeModel *giftModel = self.model.privilegeConfigVos[1];
self.giftImageView.imageUrl = giftModel.icon;
self.giftLabel.text = giftModel.name;
self.giftDescLabel.text = giftModel.desc;
for (XPAnchorFansPrivilegeModel *obj in self.model.privilegeConfigVos) {
if(obj.type == 1){
XPAnchorFansPrivilegeModel *nameplateModel = obj;
self.nameplateImageView.imageUrl = nameplateModel.icon;
self.nameplateLabel.text = nameplateModel.name;
self.nameplateDescLabel.text = nameplateModel.desc;
}else if(obj.type == 2){
XPAnchorFansPrivilegeModel *giftModel = obj;
self.giftImageView.imageUrl = giftModel.icon;
self.giftLabel.text = giftModel.name;
self.giftDescLabel.text = giftModel.desc;
}else if(obj.type == 3){
XPAnchorFansPrivilegeModel *joinModel = obj;
self.joinLabel.text = joinModel.name;
self.iconImageView.imageUrl = joinModel.icon;
}
}
XPAnchorFansPrivilegeModel *joinModel = self.model.privilegeConfigVos[2];
self.joinLabel.text = joinModel.name;
self.iconImageView.imageUrl = joinModel.icon;
CGFloat margin = 8;
for (int i = 0; i < 3; i++) {
@@ -323,7 +329,14 @@
- (void)joinButtonAction:(UIButton *)button {
button.userInteractionEnabled = NO;
XPAnchorFansPrivilegeModel *joinModel = self.model.privilegeConfigVos[2];
XPAnchorFansPrivilegeModel *joinModel;
for (XPAnchorFansPrivilegeModel *obj in self.model.privilegeConfigVos) {
if(obj.type == 3){
joinModel = obj;
}
}
if(joinModel == nil)return;
[Api requestSendAnchorFansGift:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
if (code == 200) {
[self showSuccessToast:YMLocalizedString(@"XPAnchorFansTeamViewController1")];

View File

@@ -108,7 +108,7 @@
self.svgDisplayView.hidden = NO;
@weakify(self);
NSString * bgString = [NSString stringWithFormat:@"%@/anchor_room_bg.svga", API_Image_URL];
NSURL *bgUrl = [NSURL fileURLWithPath:bgString];
NSURL *bgUrl = [NSURL URLWithString:bgString];
[self.parserManager loadSvgaWithURL:bgUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
@strongify(self);
if (videoItem != nil) {

View File

@@ -223,8 +223,12 @@ UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey;
[[NSNotificationCenter defaultCenter] postNotificationName:@"cancelMatchRandomPK" object:nil];
[self dismissViewControllerAnimated:YES completion:nil];
NSString * roomUid = [NSString stringWithFormat:@"%ld", self.roomInfo.uid];
XPAnchorPKSelectTypeController *selectVc = [[XPAnchorPKSelectTypeController alloc] initWithRoomUid:roomUid];
[self.hostDelegate.getCurrentNav presentViewController:selectVc animated:YES completion:nil];
XPAnchorPKViewController * acrossRoomPKVC = [[XPAnchorPKViewController alloc] initWithRoomUid:roomUid];
[self.hostDelegate.getCurrentNav presentViewController:acrossRoomPKVC animated:YES completion:nil];
// XPAnchorPKSelectTypeController *selectVc = [[XPAnchorPKSelectTypeController alloc] initWithRoomUid:roomUid];
// [self.hostDelegate.getCurrentNav presentViewController:selectVc animated:YES completion:nil];
}
#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource
@@ -392,8 +396,8 @@ UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey;
}];
} else {
[self dismissViewControllerAnimated:NO completion:nil];
XPAnchorPKSelectTypeController *selectVc = [[XPAnchorPKSelectTypeController alloc] initWithRoomUid:roomUid];
[self.hostDelegate.getCurrentNav presentViewController:selectVc animated:YES completion:nil];
XPAnchorPKViewController * acrossRoomPKVC = [[XPAnchorPKViewController alloc] initWithRoomUid:roomUid];
[self.hostDelegate.getCurrentNav presentViewController:acrossRoomPKVC animated:YES completion:nil];
}
}
break;

View File

@@ -93,7 +93,7 @@
self.svgDisplayView.hidden = NO;
@weakify(self);
NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/anchor_room_speak.svga", API_Image_URL];
NSURL *bgUrl = [NSURL fileURLWithPath:anatomiser1Name];
NSURL *bgUrl = [NSURL URLWithString:anatomiser1Name];
[self.parserManager loadSvgaWithURL:bgUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
@strongify(self);
self.svgDisplayView.loops = INT_MAX;

View File

@@ -104,7 +104,7 @@
self.svgDisplayView.hidden = NO;
@weakify(self);
NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/anchor_room_speak.svga", API_Image_URL];
NSURL *bgUrl = [NSURL fileURLWithPath:anatomiser1Name];
NSURL *bgUrl = [NSURL URLWithString:anatomiser1Name];
[self.parserManager loadSvgaWithURL:bgUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
@strongify(self);
self.svgDisplayView.loops = INT_MAX;

View File

@@ -449,7 +449,12 @@
self.nickLabel.textColor = [DJDKMIMOMColor positionNickColor];
}
if (self.microModel.microState.position == -1) {
self.sexImageView.hidden = NO;
[self.stackView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(self);
make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(10);
make.width.mas_lessThanOrEqualTo(kGetScaleWidth(150));
}];
self.sexImageView.hidden = YES;
self.postionLabel.hidden = YES;
[self.sexImageView setTitle:[NSString getAgeWithBirth:userInfo.birth] forState:UIControlStateNormal];
self.sexImageView.backgroundColor = userInfo.gender == GenderType_Male ? UIColorFromRGB(0x6BB3FF) :UIColorFromRGB(0xFF80CC);

View File

@@ -187,7 +187,7 @@
///
-(void)enterRoomUpMicWith:(MicroQueueModel *)sequence{
RoomInfoModel * roomInfo =self.hostDelegate.getRoomInfo;
NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.uid];
NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init];
request.key = @(sequence.microState.position).stringValue;
request.value = [sequence.userInfo toJSONString];
@@ -196,7 +196,44 @@
[[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) {
}];
}
-(void)updateNIMMicroQueues{
RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo;
// self.micQueue
[[NIMSDK sharedSDK].chatroomManager fetchChatroomInfo:[NSString stringWithFormat:@"%ld", (long)roomInfo.roomId] completion:^(NSError * _Nullable error, NIMChatroom * _Nullable chatroom) {
if (error) {
return;
}
NSDictionary *info = (NSDictionary *)[chatroom.ext toJSONObject];
NSDictionary *micState = [info[@"micQueue"] toJSONObject];
for (NSString *position in micState.allKeys) {
MicroStateModel *state = [MicroStateModel modelWithJSON:micState[position]];
MicroQueueModel *sequence = [self.micQueue objectForKey:position];
sequence.microState = state;
}
[self microQueueUpdated: NO];
}];
self.hadGetQueueInfoSuccess = NO;
// self.micQueue
[[NIMSDK sharedSDK].chatroomManager fetchChatroomQueue:[NSString stringWithFormat:@"%ld", (long)roomInfo.roomId] completion:^(NSError * _Nullable error, NSArray<NSDictionary<NSString *,NSString *> *> * _Nullable info) {
if (error) return;
BOOL ownerRTCChange = NO;
for (NSDictionary *item in info) {
UserInfoModel *userInfo = [UserInfoModel modelWithJSON:item.allValues.firstObject];
NSString *position = item.allKeys.firstObject;
MicroQueueModel *sequence = [self.micQueue objectForKey:position];
sequence.userInfo = userInfo;
if (userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) {
ownerRTCChange = YES;
}
}
[self microQueueUpdated:ownerRTCChange];
[self.hostDelegate onMicroQueueUpdate:self.micQueue];
self.hadGetQueueInfoSuccess = YES;
}];
}
- (void)initGiftValue{
RoomInfoModel* roomInfo = self.hostDelegate.getRoomInfo;
//
@@ -495,23 +532,29 @@
break;
case NIMChatroomEventTypeEnter:
{
///
RoomInfoModel * roomInfo =self.hostDelegate.getRoomInfo;
NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.uid];
BOOL isInMic = NO;
for (MicroQueueModel *sequence in self.micQueue.allValues) {
if ([AccountInfoStorage instance].getUid.integerValue == sequence.userInfo.uid) {
isInMic = YES;
NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init];
request.key = @(sequence.microState.position).stringValue;
request.value = [sequence.userInfo toJSONString];
request.roomId = roomId;
request.transient = YES;
[[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) {
}];
///
RoomInfoModel * roomInfo =self.hostDelegate.getRoomInfo;
NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
for (MicroQueueModel *sequence in self.micQueue.allValues) {
if ([AccountInfoStorage instance].getUid.integerValue == sequence.userInfo.uid) {
NIMChatroomQueueUpdateRequest *request = [[NIMChatroomQueueUpdateRequest alloc]init];
NSMutableDictionary *userInfo = [[NSMutableDictionary alloc]initWithDictionary:[sequence.userInfo toJSONObject]];
[userInfo setValue:@(YES) forKey:@"isNoProhibitMic"];
request.key = @(sequence.microState.position).stringValue;
request.value = [userInfo toJSONString];
request.roomId = roomId;
request.transient = YES;
[[NIMSDK sharedSDK].chatroomManager updateChatroomQueueObject:request completion:^(NSError * _Nullable error) {
}];
break;
}
}
if (content.source.userId.integerValue == [AccountInfoStorage instance].getUid.integerValue){
[self updateNIMMicroQueues];
}
}
break;
case NIMChatroomEventTypeExit:

View File

@@ -54,6 +54,12 @@ NS_ASSUME_NONNULL_BEGIN
/// @param opt 1: 设置为管理员;2:设置普通等级用户;-1:设为黑名单用户;-2:设为禁言用户
/// @param isSet true 设置false 取消设置
+ (void)superAdminHandleUser:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid targetUid:(NSString *)targetUid opt:(NSString *)opt isSet:(NSNumber *)isSet;
/// 记录踢人名单列表
/// @param completion 完成
/// @param roomUid 房间id
/// @param uid 用户id
+(void)recordskickUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid;
@end
NS_ASSUME_NONNULL_END

View File

@@ -62,5 +62,11 @@
NSString * fang = [NSString stringFromBase64String:@"c3VwZXIvc2V0L2NoYXRyb29tL3JvbGU="];///super/set/chatroom/role
[self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, targetUid, opt,isSet, nil];
}
///
/// @param completion
/// @param roomUid id
/// @param uid id
+(void)recordskickUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid{
[self makeRequest:@"room/kick/" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, uid, nil];
}
@end

View File

@@ -89,6 +89,11 @@ NS_ASSUME_NONNULL_BEGIN
/// @param opt 1: 设置为管理员;2:设置普通等级用户;-1:设为黑名单用户;-2:设为禁言用户
/// @param roomUid 房主的uid
- (void)superAdminHandleUser:(NSString *)targetUid opt:(NSString *)opt roomUid:(NSString *)roomUid isSet:(BOOL)isSet;
/// 记录踢人名单列表
/// @param roomUid 房间id
/// @param uid 用户id
-(void)recordsKickUserListWithRoomUid:(NSString *)roomUid uid:(NSString *)uid;
@end
NS_ASSUME_NONNULL_END

View File

@@ -451,7 +451,7 @@
[[NIMSDK sharedSDK].chatroomManager kickMember:request completion:^(NSError * _Nullable error) {
[[self getView] makeKickUserFinish:error];
[[self getView] makeKickUserFinish:error uid:targetUid];
}];
}
@@ -602,7 +602,16 @@
return nil;
}];
}
///
/// @param roomUid id
/// @param uid id
-(void)recordsKickUserListWithRoomUid:(NSString *)roomUid uid:(NSString *)uid{
[Api recordskickUserList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
} fail:^(NSInteger code, NSString * _Nullable msg) {
} showLoading:NO errorToast:NO] roomUid:roomUid uid:uid ];
}
#pragma mark - Getters And Setters
- (NSMutableArray *)functionArray {
if (!_functionArray) {

View File

@@ -24,7 +24,7 @@ NS_ASSUME_NONNULL_BEGIN
///设置管理 取消管理员 成功
- (void)markUserManagerFinish:(XPUserCardItemModel *)item error:(NSError *)error;
/// 踢出房间
- (void)makeKickUserFinish:(NSError *)error;
- (void)makeKickUserFinish:(NSError *)error uid:(NSString *)uid;
///超管踢管理出房间
- (void)superAdminKickUserFinish:(NSError *)error;
///抱下麦成功

View File

@@ -643,10 +643,12 @@
[self.collectionView reloadData];
}
- (void)makeKickUserFinish:(NSError *)error {
- (void)makeKickUserFinish:(NSError *)error uid:(NSString *)uid{
if (error == nil && self.targetUserInfo) {
NSString * roomUid = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.uid];
[self dismissViewControllerAnimated:YES completion:nil];
[self sendCustomMessageKickOrBlackUser:CustomMessageType_Kick_User second:Custom_Message_Sub_Kick_BeKicked];
[self.presenter recordsKickUserListWithRoomUid:roomUid uid:uid];
} else if (error.code == 404) {
[self showErrorToast:YMLocalizedString(@"XPUserCardViewController0")];
}

View File

@@ -937,7 +937,6 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
[[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO];
}
}
///
- (void)showAnchorScrollTipView {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
@@ -948,35 +947,6 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
[window bringSubviewToFront:self.anchorScrollTipView];
}
}
///
- (BOOL)isKictOutLatest:(NSString *)key mainKey:(NSString *)mainKey{
NSMutableDictionary *kickedList = [[NSUserDefaults standardUserDefaults]valueForKey:mainKey];
if([kickedList isKindOfClass:[NSString class]]){
kickedList = nil;
}
if(kickedList == nil){
kickedList = [NSMutableDictionary dictionary];
}else{
kickedList = [[NSMutableDictionary alloc]initWithDictionary:kickedList];
}
NSString *kictOutTime = [kickedList valueForKey:key];
if (kictOutTime) {
NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];
NSTimeInterval time = [date timeIntervalSince1970];
NSString *currentTime = [NSString stringWithFormat:@"%.0f", time];
//5
if ([currentTime intValue] - [kictOutTime intValue] > 5 * 60) {
[[NSUserDefaults standardUserDefaults] removeObjectForKey:key];
[[NSUserDefaults standardUserDefaults] synchronize];
return NO;
} else {
return YES;
}
} else {
return NO;
}
}
-(void)requesstShieldingAction{
[self.presenter requesstShieldingWtihType:@"1" objId:[NSString stringWithFormat:@"%ld",self.roomInfo.uid]];
}
@@ -1001,7 +971,18 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
}
[[NSNotificationCenter defaultCenter]postNotificationName:@"kGetgetUnlockRoomAlbumPhotoListNot" object:nil];
}
///
-(void)getKickUserListSuccessWithList:(NSArray *)list{
NSString *uid = [[AccountInfoStorage instance]getUid];
for (id obj in list) {
if([obj integerValue] == [uid integerValue]){
[self exitRoom];
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomViewController0")];
break;
}
}
}
- (void)initEnterRoomSuccess:(RoomInfoModel *)roomInfo user:(UserInfoModel *)userInfo {
[XNDJTDDLoadingTool hideHUDInView:self.navigationController.view];
[XPSkillCardPlayerManager shareInstance].roomUid = @(roomInfo.uid).stringValue;
@@ -1019,14 +1000,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
});
//5
NSString *currentUid = [AccountInfoStorage instance].getUid;
NSString *key = [NSString stringWithFormat:@"kKickedOutRoom_%@_%ld", currentUid, roomInfo.uid];
if ([self isKictOutLatest:key mainKey:@"kKickedOutRoomList"] == YES) {
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomViewController0")];
[self dismissViewControllerAnimated:YES completion:nil];
return;
}
if (roomInfo.type == RoomType_Anchor) {//
[self handleInitAnchorRoom];
[self showAnchorScrollTipView];
@@ -1391,33 +1365,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
#pragma mark - NIMChatroomManagerDelegate
- (void)chatroomBeKicked:(NIMChatroomBeKickedResult *)result {
if (result.reason == 2) {
[self showErrorToast:YMLocalizedString(@"XPRoomViewController8")];
///
NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];//0
NSTimeInterval time = [date timeIntervalSince1970];
NSString *currentTime = [NSString stringWithFormat:@"%.0f", time];
NSString *key = [NSString stringWithFormat:@"kKickedOutRoom_%@_%ld", [AccountInfoStorage instance].getUid, self.roomInfo.uid];
NSMutableDictionary *kickedList = [[NSUserDefaults standardUserDefaults]valueForKey:@"kKickedOutRoomList"];
if([kickedList isKindOfClass:[NSString class]]){
kickedList = nil;
}
if(kickedList == nil){
kickedList = [NSMutableDictionary dictionary];
}else{
kickedList = [[NSMutableDictionary alloc]initWithDictionary:kickedList];
}
NSMutableDictionary *copyList = [[NSMutableDictionary alloc]initWithDictionary:kickedList];
for (NSString *timeKey in copyList.allKeys) {
if([self isKictOutLatest:timeKey mainKey:@"kKickedOutRoomList"] == NO){
[kickedList removeObjectForKey:timeKey];
}
}
[kickedList setValue:currentTime forKey:key];
[[NSUserDefaults standardUserDefaults] setObject:kickedList forKey:@"kKickedOutRoomList"];
[[NSUserDefaults standardUserDefaults] synchronize];
} else if (result.reason == 5) {
if (result.reason == 5) {
[self showErrorToast:YMLocalizedString(@"XPRoomViewController9")];
}
[self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]];
@@ -1548,9 +1497,14 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
break;
case NIMChatroomEventTypeEnter:
{
if (content.source.userId.integerValue == [AccountInfoStorage instance].getUid.integerValue){
[self.presenter getKickUserListWithRoomUid:@(self.roomInfo.uid).stringValue];
}
if (content.source.userId.integerValue != [AccountInfoStorage instance].getUid.integerValue && self.userInfo.platformRole != 1) {
onLineNumber += 1;
}else {///
}else {
///
[self userEnterRoomSuccess];
///
[self.activityContainerView onRoomUpdate];

View File

@@ -66,7 +66,7 @@
NSLog(@"\nmethod:\n%@\nparameter:\n%@", method, params);
#endif
#ifdef DEBUG
NSString *url = API_HOST_URL;
NSString *url = [self getHostUrl];
NSString *urlPath = [NSString stringWithFormat:@"%@/%@", url ,method];
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[BSNetListenModel addHttpReq:urlPath header:manager.requestSerializer.HTTPRequestHeaders param:[params copy] time:[NSDate getCurrentTimeWithFormat:@"yyyy-MM-dd HH:mm:ss"]];
@@ -112,7 +112,7 @@
#ifdef DEBUG
NSLog(@"\nmethod:\n%@\nparameter:\n%@", method, params);
NSString *url = API_HOST_URL;
NSString *url = [self getHostUrl];
NSString *urlPath = [NSString stringWithFormat:@"%@/%@", url ,method];
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[BSNetListenModel addHttpReq:urlPath header:manager.requestSerializer.HTTPRequestHeaders param:[params copy] time:[NSDate getCurrentTimeWithFormat:@"yyyy-MM-dd HH:mm:ss"]];
@@ -155,7 +155,7 @@
AFHTTPSessionManager *manager = [HttpRequestHelper requestManager];
#ifdef DEBUG
NSLog(@"\nmethod:\n%@\nparameter:\n%@", method, params);
NSString *url = API_HOST_URL;
NSString *url = [self getHostUrl];
NSString *urlPath = [NSString stringWithFormat:@"%@/%@", url ,method];
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[BSNetListenModel addHttpReq:urlPath header:manager.requestSerializer.HTTPRequestHeaders param:[params copy] time:[NSDate getCurrentTimeWithFormat:@"yyyy-MM-dd HH:mm:ss"]];
@@ -323,7 +323,7 @@
[self configHeaders];
NSDictionary *baseParams = [self configBaseParmars:nil];
AFHTTPSessionManager *manager = [HttpRequestHelper requestManager];
NSString *url = API_HOST_URL;
NSString *url = [self getHostUrl];
NSString *urlPath = [NSString stringWithFormat:@"%@/%@", url ,path];
#ifdef DEBUG
NSLog(@"\nmethod:\n%@\nparameter:\n%@", path, params);
@@ -340,7 +340,8 @@
}];
urlPath = [NSString stringWithFormat:@"%@?%@", urlPath, requestUrl];
urlPath = [urlPath stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSMutableURLRequest *request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:urlPath parameters:baseParams error:nil];
request.timeoutInterval= [[[NSUserDefaults standardUserDefaults] valueForKey:@"timeoutInterval"] longValue];

View File

@@ -33,6 +33,9 @@ NS_ASSUME_NONNULL_BEGIN
+ (NSString *)getCalculateConstellationImageWithMonth:(long)time;
///得到年龄
+(NSString *)getAgeWithBirth:(long)birth;
///得到区号
+(NSString *)getCountryCode;
@end

View File

@@ -7,6 +7,7 @@
#import "NSString+Utils.h"
#import <CommonCrypto/CommonDigest.h>
#import "LoginAreaModel.h"
@implementation NSString (Utils)
@@ -23,12 +24,12 @@
unsigned char result[16];
CC_MD5(cstr, (CC_LONG)strlen(cstr), result);
return [NSString stringWithFormat:
@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
];
}
+ (BOOL)versionCompareOldStr:(NSString *)first andNewStr: (NSString *)second{
@@ -72,7 +73,7 @@
//
NSTimeInterval second = timeStamp.longLongValue / 1000;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:second];
//NSdate
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
@@ -119,7 +120,7 @@
// E. yyyy-mm-dd
return [yearFormatter stringFromDate:date];
}
return result;
}
@@ -128,14 +129,14 @@
NSString *astroString = YMLocalizedString(@"XPMineHeadView0");
NSString *astroFormat = @"102123444543";
NSString *result;
NSInteger month = [NSString getMonth:time];
NSInteger day = [NSString getDay:time];
if (month<1 || month>12 || day<1 || day>31){
return YMLocalizedString(@"XPMineHeadView1");
}
if(month==2 && day>29)
{
return YMLocalizedString(@"XPMineHeadView2");
@@ -144,25 +145,25 @@
return YMLocalizedString(@"XPMineHeadView3");
}
}
result=[NSString stringWithFormat:@"%@",[astroString substringWithRange:NSMakeRange(month*2-(day < [[astroFormat substringWithRange:NSMakeRange((month-1), 1)] intValue] - (-19))*2,2)]];
return [NSString stringWithFormat:YMLocalizedString(@"XPMineHeadView6"),result];
}
///
+ (NSString *)getCalculateConstellationImageWithMonth:(long)time{
NSString *astroString = YMLocalizedString(@"XPMineHeadView0");
NSString *astroFormat = @"102123444543";
NSString *result;
NSInteger month = [self getMonth:time];
NSInteger day = [self getDay:time];
if (month<1 || month>12 || day<1 || day>31){
return @"";
}
if(month==2 && day>29)
{
return @"";
@@ -171,7 +172,7 @@
return @"";
}
}
result=[NSString stringWithFormat:@"%@",[astroString substringWithRange:NSMakeRange(month*2-(day < [[astroFormat substringWithRange:NSMakeRange((month-1), 1)] intValue] - (-19))*2,2)]];
NSDictionary *starDic = @{YMLocalizedString(@"XPMineHeadView9"):@"pi_capricorn",YMLocalizedString(@"XPMineHeadView10"):@"pi_water_bottle",YMLocalizedString(@"XPMineHeadView11"):@"pi_pisces",YMLocalizedString(@"XPMineHeadView12"):@"pi_aries",YMLocalizedString(@"XPMineHeadView13"):@"pi_taurus",YMLocalizedString(@"XPMineHeadView14"):@"pi_gemini",YMLocalizedString(@"XPMineHeadView15"):@"pi_cancer",YMLocalizedString(@"XPMineHeadView16"):@"pi_lion",YMLocalizedString(@"XPMineHeadView17"):@"pi_virgin",YMLocalizedString(@"XPMineHeadView18"):@"pi_libra",YMLocalizedString(@"XPMineHeadView19"):@"pi_scorpion",YMLocalizedString(@"XPMineHeadView20"):@"pi_shooter"};
return starDic[result];
@@ -208,4 +209,25 @@
}
return @(iAge).stringValue;
}
///
+(NSString *)getCountryCode{
//
NSString *path = [[NSBundle mainBundle] pathForResource:@"pi_area_info" ofType:@"json"];
//
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
// JSON
NSDictionary *codeData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
NSArray *codeList = [LoginAreaModel modelsWithArray:codeData[@"RECORDS"]];
NSString *mccCode = [YYUtility getMobileCountryCode];
NSString *countryCode = @"";
if([mccCode isEqualToString:@"65535"])return @"+886";
for (LoginAreaModel *obj in codeList) {
if([mccCode isEqualToString:obj.mcc]){
countryCode = obj.code;
break;
}
}
if(countryCode.length == 0)return @"+886";
return [NSString stringWithFormat:@"+%@",countryCode];
}
@end

View File

@@ -28,16 +28,7 @@
return appVersion;
}
+(NSString *)getLanguage{
NSString *language = [NSLocale preferredLanguages].firstObject;
if ([language hasPrefix:@"zh"]) {
if ([language rangeOfString:@"Hans"].location != NSNotFound) {
language = @"zh-Hans"; //
} else {
language = @"zh-Hant"; //
}
} else {
language = @"zh-Hant"; //
}
NSString *language = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] firstObject];
return language;
}

964
YuMi/pi_area_info.json Normal file
View File

@@ -0,0 +1,964 @@
{
"RECORDS": [
{
"name": "Afghanistan",
"abbr": "AF",
"mcc": "412",
"code": "93"
},
{
"name": "Albania",
"abbr": "AL",
"mcc": "276",
"code": "355"
},
{
"name": "Algeria",
"abbr": "DZ",
"mcc": "603",
"code": "213"
},
{
"name": "American Samoa",
"abbr": "AS",
"mcc": "544",
"code": "1684"
},
{
"name": "Andorra",
"abbr": "AD",
"mcc": "213",
"code": "376"
},
{
"name": "Angola",
"abbr": "AO",
"mcc": "631",
"code": "244"
},
{
"name": "Anguilla",
"abbr": "AI",
"mcc": "365",
"code": "1264"
},
{
"name": "Antigua and Barbuda",
"abbr": "AG",
"mcc": "344",
"code": "1268"
},
{
"name": "Argentina",
"abbr": "AR",
"mcc": "722",
"code": "54"
},
{
"name": "Aruba",
"abbr": "AW",
"mcc": "363",
"code": "297"
},
{
"name": "Australia",
"abbr": "AU",
"mcc": "505",
"code": "61"
},
{
"name": "Austria",
"abbr": "AT",
"mcc": "232",
"code": "43"
},
{
"name": "Azerbaijan",
"abbr": "AZ",
"mcc": "400",
"code": "994"
},
{
"name": "Bahamas",
"abbr": "BS",
"mcc": "364",
"code": "1242"
},
{
"name": "Bahrain",
"abbr": "BH",
"mcc": "426",
"code": "973"
},
{
"name": "Bangladesh",
"abbr": "BD",
"mcc": "470",
"code": "880"
},
{
"name": "Barbados",
"abbr": "BB",
"mcc": "342",
"code": "1246"
},
{
"name": "Belarus",
"abbr": "BY",
"mcc": "257",
"code": "375"
},
{
"name": "Belgium",
"abbr": "BE",
"mcc": "206",
"code": "32"
},
{
"name": "Belize",
"abbr": "BZ",
"mcc": "702",
"code": "501"
},
{
"name": "Benin",
"abbr": "BJ",
"mcc": "616",
"code": "229"
},
{
"name": "Bermuda",
"abbr": "BM",
"mcc": "350",
"code": "1441"
},
{
"name": "Bolivia, Plurinational State of",
"abbr": "BO",
"mcc": "736",
"code": "591"
},
{
"name": "Botswana",
"abbr": "BW",
"mcc": "652",
"code": "267"
},
{
"name": "Brazil",
"abbr": "BR",
"mcc": "724",
"code": "55"
},
{
"name": "Brunei Darussalam",
"abbr": "BN",
"mcc": "528",
"code": "673"
},
{
"name": "Bulgaria",
"abbr": "BG",
"mcc": "284",
"code": "359"
},
{
"name": "Burkina Faso",
"abbr": "BF",
"mcc": "613",
"code": "226"
},
{
"name": "Burundi",
"abbr": "BI",
"mcc": "642",
"code": "257"
},
{
"name": "Cambodia",
"abbr": "KH",
"mcc": "456",
"code": "855"
},
{
"name": "Cameroon",
"abbr": "CM",
"mcc": "624",
"code": "237"
},
{
"name": "Canada",
"abbr": "CA",
"mcc": "302",
"code": "1"
},
{
"name": "Cape Verde",
"abbr": "CV",
"mcc": "625",
"code": "238"
},
{
"name": "Cayman Islands",
"abbr": "KY",
"mcc": "346",
"code": "1345"
},
{
"name": "Central African Republic",
"abbr": "CF",
"mcc": "623",
"code": "236"
},
{
"name": "Chad",
"abbr": "TD",
"mcc": "622",
"code": "235"
},
{
"name": "Chile",
"abbr": "CL",
"mcc": "730",
"code": "56"
},
{
"name": "China",
"abbr": "CN",
"mcc": "460",
"code": "86"
},
{
"name": "Colombia",
"abbr": "CO",
"mcc": "732",
"code": "57"
},
{
"name": "Congo",
"abbr": "CG",
"mcc": "629",
"code": "242"
},
{
"name": "Cook Islands",
"abbr": "CK",
"mcc": "548",
"code": "682"
},
{
"name": "Costa Rica",
"abbr": "CR",
"mcc": "712",
"code": "506"
},
{
"name": "Croatia",
"abbr": "HR",
"mcc": "219",
"code": "385"
},
{
"name": "Cuba",
"abbr": "CU",
"mcc": "368",
"code": "53"
},
{
"name": "Curaçao",
"abbr": "CW",
"mcc": "362",
"code": "599"
},
{
"name": "Cyprus",
"abbr": "CY",
"mcc": "280",
"code": "357"
},
{
"name": "Czech Republic",
"abbr": "CZ",
"mcc": "230",
"code": "420"
},
{
"name": "Denmark",
"abbr": "DK",
"mcc": "238",
"code": "45"
},
{
"name": "Djibouti",
"abbr": "DJ",
"mcc": "638",
"code": "253"
},
{
"name": "Dominica",
"abbr": "DM",
"mcc": "366",
"code": "1767"
},
{
"name": "Dominican Republic",
"abbr": "DO",
"mcc": "370",
"code": "1809"
},
{
"name": "Ecuador",
"abbr": "EC",
"mcc": "740",
"code": "593"
},
{
"name": "Egypt",
"abbr": "EG",
"mcc": "602",
"code": "20"
},
{
"name": "El Salvador",
"abbr": "SV",
"mcc": "706",
"code": "503"
},
{
"name": "Equatorial Guinea",
"abbr": "GQ",
"mcc": "627",
"code": "240"
},
{
"name": "Estonia",
"abbr": "EE",
"mcc": "248",
"code": "372"
},
{
"name": "Ethiopia",
"abbr": "ET",
"mcc": "636",
"code": "251"
},
{
"name": "Fiji",
"abbr": "FJ",
"mcc": "542",
"code": "679"
},
{
"name": "Finland",
"abbr": "FI",
"mcc": "244",
"code": "358"
},
{
"name": "France",
"abbr": "FR",
"mcc": "208",
"code": "33"
},
{
"name": "French Guiana",
"abbr": "GF",
"mcc": "742",
"code": "594"
},
{
"name": "French Polynesia",
"abbr": "PF",
"mcc": "547",
"code": "689"
},
{
"name": "Gabon",
"abbr": "GA",
"mcc": "628",
"code": "241"
},
{
"name": "Gambia",
"abbr": "GM",
"mcc": "607",
"code": "220"
},
{
"name": "Germany",
"abbr": "DE",
"mcc": "262",
"code": "49"
},
{
"name": "Ghana",
"abbr": "GH",
"mcc": "620",
"code": "233"
},
{
"name": "Gibraltar",
"abbr": "GI",
"mcc": "266",
"code": "350"
},
{
"name": "Greece",
"abbr": "GR",
"mcc": "202",
"code": "30"
},
{
"name": "Greenland",
"abbr": "GL",
"mcc": "290",
"code": "299"
},
{
"name": "Grenada",
"abbr": "GD",
"mcc": "352",
"code": "1473"
},
{
"name": "Guam",
"abbr": "GU",
"mcc": "535",
"code": "1671"
},
{
"name": "Guatemala",
"abbr": "GT",
"mcc": "704",
"code": "502"
},
{
"name": "Guinea",
"abbr": "GN",
"mcc": "611",
"code": "224"
},
{
"name": "Guyana",
"abbr": "GY",
"mcc": "738",
"code": "592"
},
{
"name": "Haiti",
"abbr": "HT",
"mcc": "372",
"code": "509"
},
{
"name": "Honduras",
"abbr": "HN",
"mcc": "708",
"code": "504"
},
{
"name": "Hong Kong",
"abbr": "HK",
"mcc": "454",
"code": "852"
},
{
"name": "Iceland",
"abbr": "IS",
"mcc": "274",
"code": "354"
},
{
"name": "India",
"abbr": "IN",
"mcc": "404",
"code": "91"
},
{
"name": "Indonesia",
"abbr": "ID",
"mcc": "510",
"code": "62"
},
{
"name": "Iran, Islamic Republic of",
"abbr": "IR",
"mcc": "432",
"code": "98"
},
{
"name": "Iraq",
"abbr": "IQ",
"mcc": "418",
"code": "964"
},
{
"name": "Ireland",
"abbr": "IE",
"mcc": "272",
"code": "353"
},
{
"name": "Israel",
"abbr": "IL",
"mcc": "425",
"code": "972"
},
{
"name": "Italy",
"abbr": "IT",
"mcc": "222",
"code": "39"
},
{
"name": "Jamaica",
"abbr": "JM",
"mcc": "338",
"code": "1876"
},
{
"name": "Japan",
"abbr": "JP",
"mcc": "440",
"code": "81"
},
{
"name": "Jordan",
"abbr": "JO",
"mcc": "416",
"code": "962"
},
{
"name": "Kazakhstan",
"abbr": "KZ",
"mcc": "401",
"code": "327"
},
{
"name": "Kenya",
"abbr": "KE",
"mcc": "639",
"code": "254"
},
{
"name": "Kiribati",
"abbr": "KI",
"mcc": "545",
"code": "686"
},
{
"name": "Korea, Republic of",
"abbr": "KR",
"mcc": "450",
"code": "82"
},
{
"name": "Kuwait",
"abbr": "KW",
"mcc": "419",
"code": "965"
},
{
"name": "Lao People's Democratic Republic",
"abbr": "LA",
"mcc": "457",
"code": "856"
},
{
"name": "Latvia",
"abbr": "LV",
"mcc": "247",
"code": "371"
},
{
"name": "Lebanon",
"abbr": "LB",
"mcc": "415",
"code": "961"
},
{
"name": "Lesotho",
"abbr": "LS",
"mcc": "651",
"code": "266"
},
{
"name": "Liberia",
"abbr": "LR",
"mcc": "618",
"code": "231"
},
{
"name": "Libya",
"abbr": "LY",
"mcc": "606",
"code": "218"
},
{
"name": "Lithuania",
"abbr": "LT",
"mcc": "246",
"code": "370"
},
{
"name": "Luxembourg",
"abbr": "LU",
"mcc": "270",
"code": "352"
},
{
"name": "Macao",
"abbr": "MO",
"mcc": "455",
"code": "853"
},
{
"name": "Madagascar",
"abbr": "MG",
"mcc": "646",
"code": "261"
},
{
"name": "Malawi",
"abbr": "MW",
"mcc": "650",
"code": "265"
},
{
"name": "Malaysia",
"abbr": "MY",
"mcc": "502",
"code": "60"
},
{
"name": "Maldives",
"abbr": "MV",
"mcc": "472",
"code": "960"
},
{
"name": "Mali",
"abbr": "ML",
"mcc": "610",
"code": "223"
},
{
"name": "Malta",
"abbr": "MT",
"mcc": "278",
"code": "356"
},
{
"name": "Mauritius",
"abbr": "MU",
"mcc": "617",
"code": "230"
},
{
"name": "Mexico",
"abbr": "MX",
"mcc": "334",
"code": "52"
},
{
"name": "Moldova, Republic of",
"abbr": "MD",
"mcc": "259",
"code": "373"
},
{
"name": "Monaco",
"abbr": "MC",
"mcc": "212",
"code": "377"
},
{
"name": "Mongolia",
"abbr": "MN",
"mcc": "428",
"code": "976"
},
{
"name": "Morocco",
"abbr": "MA",
"mcc": "604",
"code": "212"
},
{
"name": "Mozambique",
"abbr": "MZ",
"mcc": "643",
"code": "258"
},
{
"name": "Myanmar",
"abbr": "MM",
"mcc": "414",
"code": "95"
},
{
"name": "Namibia",
"abbr": "NA",
"mcc": "649",
"code": "264"
},
{
"name": "Nepal",
"abbr": "NP",
"mcc": "429",
"code": "977"
},
{
"name": "Netherlands",
"abbr": "NL",
"mcc": "204",
"code": "31"
},
{
"name": "New Zealand",
"abbr": "NZ",
"mcc": "530",
"code": "64"
},
{
"name": "Nicaragua",
"abbr": "NI",
"mcc": "710",
"code": "505"
},
{
"name": "Niger",
"abbr": "NE",
"mcc": "614",
"code": "227"
},
{
"name": "Nigeria",
"abbr": "NG",
"mcc": "621",
"code": "234"
},
{
"name": "Norway",
"abbr": "NO",
"mcc": "242",
"code": "47"
},
{
"name": "Oman",
"abbr": "OM",
"mcc": "422",
"code": "968"
},
{
"name": "Pakistan",
"abbr": "PK",
"mcc": "410",
"code": "92"
},
{
"name": "Panama",
"abbr": "PA",
"mcc": "714",
"code": "507"
},
{
"name": "Papua New Guinea",
"abbr": "PG",
"mcc": "537",
"code": "675"
},
{
"name": "Paraguay",
"abbr": "PY",
"mcc": "744",
"code": "595"
},
{
"name": "Peru",
"abbr": "PE",
"mcc": "716",
"code": "51"
},
{
"name": "Philippines",
"abbr": "PH",
"mcc": "515",
"code": "63"
},
{
"name": "Poland",
"abbr": "PL",
"mcc": "260",
"code": "48"
},
{
"name": "Portugal",
"abbr": "PT",
"mcc": "268",
"code": "351"
},
{
"name": "Puerto Rico",
"abbr": "PR",
"mcc": "330",
"code": "1787"
},
{
"name": "Qatar",
"abbr": "QA",
"mcc": "427",
"code": "974"
},
{
"name": "Romania",
"abbr": "RO",
"mcc": "226",
"code": "40"
},
{
"name": "Saint Lucia",
"abbr": "LC",
"mcc": "358",
"code": "1758"
},
{
"name": "San Marino",
"abbr": "SM",
"mcc": "292",
"code": "378"
},
{
"name": "Sao Tome and Principe",
"abbr": "ST",
"mcc": "626",
"code": "239"
},
{
"name": "Saudi Arabia",
"abbr": "SA",
"mcc": "420",
"code": "966"
},
{
"name": "Senegal",
"abbr": "SN",
"mcc": "608",
"code": "221"
},
{
"name": "Seychelles",
"abbr": "SC",
"mcc": "633",
"code": "248"
},
{
"name": "Sierra Leone",
"abbr": "SL",
"mcc": "619",
"code": "232"
},
{
"name": "Singapore",
"abbr": "SG",
"mcc": "525",
"code": "65"
},
{
"name": "Slovakia",
"abbr": "SK",
"mcc": "231",
"code": "421"
},
{
"name": "Slovenia",
"abbr": "SI",
"mcc": "293",
"code": "386"
},
{
"name": "Solomon Islands",
"abbr": "SB",
"mcc": "540",
"code": "677"
},
{
"name": "Somalia",
"abbr": "SO",
"mcc": "637",
"code": "252"
},
{
"name": "South Africa",
"abbr": "ZA",
"mcc": "655",
"code": "27"
},
{
"name": "Spain",
"abbr": "ES",
"mcc": "214",
"code": "34"
},
{
"name": "Sri Lanka",
"abbr": "LK",
"mcc": "413",
"code": "94"
},
{
"name": "Sudan",
"abbr": "SD",
"mcc": "634",
"code": "249"
},
{
"name": "Suriname",
"abbr": "SR",
"mcc": "746",
"code": "597"
},
{
"name": "Swaziland",
"abbr": "SZ",
"mcc": "653",
"code": "268"
},
{
"name": "Sweden",
"abbr": "SE",
"mcc": "240",
"code": "46"
},
{
"name": "Switzerland",
"abbr": "CH",
"mcc": "228",
"code": "41"
},
{
"name": "Syrian Arab Republic",
"abbr": "SY",
"mcc": "417",
"code": "963"
},
{
"name": "Taiwan",
"abbr": "TW",
"mcc": "466",
"code": "886"
},
{
"name": "Vanuatu",
"abbr": "VU",
"mcc": "541",
"code": "678"
},
{
"name": "Virgin Islands, British",
"abbr": "VG",
"mcc": "348",
"code": "1284"
}
]
}

View File

@@ -2282,7 +2282,7 @@
"XPRoomInsidekfjdskfjks" = "努力寻找合适房间中~";
"XPChooseRreaCodeVC0"="选择区";
"XPChooseRreaCodeVC0"="选择国家或地区";
"PKIDLoginViewController11" = "短信发送成功";
"LoginVerifCodeViewController3" = "验证码";

View File

@@ -2280,7 +2280,7 @@
"XPRoomInsidekfjdskfjks" = "努力尋找合適房間中~";
"XPChooseRreaCodeVC0"="選擇區";
"XPChooseRreaCodeVC0"="選擇國家或地區";
"PKIDLoginViewController11" = "短信發送成功";
"LoginVerifCodeViewController3" = "驗證碼";