Browse Source

设备号的反显

Steven 2 years ago
parent
commit
87bb95575c

+ 6 - 0
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -446,6 +446,7 @@
 		BC494A7C286958EC00CCD343 /* MusicRoomCourseInfoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC494A7A286958EC00CCD343 /* MusicRoomCourseInfoCell.m */; };
 		BC494A7D286958EC00CCD343 /* MusicRoomCourseInfoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC494A7B286958EC00CCD343 /* MusicRoomCourseInfoCell.xib */; };
 		BC494A8028696BC300CCD343 /* MusicRoomListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BC494A7F28696BC300CCD343 /* MusicRoomListModel.m */; };
+		BC4CC417288FD689004AD8EC /* LaunchAnimationView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC4CC416288FD689004AD8EC /* LaunchAnimationView.m */; };
 		BC50171227FC0D5600F8BCBC /* SubjectChooseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC50171127FC0D5600F8BCBC /* SubjectChooseViewController.m */; };
 		BC50171527FC0D8300F8BCBC /* SubjectChooseBodyView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC50171427FC0D8300F8BCBC /* SubjectChooseBodyView.m */; };
 		BC50171727FC0D8E00F8BCBC /* SubjectChooseBodyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC50171627FC0D8D00F8BCBC /* SubjectChooseBodyView.xib */; };
@@ -1640,6 +1641,8 @@
 		BC494A7B286958EC00CCD343 /* MusicRoomCourseInfoCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MusicRoomCourseInfoCell.xib; sourceTree = "<group>"; };
 		BC494A7E28696BC300CCD343 /* MusicRoomListModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MusicRoomListModel.h; sourceTree = "<group>"; };
 		BC494A7F28696BC300CCD343 /* MusicRoomListModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MusicRoomListModel.m; sourceTree = "<group>"; };
+		BC4CC415288FD689004AD8EC /* LaunchAnimationView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LaunchAnimationView.h; sourceTree = "<group>"; };
+		BC4CC416288FD689004AD8EC /* LaunchAnimationView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LaunchAnimationView.m; sourceTree = "<group>"; };
 		BC50171027FC0D5600F8BCBC /* SubjectChooseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SubjectChooseViewController.h; sourceTree = "<group>"; };
 		BC50171127FC0D5600F8BCBC /* SubjectChooseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SubjectChooseViewController.m; sourceTree = "<group>"; };
 		BC50171327FC0D8300F8BCBC /* SubjectChooseBodyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SubjectChooseBodyView.h; sourceTree = "<group>"; };
@@ -4337,6 +4340,8 @@
 			children = (
 				BC71D1382887CEB70010F14B /* LaunchAnimationViewController.h */,
 				BC71D1392887CEB70010F14B /* LaunchAnimationViewController.m */,
+				BC4CC415288FD689004AD8EC /* LaunchAnimationView.h */,
+				BC4CC416288FD689004AD8EC /* LaunchAnimationView.m */,
 			);
 			path = Controller;
 			sourceTree = "<group>";
@@ -6349,6 +6354,7 @@
 				277935C427E324A90010E277 /* SDCycleScrollView.m in Sources */,
 				BC119293280FBC1100A716F7 /* HomeworkAddView.m in Sources */,
 				2723B61C27F157D500E0B90B /* KSRCSearchBar.m in Sources */,
+				BC4CC417288FD689004AD8EC /* LaunchAnimationView.m in Sources */,
 				277935C627E324A90010E277 /* SDQWMaskCustomModel.m in Sources */,
 				BCB6353C27F6D2A300ACFDCF /* MessageHelper.m in Sources */,
 				BC8C2C582823F57100FBA5D5 /* AddressListViewController.m in Sources */,

BIN
KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/UserInterfaceState.xcuserstate


+ 8 - 56
KulexiuForStudent/KulexiuForStudent.xcworkspace/xcuserdata/wangzhi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -199,38 +199,6 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "5293C50D-0D1D-4869-B552-57D13EC29014"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForStudent/AppDelegate.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "562"
-            endingLineNumber = "562"
-            landmarkName = "-jpushNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "B53B10A4-461E-45F1-9CEA-AB9E05C5B961"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForStudent/AppDelegate.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "556"
-            endingLineNumber = "556"
-            landmarkName = "-jpushNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
             uuid = "5D69CE6C-4541-4092-97F1-67FB08D6431B"
             shouldBeEnabled = "No"
             ignoreCount = "0"
@@ -247,22 +215,6 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "3BAFB131-CACD-42DC-87F3-C994446BB9F0"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KulexiuForStudent/Module/Home/NoticeCenter/Controller/NotiferMessageViewController.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "158"
-            endingLineNumber = "158"
-            landmarkName = "-requestData"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
             uuid = "6549BB2C-1705-4AAC-AB78-1389058721C3"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
@@ -318,8 +270,8 @@
             filePath = "KulexiuForStudent/AppDelegate.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "199"
-            endingLineNumber = "199"
+            startingLineNumber = "212"
+            endingLineNumber = "212"
             landmarkName = "-configUM"
             landmarkType = "7">
          </BreakpointContent>
@@ -391,16 +343,16 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "24BEAC58-E5E6-4CF3-8642-0AD0E9023C1E"
-            shouldBeEnabled = "Yes"
+            uuid = "613263EB-88F2-40D4-80E9-31D3966665AC"
+            shouldBeEnabled = "No"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "KulexiuForStudent/Module/Home/Controller/HomeViewController.m"
+            filePath = "KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "616"
-            endingLineNumber = "616"
-            landmarkName = "-requestTeacherStyle"
+            startingLineNumber = "240"
+            endingLineNumber = "240"
+            landmarkName = "-setUserAgent"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>

+ 36 - 6
KulexiuForStudent/KulexiuForStudent/AppDelegate.m

@@ -36,6 +36,7 @@
 #import "MyCourseViewController.h"
 #import "NotiferMessageViewController.h"
 #import "LaunchAnimationViewController.h"
+
 @interface RCNaviDataInfo : NSObject
 
 @property (nonatomic, assign) NSTimeInterval uploadVideoDurationLimit;
@@ -62,6 +63,11 @@
 
 @property (nonatomic, assign) BOOL hasCheckTrackAuth;
 
+/// 推送的数据
+@property (nonatomic, strong) NSMutableDictionary *notiferParm;
+
+@property (nonatomic, strong) NSURL *outlinkUrl;
+
 @end
 
 @implementation AppDelegate
@@ -167,13 +173,20 @@
             [USER_MANAGER queryUserInfoConnectRongCloud:YES];
             [self initTableBar];
             self.window.rootViewController=_tabBarController;
+            if (self.notiferParm) {
+                [self getVCUserInfoDict:self.notiferParm];
+            }
+            else if (self.outlinkUrl) {
+                [self handleOutLink:self.outlinkUrl];
+            }
         }
     }
 }
 
 
 - (void)registerSDK {
-    [WXApi registerApp:@"wx97408cd22c879ff7" universalLink:@"https://dev.colexiu.com/studentApp/"];
+    NSString *universalLinkUrl = [NSString stringWithFormat:@"%@%@",hostURL,@"/studentApp/"];
+    [WXApi registerApp:@"wx97408cd22c879ff7" universalLink:universalLinkUrl];
 }
 
 - (void)appTrackActionAuth {
@@ -206,7 +219,7 @@
     /* 设置sina */
     [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"3712190405"  appSecret:@"e77924e0125dbd751bab61063d8338fb" redirectURL:nil];
     // 自定义分享类型
-//    [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_UserDefine_Begin+1 withPlatformIcon:[UIImage imageNamed:@"share_group"] withPlatformName:@"群聊"];
+    [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_UserDefine_Begin+1 withPlatformIcon:[UIImage imageNamed:@"share_group"] withPlatformName:@"群聊"];
 //    [UMSocialUIManager addCustomPlatformWithoutFilted:UMSocialPlatformType_UserDefine_Begin+2 withPlatformIcon:[UIImage imageNamed:@"share_savePic"] withPlatformName:@"保存图片"];
 }
 
@@ -562,9 +575,15 @@ didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
         // Fallback on earlier versions
     }
     completionHandler();  // 系统要求执行这个方法
-    NSMutableDictionary *parm = [NSMutableDictionary dictionaryWithDictionary:userInfo];
+    NSMutableDictionary *infoDict = [NSMutableDictionary dictionaryWithDictionary:userInfo];
+    UIViewController *vc = self.window.rootViewController;
     
-    [self getVCUserInfoDict:parm];
+    if ([vc isKindOfClass:[LaunchAnimationViewController class]]) {
+        self.notiferParm = [NSMutableDictionary dictionaryWithDictionary:infoDict];
+    }
+    else {
+        [self getVCUserInfoDict:infoDict];
+    }
 }
 
 #pragma mark 根据不同消息跳转不同界面
@@ -808,8 +827,7 @@ didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
     }
 }
 
-#pragma mark ---- 处理外链
-- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
+- (BOOL)handleOutLink:(NSURL *)url {
     NSString *detailUrl = [url absoluteString];
     if ([detailUrl containsString:@"linkUrl="]) {
         NSString *linkUrl = [[detailUrl componentsSeparatedByString:@"linkUrl="] lastObject];
@@ -865,6 +883,18 @@ didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
     return YES;
 }
 
+#pragma mark ---- 处理外链
+- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
+    UIViewController *vc = self.window.rootViewController;
+    if ([vc isKindOfClass:[LaunchAnimationViewController class]]) {
+        self.outlinkUrl = url;
+        return YES;
+    }
+    else {
+        return [self handleOutLink:url];
+    }
+}
+
 - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
     NSString* webpageStr =  userActivity.webpageURL.absoluteString;
         if ([webpageStr containsString:@"wx97408cd22c879ff7"] && [webpageStr containsString:@"pay"]) {

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m

@@ -236,7 +236,7 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
     MJWeakSelf;
     [self.myWebView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id result, NSError *error) {
         NSString *oldUserAgent = result;
-        NSString *newUserAgent = [NSString stringWithFormat:@"%@ %@",oldUserAgent,@"COLEXIUAPPI"];
+        NSString *newUserAgent = [NSString stringWithFormat:@"%@ %@ %@",oldUserAgent,@"COLEXIUAPPI",@"COLEXIUSTUDENT"];
         weakSelf.myWebView.customUserAgent = newUserAgent;
         [weakSelf loadRequest];;
     }];

+ 1 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSNetworkingManager.m

@@ -1273,6 +1273,7 @@
     NSMutableDictionary *parm = [NSMutableDictionary dictionary];
     [parm setValue:version forKey:@"version"];
     [parm setValue:@"ios-student" forKey:@"platform"];
+    [parm setValue:@"STUDENT" forKey:@"clientType"];
     [self request:post andWithUrl:url and:parm success:success faliure:faliure];
 }
 

+ 23 - 0
KulexiuForStudent/KulexiuForStudent/Module/AnimationLaunch/Controller/LaunchAnimationView.h

@@ -0,0 +1,23 @@
+//
+//  LaunchAnimationView.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/7/26.
+//
+
+#import <UIKit/UIKit.h>
+
+
+typedef void(^LaunchFinishCallback)(void);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface LaunchAnimationView : UIView
+
+- (void)configUI;
+// 结束的回调
+- (void)launchAnimationFinish:(LaunchFinishCallback)callback;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 78 - 0
KulexiuForStudent/KulexiuForStudent/Module/AnimationLaunch/Controller/LaunchAnimationView.m

@@ -0,0 +1,78 @@
+//
+//  LaunchAnimationView.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/7/26.
+//
+
+#import "LaunchAnimationView.h"
+#import <Lottie/Lottie.h>
+
+@interface LaunchAnimationView ()
+
+@property (nonatomic, strong) LOTAnimationView *loadingView;
+
+@property (nonatomic, strong) NSString *jsonString;
+
+@property (nonatomic, copy) LaunchFinishCallback callback;
+
+@end
+
+@implementation LaunchAnimationView
+- (void)launchAnimationFinish:(LaunchFinishCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+- (instancetype)init {
+    self = [super init];
+    if (self) {
+    }
+    return self;
+}
+
+- (void)configUI {
+    self.backgroundColor = [UIColor whiteColor];
+    
+    [self setJsonName:@"launchAni.json"];
+}
+
+- (void)setJsonName:(NSString *)jsonName {
+    self.jsonString = jsonName;
+    [self addSubview:self.loadingView];
+    MJWeakSelf;
+    [self.loadingView playWithCompletion:^(BOOL animationFinished) {
+        [weakSelf successBack];
+    }];
+}
+
+- (void)successBack {
+    if (self.callback) {
+        self.callback();
+    }
+}
+
+- (LOTAnimationView *)loadingView {
+    if(_loadingView == nil) {
+        //1.加载本地json
+        _loadingView = [LOTAnimationView animationNamed:self.jsonString];
+        //2.加载后台给的json(url)
+        _loadingView.frame = CGRectMake(0, 0, KPortraitWidth, KPortraitHeight);
+        _loadingView.loopAnimation = YES;
+        _loadingView.contentMode = UIViewContentModeScaleAspectFill;
+        _loadingView.animationSpeed = 1.0;
+        _loadingView.loopAnimation = NO;
+    }
+    return _loadingView;
+}
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 18 - 4
KulexiuForStudent/KulexiuForStudent/Module/Chat/Controller/KSChatConversationViewController.m

@@ -26,6 +26,8 @@
 #import "KSEnterLiveroomManager.h"
 #import "KSAccompanyWebViewController.h"
 
+#import "KSPublicAlertView.h"
+
 @interface RCNaviDataInfo : NSObject
 
 @property (nonatomic, assign) NSTimeInterval uploadVideoDurationLimit;
@@ -61,6 +63,8 @@
 
 @property (nonatomic, assign) BOOL isFirstLoad;
 
+@property (nonatomic, strong) KSPublicAlertView *alertView;
+
 @end
 
 @implementation KSChatConversationViewController
@@ -354,17 +358,27 @@
                 [[RCIM sharedRCIM] refreshGroupInfoCache:groupInfo withGroupId:self.targetId];
                 [self refreshTitle];
             }
-            else {
-                
+            else if ([dic integerValueForKey:@"code"] == 204) {
+                // 弹窗提示是否删除群组
+                MJWeakSelf;
+                self.alertView = [KSPublicAlertView shareInstanceWithTitle:@"提示" descMessage:@"当前群组已被解散,是否删除聊天记录?" leftTitle:@"取消" rightTitle:@"确定" cancelAction:^{
+                    
+                } sureAction:^{
+                    [weakSelf removeNoExistGroup];
+                }];
             }
         } faliure:^(NSError * _Nonnull error) {
             
         }];
-        
     }
-    
 }
 
+- (void)removeNoExistGroup {
+    [[RCIMClient sharedRCIMClient] removeConversation:ConversationType_GROUP targetId:self.targetId];
+    [self.navigationController popToRootViewControllerAnimated:YES];
+}
+
+
 - (void)refreshTitle {
     if (self.conversationType == ConversationType_GROUP) {
         RCGroup *group = [[RCIM sharedRCIM] getGroupInfoCache:self.targetId];

+ 8 - 6
KulexiuForStudent/KulexiuForStudent/Module/Chat/Group/Controller/GroupSettingViewController.m

@@ -15,7 +15,8 @@
 #import "GroupMemberViewController.h"
 #import "GroupNoticeViewController.h"
 #import "GroupApplyViewController.h"
-#import "KSNormalAlertView.h"
+#import "KSPublicAlertView.h"
+
 
 @interface GroupSettingViewController ()
 
@@ -27,6 +28,8 @@
 
 @property (nonatomic, assign) NSInteger applyCount;
 
+@property (nonatomic, strong) KSPublicAlertView *alertView;
+
 @end
 
 @implementation GroupSettingViewController
@@ -190,10 +193,9 @@
             [self.navigationController pushViewController:ctrl animated:YES];
         }
             break;
-        case GROUPSETTING_DISMISS: // 退出群聊 暂不退出 发消息
+        case GROUPSETTING_DISMISS: // 退出群聊
         {
-            [self backAction];
-//            [self dismissGroup];
+            [self dismissGroup];
         }
             break;
         default:
@@ -203,9 +205,9 @@
 
 - (void)dismissGroup {
     MJWeakSelf;
-    [KSNormalAlertView ks_showAlertWithTitle:@"确认退出群组吗?" leftTitle:@"取消" rightTitle:@"确定" cancel:^{
+    self.alertView = [KSPublicAlertView shareInstanceWithTitle:@"提示" descMessage:@"确认退出群聊吗" leftTitle:@"取消" rightTitle:@"确定" cancelAction:^{
         
-    } confirm:^{
+    } sureAction:^{
         [weakSelf quitGroup];
     }];
 }

+ 1 - 1
KulexiuForStudent/KulexiuForStudent/Module/Chat/Group/View/GroupSettingBodyView.xib

@@ -316,7 +316,7 @@
                     <constraints>
                         <constraint firstAttribute="height" constant="44" id="zlf-6G-YkC"/>
                     </constraints>
-                    <state key="normal" title="发消息"/>
+                    <state key="normal" title="退出群聊"/>
                     <userDefinedRuntimeAttributes>
                         <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
                             <real key="value" value="22"/>

+ 20 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/View/LoginBodyView.m

@@ -6,6 +6,7 @@
 //
 
 #import "LoginBodyView.h"
+#import "KeyChainTools.h"
 
 @interface LoginBodyView ()<UITextFieldDelegate>
 
@@ -20,6 +21,10 @@
 
 @property (nonatomic, copy) LoginAction callback;
 
+@property (weak, nonatomic) IBOutlet UILabel *deviceLabel;
+
+@property (nonatomic, assign) NSInteger clickCount;
+
 @end
 
 @implementation LoginBodyView
@@ -111,6 +116,21 @@
     }
     return YES;
 }
+
+- (IBAction)tapAction:(id)sender {
+    _clickCount++;
+    if (_clickCount == 5) {
+        self.deviceLabel.text = [NSString stringWithFormat:@"本机设备号:%@",[KeyChainTools getUUID]];
+        self.deviceLabel.hidden = NO;
+    }
+}
+
+- (IBAction)copyAction:(id)sender {
+    // 复制
+    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
+    pasteboard.string = [KeyChainTools getUUID];
+    [self MBPShow:@"复制成功"];
+}
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 32 - 1
KulexiuForStudent/KulexiuForStudent/Module/Login/View/LoginBodyView.xib

@@ -28,11 +28,15 @@
                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                     <nil key="highlightedColor"/>
                 </label>
-                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_bottom" translatesAutoresizingMaskIntoConstraints="NO" id="0q4-1w-tla">
+                <imageView clipsSubviews="YES" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_bottom" translatesAutoresizingMaskIntoConstraints="NO" id="0q4-1w-tla">
                     <rect key="frame" x="0.0" y="752.5" width="414" height="143.5"/>
+                    <gestureRecognizers/>
                     <constraints>
                         <constraint firstAttribute="width" secondItem="0q4-1w-tla" secondAttribute="height" multiplier="375:130" id="KFQ-N6-rV7"/>
                     </constraints>
+                    <connections>
+                        <outletCollection property="gestureRecognizers" destination="Md8-qH-XKq" appends="YES" id="qU9-vl-AjX"/>
+                    </connections>
                 </imageView>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="您好," textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WqI-Rf-kUe">
                     <rect key="frame" x="25" y="100" width="80" height="37"/>
@@ -164,15 +168,30 @@
                         <action selector="privacyAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="2PD-CJ-1dt"/>
                     </connections>
                 </button>
+                <label opaque="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="o7S-X6-4Wt">
+                    <rect key="frame" x="12" y="722.5" width="390" height="20"/>
+                    <gestureRecognizers/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="20" id="O7f-T1-6Sq"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                    <color key="textColor" red="0.1019607843" green="0.1019607843" blue="0.1019607843" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                    <connections>
+                        <outletCollection property="gestureRecognizers" destination="v87-Il-G9X" appends="YES" id="x4e-b5-xOh"/>
+                    </connections>
+                </label>
             </subviews>
             <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
                 <constraint firstItem="vXW-ev-ENf" firstAttribute="top" secondItem="FGc-X7-gKF" secondAttribute="bottom" constant="20" id="3hl-Va-qKC"/>
                 <constraint firstAttribute="trailing" secondItem="3Vc-PU-5ec" secondAttribute="trailing" constant="34" id="5qw-B8-PuM"/>
+                <constraint firstItem="0q4-1w-tla" firstAttribute="top" secondItem="o7S-X6-4Wt" secondAttribute="bottom" constant="10" id="5sN-Ky-dcK"/>
                 <constraint firstItem="ko7-Ny-Rff" firstAttribute="centerY" secondItem="Enc-9D-ZIb" secondAttribute="centerY" id="6Ob-us-ECK"/>
                 <constraint firstItem="FGc-X7-gKF" firstAttribute="top" secondItem="3Vc-PU-5ec" secondAttribute="bottom" constant="20" id="7Hx-0J-7RR"/>
                 <constraint firstItem="FGc-X7-gKF" firstAttribute="leading" secondItem="3Vc-PU-5ec" secondAttribute="leading" id="92F-v1-QX7"/>
                 <constraint firstItem="WqI-Rf-kUe" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="25" id="9GS-oA-unV"/>
+                <constraint firstAttribute="trailing" secondItem="o7S-X6-4Wt" secondAttribute="trailing" constant="12" id="CvZ-qe-Kqz"/>
                 <constraint firstAttribute="trailing" secondItem="A5r-6M-UYx" secondAttribute="trailing" id="D7M-2f-1sc"/>
                 <constraint firstItem="enh-Ce-PS7" firstAttribute="leading" secondItem="vXW-ev-ENf" secondAttribute="trailing" id="HwD-2q-1qI"/>
                 <constraint firstItem="FGc-X7-gKF" firstAttribute="trailing" secondItem="3Vc-PU-5ec" secondAttribute="trailing" id="JBf-Su-sHW"/>
@@ -183,6 +202,7 @@
                 <constraint firstItem="3Vc-PU-5ec" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="34" id="Sf6-0A-GFM"/>
                 <constraint firstItem="Enc-9D-ZIb" firstAttribute="leading" secondItem="enh-Ce-PS7" secondAttribute="trailing" constant="1" id="TTJ-Qs-3IS"/>
                 <constraint firstItem="ylm-Ib-zPa" firstAttribute="leading" secondItem="enh-Ce-PS7" secondAttribute="leading" multiplier="2" id="X3a-au-JmM"/>
+                <constraint firstItem="o7S-X6-4Wt" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="12" id="aIi-H1-idE"/>
                 <constraint firstAttribute="bottom" secondItem="0q4-1w-tla" secondAttribute="bottom" id="an5-yy-Ltq"/>
                 <constraint firstItem="ylm-Ib-zPa" firstAttribute="centerY" secondItem="enh-Ce-PS7" secondAttribute="centerY" id="eZv-hd-Mxi"/>
                 <constraint firstItem="A5r-6M-UYx" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="epe-Tm-dNT"/>
@@ -206,6 +226,7 @@
             <nil key="simulatedBottomBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <connections>
+                <outlet property="deviceLabel" destination="o7S-X6-4Wt" id="Cvp-cy-3wQ"/>
                 <outlet property="phoneField" destination="LuK-f4-NAr" id="uaX-Cs-m5V"/>
                 <outlet property="privacyLabel" destination="Enc-9D-ZIb" id="32W-zA-OtE"/>
                 <outlet property="registerProtocalLabel" destination="enh-Ce-PS7" id="dMA-8Y-Kxm"/>
@@ -213,6 +234,16 @@
             </connections>
             <point key="canvasLocation" x="131.8840579710145" y="95.758928571428569"/>
         </view>
+        <tapGestureRecognizer id="Md8-qH-XKq">
+            <connections>
+                <action selector="tapAction:" destination="iN0-l3-epB" id="lJ2-6s-skg"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="v87-Il-G9X">
+            <connections>
+                <action selector="copyAction:" destination="iN0-l3-epB" id="8JB-i5-oOo"/>
+            </connections>
+        </tapGestureRecognizer>
     </objects>
     <resources>
         <image name="login_bottom" width="375" height="130"/>