Ładuję zdjęcia profilowe z Facebooka, buforuję je na dysku i ładuję je do komórek UITableView.
Teraz zastanawiam się, w jaki sposób mogę się dowiedzieć, kiedy ktoś zmienił swoje zdjęcie profilowe na Facebooku, że muszę załadować nowy obraz z sieci zamiast używać jednego dysku z pamięci podręcznej.
Adres URL obrazu jest zawsze taki sam. Czy istnieje lekki sposób robienia tego bez pobierania obrazu i porównywania go z plikiem lokalnym?
Odpowiedzi:
1 dla odpowiedzi № 1Profil użytkownika jest dostępny pod adresem https://graph.facebook.com//obrazek. Ten adres URL nigdy się nie zmienia.
Po wysłaniu żądania do tego adresu URL przekierowujedo adresu URL unikalnego dla każdego obrazu. Jeśli biblioteka pobierania poprawnie implementuje buforowanie i sprawdzanie nagłówków, otrzymasz zwrot 302 i będziesz wiedzieć, że zawartość się nie zmieniła.
ASIHTTPRequest jest jedną z takich bibliotek. Można go skonfigurować do pobierania obrazu profilu, przechowywania go na dysku, a następnie tylko zapytanie, czy obraz się zmienił, bez pobierania całego obrazu.
1 dla odpowiedzi nr 2
Jeśli przechowujesz zdjęcie profilowe użytkownika lokalnego, pobierz profil "updated_time" http://developers.facebook.com/docs/reference/api/user/ Jeśli wartość się zmieniła, zaktualizuj zdjęcie profilowe. Nie musisz "cron" tego zadania, lub sprawdź za każdym razem, gdy użytkownik jest podłączony - zapisz to pole w interfejsie API aktualizacji w czasie rzeczywistym.
0 dla odpowiedzi № 3
Po sprawdzeniu adres URL profilu Facebook zmieni się, gdy użytkownik zmieni swój obraz profilu. Możesz to sprawdzić sam, ale nie ma na to żadnej dokumentacji. Używaj go na własne ryzyko :)
0 dla odpowiedzi nr 4
Użyj aktualizacji w czasie rzeczywistym na Facebooku: http://developers.facebook.com/docs/reference/api/realtime/
Nie jest to łatwe do wdrożenia, ale może byćnaprawdę użyteczne. Kiedy mam czas, planuję zrobić coś takiego: skonfigurować serwer, który odbiera callbacki. Po otrzymaniu oddzwaniania, przechwyć czas, w którym element został zaktualizowany. Następnie utworzę punkt końcowy, do którego każdy klient może uzyskać dostęp, przekazując dowolny identyfikator obiektu, którego chce, i zwróci najbardziej aktualny czas aktualizacji. Może to być XML lub JSON. rzeczy. 1) Początkowo dodaj listę obserwowanych podmiotów do mojego serwera. 2) Aby sprawdzić dostępność aktualizacji, wykonaj jedno połączenie z listą identyfikatorów jednostek i zwróć listę ostatnich aktualizacji identyfikatorów, a następnie odpowiednio odśwież pamięć podręczną.
Byłoby wspaniale, gdybym mógł publicznie udostępnić coś takiego, hę? :-)