2016-08-12 50 views
1

我創建了一個與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:在我第一次發送的尋呼所有接觸到服務器多數民衆贊成罰款,但第一次同步之後每一秒同步,我需要只發送更新或新添加的記錄,現在我每次發送所有記錄到服務器。

那麼我怎樣才能獲得更新的記錄或新增加的記錄和更快的下一次同步呢?

+0

您要求我們幫助您加速保存/同步代碼,但您還沒有向我們展示過。請發佈相關代碼 –

+0

嗨@SimonMcLoughlin我已經更新我的問題與服務器代碼也請檢查一次。 – CodeChanger

回答

1

我認爲你可以通過改變一些實現到你的代碼以及服務器端代碼來加快同步。您需要在從地址簿獲取記錄時創建此結構的字典數組(字段名稱,所有電話號碼逗號分隔)中發送所有電話號碼,現在請在服務器端相應地更改您的邏輯。存儲在數據庫和同步中的任務都可以在不同的線程上完成。

希望這對你有幫助。

+0

Bhupesh,我已經發送所有電話號碼與字典陣列,並從服務器獲得優化響應。有沒有其他方法可以更快地同步我的聯繫人? – CodeChanger

+0

但你如何爲單個用戶獲取多個號碼?有一點我們可以優化代碼。 – Bhupesh

+0

沒有親愛的我只想保存聯繫人的單個號碼,這不是我的同步花費時間的地方。我真正的問題是,當用戶想要更新與他更新的聯繫人agin同步時,它與第一次同步相同,所以我想減少更新聯繫人同步。 – CodeChanger

相關問題