Просмотр исходного кода

1.更新keychain方案修复oaid会变化的问题

huangxiaodong 1 неделя назад
Родитель
Сommit
b356975042

+ 22 - 1
创维盒子/code/AppDelegate/Config/iPhone.m

@@ -15,6 +15,8 @@
 #import <CoreTelephony/CTCarrier.h>
 #import <CoreTelephony/CTTelephonyNetworkInfo.h>
 
+#import "KeychainHelper.h"
+
 @implementation iPhone
 
 static iPhone *shareInstance = nil;
@@ -57,9 +59,28 @@ static iPhone *shareInstance = nil;
     return address;
 }
 
+static NSString *MyKeyChainUUIDStr = nil;
 + (NSString*)phoneDeviceUuid
 {
-    return [[[UIDevice currentDevice] identifierForVendor] UUIDString];
+    if (MyKeyChainUUIDStr) {
+        return MyKeyChainUUIDStr;
+    }
+    
+    NSString *MyKeyChainUUID = [KeychainHelper getStringForKey:@"MyKeyChainUUID"];
+    if(MyKeyChainUUID){
+        MyKeyChainUUIDStr = MyKeyChainUUID;
+        return MyKeyChainUUID;
+    }
+    
+    NSString *UUIDString = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
+    
+    BOOL isSuc = [KeychainHelper saveString:UUIDString forKey:@"MyKeyChainUUID"];
+    
+    if (isSuc) {
+        HLog(@"保存UUID成功")
+    }
+    
+    return UUIDString;
 }
 
 + (NSString*)phoneDeviceType

+ 19 - 0
创维盒子/code/Helpers/keyChain/KeychainHelper.h

@@ -0,0 +1,19 @@
+//
+//  KeychainHelper.h
+//  VclustersGemini
+//
+//  Created by xd h on 2025/9/22.
+//  Copyright © 2025 APPLE. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KeychainHelper : NSObject
++ (BOOL)saveString:(NSString *)string forKey:(NSString *)key;
++ (NSString *)getStringForKey:(NSString *)key;
++ (BOOL)deleteStringForKey:(NSString *)key;
+@end
+
+NS_ASSUME_NONNULL_END

+ 62 - 0
创维盒子/code/Helpers/keyChain/KeychainHelper.m

@@ -0,0 +1,62 @@
+//
+//  KeychainHelper.m
+//  VclustersGemini
+//
+//  Created by xd h on 2025/9/22.
+//  Copyright © 2025 APPLE. All rights reserved.
+//
+
+#import "KeychainHelper.h"
+#import <Security/Security.h>
+
+@implementation KeychainHelper
++ (NSMutableDictionary *)getKeychainQuery:(NSString *)key {
+    return [NSMutableDictionary dictionaryWithObjectsAndKeys:
+            (id)kSecClassGenericPassword, (id)kSecClass,
+            key, (id)kSecAttrService,
+            key, (id)kSecAttrAccount,
+            (id)kSecAttrAccessibleAfterFirstUnlock, (id)kSecAttrAccessible,
+            nil];
+}
+
++ (BOOL)saveString:(NSString *)string forKey:(NSString *)key {
+    // 先删除已存在的项目
+    [self deleteStringForKey:key];
+    
+    NSMutableDictionary *keychainQuery = [self getKeychainQuery:key];
+    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
+    [keychainQuery setObject:data forKey:(id)kSecValueData];
+    
+    OSStatus status = SecItemAdd((CFDictionaryRef)keychainQuery, NULL);
+    return status == errSecSuccess;
+}
+
++ (NSString *)getStringForKey:(NSString *)key {
+    NSString *ret = nil;
+    NSMutableDictionary *keychainQuery = [self getKeychainQuery:key];
+    [keychainQuery setObject:(id)kCFBooleanTrue forKey:(id)kSecReturnData];
+    [keychainQuery setObject:(id)kSecMatchLimitOne forKey:(id)kSecMatchLimit];
+    
+    CFDataRef keyData = NULL;
+    if (SecItemCopyMatching((CFDictionaryRef)keychainQuery, (CFTypeRef *)&keyData) == errSecSuccess) {
+        @try {
+            ret = [[NSString alloc] initWithData:(__bridge NSData *)keyData encoding:NSUTF8StringEncoding];
+        }
+        @catch (NSException *e) {
+            NSLog(@"Unarchive of %@ failed: %@", key, e);
+        }
+        @finally {}
+    }
+    
+    if (keyData) CFRelease(keyData);
+    return ret;
+}
+
++ (BOOL)deleteStringForKey:(NSString *)key {
+    NSMutableDictionary *keychainQuery = [self getKeychainQuery:key];
+    OSStatus status = SecItemDelete((CFDictionaryRef)keychainQuery);
+    return status == errSecSuccess;
+}
+
+
+@end

+ 1 - 0
创维盒子/code/cloudPhone/websocket/webSocketManager.h

@@ -27,6 +27,7 @@
 #import "DFPlayer.h"
 #import "audioPlayingView.h"
 #import "nasDownloadFileManager.h"
+#import "iPhone.h"
 
 NS_ASSUME_NONNULL_BEGIN
 

+ 7 - 3
创维盒子/code/cloudPhone/websocket/webSocketManager.m

@@ -13,7 +13,7 @@
 #import "webSocketManager+upLoadFile.h"
 #import "webSocketManager+backupsFile.h"
 #import "errorAlertTool.h"
-#import "RcGameWQKeyChain.h"
+//#import "RcGameWQKeyChain.h"
 #import "USBInsertPopView.h"
 #import "nasMixUploadManager.h"
 
@@ -535,7 +535,9 @@ static webSocketManager *webSocketManagerInstance = nil;
     {
         [self getSysInfoFun];
         
-        NSString *curOaidStr = [RcGameWQKeyChain getOaidStringFun];
+        //NSString *curOaidStr = [RcGameWQKeyChain getOaidStringFun];
+        NSString *curOaidStr = [iPhone phoneDeviceUuid];
+
         if(!curOaidStr){
             curOaidStr = @"";
         }
@@ -976,7 +978,9 @@ static webSocketManager *webSocketManagerInstance = nil;
 #pragma mark 告诉别的ws收到的挤下线消息
 - (void)didReceiveLogoutMsgFun
 {
-    NSString *curOaidStr = [RcGameWQKeyChain getOaidStringFun];
+    //NSString *curOaidStr = [RcGameWQKeyChain getOaidStringFun];
+    NSString *curOaidStr = [iPhone phoneDeviceUuid];
+
     if(!curOaidStr){
         curOaidStr = @"";
     }

+ 4 - 2
创维盒子/code/netWork/netWorkManager.m

@@ -8,7 +8,7 @@
 #import "netWorkManager.h"
 #import "AFNetworkReachabilityManager.h"
 #import "AFHTTPSessionManager.h"
-#import "RcGameWQKeyChain.h"
+//#import "RcGameWQKeyChain.h"
 #import "iPhone.h"
 
 @interface netWorkManager ()
@@ -118,7 +118,9 @@ static netWorkManager *Game_NetWorkShareInstance = nil;
 //        [manager.requestSerializer setValue:curSN forHTTPHeaderField:@"SN"];
 //    }
     
-    NSString *curOaidStr = [RcGameWQKeyChain getOaidStringFun];
+    //NSString *curOaidStr = [RcGameWQKeyChain getOaidStringFun];
+    NSString *curOaidStr = [iPhone phoneDeviceUuid];
+
     if(curOaidStr){
         [manager.requestSerializer setValue:curOaidStr forHTTPHeaderField:@"OAID"];
     }

+ 1 - 1
创维盒子/code/webRtc/webRtcManager/webRtcManager.m

@@ -7,7 +7,7 @@
 
 #import "webRtcManager.h"
 #import "webRtcManager+StatisticsReport.h"
-#import "RcGameWQKeyChain.h"
+//#import "RcGameWQKeyChain.h"
 #import "errorAlertTool.h"
 #import "webRtcManager+downloadNasFile.h"
 #import "nasMixUploadManager.h"

+ 2 - 1
创维盒子/code/webRtc/webRtcPlayerViewController.h

@@ -11,10 +11,11 @@
 #import "UIView+HWCategory.h"
 #import "webRtcMsgModel.h"
 #import "webRtcPlayerBottomContrView.h"
-#import "RcGameWQKeyChain.h"
+//#import "RcGameWQKeyChain.h"
 #import "ComontAlretViewController.h"
 #import "UIInterface+HXRotation.h"
 #import "errorAlertTool.h"
+#import "iPhone.h"
 
 NS_ASSUME_NONNULL_BEGIN
 

+ 5 - 2
创维盒子/code/webRtc/webRtcPlayerViewController.m

@@ -774,7 +774,8 @@
 #pragma mark 挤下线功能
 -(void)offlineOtherPhoneFun
 {
-    NSString *curOaidStr = [RcGameWQKeyChain getOaidStringFun];
+    //NSString *curOaidStr = [RcGameWQKeyChain getOaidStringFun];
+    NSString *curOaidStr = [iPhone phoneDeviceUuid];
     if(!curOaidStr){
         curOaidStr = @"";
     }
@@ -791,7 +792,9 @@
     }
     [cachesFileManager writeLogsWithMsg:@"webRtcPlayer LogoutByOtherFun"];
     
-    NSString *curOaidStr = [RcGameWQKeyChain getOaidStringFun];
+    //NSString *curOaidStr = [RcGameWQKeyChain getOaidStringFun];
+    NSString *curOaidStr = [iPhone phoneDeviceUuid];
+
     
     if(oaid
        && oaid.length >0

+ 16 - 4
创维盒子/双子星云手机.xcodeproj/project.pbxproj

@@ -260,6 +260,10 @@
 		6B2A63622D7994660044057A /* customRestartingBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B2A63602D7994660044057A /* customRestartingBoxView.m */; };
 		6B2A63632D7994660044057A /* customRestartingBoxView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B2A63602D7994660044057A /* customRestartingBoxView.m */; };
 		6B2A63642D7994660044057A /* customRestartingBoxView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B2A635F2D7994660044057A /* customRestartingBoxView.h */; };
+		6B2A946D2F0B5E8C00BFC469 /* KeychainHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B2A946B2F0B5E8C00BFC469 /* KeychainHelper.h */; };
+		6B2A946E2F0B5E8C00BFC469 /* KeychainHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B2A946C2F0B5E8C00BFC469 /* KeychainHelper.m */; };
+		6B2A946F2F0B5E8C00BFC469 /* KeychainHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B2A946C2F0B5E8C00BFC469 /* KeychainHelper.m */; };
+		6B2A94702F0B5E8C00BFC469 /* KeychainHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B2A946B2F0B5E8C00BFC469 /* KeychainHelper.h */; };
 		6B2C1E1C2C070ADE00FDCF82 /* ZFAVPlayerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B2C1DCC2C070ADE00FDCF82 /* ZFAVPlayerManager.h */; };
 		6B2C1E1D2C070ADE00FDCF82 /* ZFAVPlayerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B2C1DCC2C070ADE00FDCF82 /* ZFAVPlayerManager.h */; };
 		6B2C1E1E2C070ADE00FDCF82 /* ZFAVPlayerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B2C1DCD2C070ADE00FDCF82 /* ZFAVPlayerManager.m */; };
@@ -1800,6 +1804,8 @@
 		6B2772452E0D36F0002E225A /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
 		6B2A635F2D7994660044057A /* customRestartingBoxView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = customRestartingBoxView.h; sourceTree = "<group>"; };
 		6B2A63602D7994660044057A /* customRestartingBoxView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = customRestartingBoxView.m; sourceTree = "<group>"; };
+		6B2A946B2F0B5E8C00BFC469 /* KeychainHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KeychainHelper.h; sourceTree = "<group>"; };
+		6B2A946C2F0B5E8C00BFC469 /* KeychainHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KeychainHelper.m; sourceTree = "<group>"; };
 		6B2C1DCC2C070ADE00FDCF82 /* ZFAVPlayerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZFAVPlayerManager.h; sourceTree = "<group>"; };
 		6B2C1DCD2C070ADE00FDCF82 /* ZFAVPlayerManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZFAVPlayerManager.m; sourceTree = "<group>"; };
 		6B2C1DCF2C070ADE00FDCF82 /* UIImageView+ZFCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImageView+ZFCache.h"; sourceTree = "<group>"; };
@@ -3563,6 +3569,8 @@
 		6B7DDF2F2C424B5E00EBDFDD /* keyChain */ = {
 			isa = PBXGroup;
 			children = (
+				6B2A946B2F0B5E8C00BFC469 /* KeychainHelper.h */,
+				6B2A946C2F0B5E8C00BFC469 /* KeychainHelper.m */,
 				6B7DDF2D2C424B5E00EBDFDD /* RcGameWQKeyChain.h */,
 				6B7DDF2E2C424B5E00EBDFDD /* RcGameWQKeyChain.m */,
 			);
@@ -4265,6 +4273,7 @@
 				6B4C0F722C0314BA0070EF2E /* DFPlayerTool.h in Headers */,
 				6B679DEA2C252A4E00D0DC03 /* NASMySpaceViewController.h in Headers */,
 				6B4C0F622C0314BA0070EF2E /* DFPlayerFileManager.h in Headers */,
+				6B2A946D2F0B5E8C00BFC469 /* KeychainHelper.h in Headers */,
 				6BB5730F2C7C18DC00713351 /* frpFileExistModel.h in Headers */,
 				6B2170982B15CD9200656670 /* NSDictionary+Log.h in Headers */,
 				6B7E042C2C3E5A98004B4948 /* customDownloadManager.h in Headers */,
@@ -4577,6 +4586,7 @@
 				6B4C0F732C0314BA0070EF2E /* DFPlayerTool.h in Headers */,
 				6B679DEC2C252A4E00D0DC03 /* NASMySpaceViewController.h in Headers */,
 				6B4C0F632C0314BA0070EF2E /* DFPlayerFileManager.h in Headers */,
+				6B2A94702F0B5E8C00BFC469 /* KeychainHelper.h in Headers */,
 				6BB573112C7C18DC00713351 /* frpFileExistModel.h in Headers */,
 				6BD506B92B9576A4006E7CB0 /* NSDictionary+Log.h in Headers */,
 				6B7E042D2C3E5A98004B4948 /* customDownloadManager.h in Headers */,
@@ -5070,6 +5080,7 @@
 				6BD507162B9576A4006E7CB0 /* diskListTableView.m in Sources */,
 				6B8661D92BBA53B600B19846 /* noticeModel.m in Sources */,
 				6B42A2262C41285C000555BB /* previewVideoPortraitTopMoreView.m in Sources */,
+				6B2A946F2F0B5E8C00BFC469 /* KeychainHelper.m in Sources */,
 				6B7EA7AD2BF72D3B002D5CC2 /* queryShareModel.m in Sources */,
 				6B8A5AE22C3BCC0E00E40B19 /* lastFileModel.m in Sources */,
 				6B2C1E932C070ADE00FDCF82 /* ZFPlayerLogManager.m in Sources */,
@@ -5464,6 +5475,7 @@
 				6B45C5052B5F9CEC007E6911 /* diskListTableView.m in Sources */,
 				6B8661D62BBA53B600B19846 /* noticeModel.m in Sources */,
 				6B42A2242C41285C000555BB /* previewVideoPortraitTopMoreView.m in Sources */,
+				6B2A946E2F0B5E8C00BFC469 /* KeychainHelper.m in Sources */,
 				6B7EA7AB2BF72D3B002D5CC2 /* queryShareModel.m in Sources */,
 				6B8A5AE12C3BCC0E00E40B19 /* lastFileModel.m in Sources */,
 				6B2C1E922C070ADE00FDCF82 /* ZFPlayerLogManager.m in Sources */,
@@ -6244,7 +6256,7 @@
 				CODE_SIGN_ENTITLEMENTS = "隐私保护.entitlements";
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 20;
+				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = 6SV76WTUUR;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -6301,7 +6313,7 @@
 					"$(PROJECT_DIR)/code/Vendor/UDP/RayProxy",
 					"$(PROJECT_DIR)/RayProxy",
 				);
-				MARKETING_VERSION = 1.4.5;
+				MARKETING_VERSION = 1.4.6;
 				PRODUCT_BUNDLE_IDENTIFIER = com.armcloud.privacy.x.box;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
@@ -6323,7 +6335,7 @@
 				CODE_SIGN_ENTITLEMENTS = "隐私保护.entitlements";
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 20;
+				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = 6SV76WTUUR;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -6380,7 +6392,7 @@
 					"$(PROJECT_DIR)/code/Vendor/UDP/RayProxy",
 					"$(PROJECT_DIR)/RayProxy",
 				);
-				MARKETING_VERSION = 1.4.5;
+				MARKETING_VERSION = 1.4.6;
 				PRODUCT_BUNDLE_IDENTIFIER = com.armcloud.privacy.x.box;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";