我創建了一個與WhatsApp
類似的應用程序,與同一行業的人聊天,我的基本概念是同步用戶聯繫人並找到正在使用此應用程序的用戶,並且用戶可以相互聊天。Sync如何以最短的迭代和更快的速度與服務器聯繫人聯繫?
聯繫人同步我在我的應用程序中完成了它的工作,直到100到500個聯繫人,但是如果有任何用戶在他的聯繫簿中有2000到3000個聯繫人,則需要花費時間與服務器同步。
我使用下面的代碼來獲取用戶聯繫人並將其發送到服務器。
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, nil);
NSArray *allContacts = (__bridge NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBookRef);
NSMutableArray *contacListAddIntoDatabase = [NSMutableArray new];
for (id record in allContacts) {
ABRecordRef thisContact = (__bridge ABRecordRef)record;
//save Contact in DataBase.
}
保存的所有記錄在本地database
之後我發送該記錄到服務器,以檢查是否該接觸是我的應用程序的用戶,並取回誰使用我的應用程序的用戶列表。我在contactsync service
中實施了分頁。
這是我接觸到的同步服務器代碼:
if ([[APP_DELEGATE contactArrayForSync] count] > 0) {
int long pageSize = ([[APP_DELEGATE contactArrayForSync] count] > CONTACT_SYNC_PAGE_SIZE) ? CONTACT_SYNC_PAGE_SIZE : [[APP_DELEGATE contactArrayForSync] count];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:contactList
options:0
error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[[APP_DELEGATE apiManager] syncUserContacts:[APP_DELEGATE getEncryptedUserID] andJSONString:jsonString withCallback:^(BOOL success, id responseObject) {
//Update DataBase as per server response
}];
}
同步2000個聯繫人的2分鐘左右服用同步和非常大量的時間同步聯繫人。
我想減少這個時間,所以有什麼理由要在分揀機時間獲得同步數據。
我被困在這裏和客戶端要求更快的解決方案來同步我的聯繫人。
注意:在服務器中,我的聯繫人表中有大約50000條記錄,並且在將來可能會增加。
任何建議將不勝感激。
UPDATE:在我第一次發送的尋呼所有接觸到服務器多數民衆贊成罰款,但第一次同步之後每一秒同步,我需要只發送更新或新添加的記錄,現在我每次發送所有記錄到服務器。
那麼我怎樣才能獲得更新的記錄或新增加的記錄和更快的下一次同步呢?
您要求我們幫助您加速保存/同步代碼,但您還沒有向我們展示過。請發佈相關代碼 –
嗨@SimonMcLoughlin我已經更新我的問題與服務器代碼也請檢查一次。 – CodeChanger