Переглянути джерело

1.修改Apex Mobile,将登陆标记保存到数据库。

Pen Li 8 роки тому
батько
коміт
c3bd58da9a

+ 4 - 0
Apex Mobile/Apex Mobile/ApexMobileDB.h

@@ -22,4 +22,8 @@
 + (int) get_recordid:(sqlite3*)db table:(NSString*) tablename where:(NSString*) whereclause order:(NSString*) orderby;
 + (int) get_recordid:(sqlite3*)db table:(NSString*) tablename where:(NSString*) whereclause;
 +(BOOL)checkForField:(NSString *)table field:(NSString *)field db:(sqlite3 *)db;
+
++ (void)jk_query:(NSString *)sql completion:(void (^)(sqlite3_stmt *stmt,long *count)) query failure:(void (^)(NSString *err_msg)) failure;
++ (void)jk_excute:(NSString *)sql completion:(void (^)(BOOL success)) completion;
+
 @end

+ 60 - 0
Apex Mobile/Apex Mobile/ApexMobileDB.m

@@ -238,6 +238,7 @@
         NSString* create_location=@"CREATE TABLE IF NOT EXISTS locations ( _id INTEGER PRIMARY KEY, area VARCHAR(20), company VARCHAR(20), city VARCHAR(20), longitude VARCHAR(20), latitude VARCHAR(20) ,address VARCHAR(20),  telephone VARCHAR(20) , fax VARCHAR(20), contact VARCHAR(20), email VARCHAR(20));";
         
         
+        NSString *create_auth_ver = @"create table if not exists auth_ver (_id integer primary key autoincrement, ver integer);";
         
         
         //        CREATE TABLE users (_id integer PRIMARY KEY,name varchar(20),pass varchar(20));
@@ -248,6 +249,7 @@
         [self execSql:create_favorites db:db];
         [self execSql:create_history db:db];
         [self execSql:create_location db:db];
+        [self execSql:create_auth_ver db:db];
         
         
         if( ![self checkForField:@"search_history" field:@"level" db:db])
@@ -273,5 +275,63 @@
     DebugLog (@"bottom of initializeDb");
 }
 
++ (void)jk_query:(NSString *)sql completion:(void (^)(sqlite3_stmt *, long *))query failure:(void (^)(NSString *))failure {
+    
+    if (sql.length == 0) {
+        return;
+    }
+    
+    dispatch_async(dispatch_get_main_queue(), ^{
+        
+        NSString *sqlQuery = sql;
+        sqlite3_stmt * statement;
+        sqlite3 *db = [self get_db];
+        
+        if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) {
+            
+            if (query) {
+                
+                long count = 0;
+                while (sqlite3_step(statement) == SQLITE_ROW) {
+                    query(statement,&count);
+                    count++;
+                }
+            }
+            
+            sqlite3_finalize(statement);
+        } else {
+            DebugLog(@"excute sql:%@ error",sql);
+            if (failure) {
+                failure(@"error");
+            }
+            
+        }
+        
+        sqlite3_close(db);
+        
+    });
+}
+
++ (void)jk_excute:(NSString *)sql completion:(void (^)(BOOL))completion {
+    if (sql.length == 0) {
+        return;
+    }
+    
+    dispatch_async(dispatch_get_main_queue(), ^{
+        
+        sqlite3 *db = [self get_db];
+        if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, NULL) == SQLITE_OK) {
+            if (completion) {
+                completion(YES);
+            }
+        } else {
+            DebugLog(@"excute sql:%@ error",sql);
+            if (completion) {
+                completion(NO);
+            }
+        }
+        sqlite3_close(db);
+    });
+}
 
 @end

+ 28 - 5
Apex Mobile/Apex Mobile/RANetwork.m

@@ -250,9 +250,13 @@
             return RESULT_TRUE;
         }
         int Auth_InfoVer = [[objheader valueForKey:@"ver"] intValue];
-        NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
-        [defaults removeObjectForKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
-        [defaults setInteger:Auth_InfoVer forKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
+//        NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
+//        [defaults removeObjectForKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
+//        [defaults setInteger:Auth_InfoVer forKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
+        
+        [ApexMobileDB jk_excute:@"delete from auth_ver;" completion:nil];
+        [ApexMobileDB jk_excute:[NSString stringWithFormat:@"insert into auth_ver (ver) values (%d);",Auth_InfoVer] completion:nil];
+        
         //        [defaults synchronize];
         
         NSDictionary* objfuncs = [jsobj objectForKey:@"functions"];
@@ -1129,8 +1133,27 @@
     //    if(![RANetwork IsHostAvailable:URL_UPDATE_AUTH])
     //        return RESULT_NET_ERROR;
     NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
-    long ver =[defaults integerForKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
-    
+    __block long ver = 0;
+    NSString *auth_ver_key = [NSString stringWithFormat:@"%@_Auth_InfoVer",user];
+    if ([defaults objectForKey:auth_ver_key] != nil) {
+        
+        ver = [defaults integerForKey:auth_ver_key];
+        [defaults removeObjectForKey:auth_ver_key];
+        
+        NSString *sql = [NSString stringWithFormat:@"insert into auth_ver (ver) values (%ld);",ver];
+        [ApexMobileDB jk_excute:sql completion:nil];
+        
+    } else {
+        
+        NSString *sql = @"select ver from auth_ver;";
+        [ApexMobileDB jk_query:sql completion:^(sqlite3_stmt *stmt, long *count) {
+            
+            ver = sqlite3_column_int(stmt, 0);
+            
+        } failure:^(NSString *err_msg) {
+            ver = 0;
+        }];
+    }
     
     
     NSMutableDictionary* params = [[NSMutableDictionary alloc] init];