Dans ViewDidLoad de mon contrôleur de vue de chat, j'ai écrit self.appDelegate.client?.historyForChannel(currentChannel, start: nil, end: nil, limit: 20, withCompletion:
et il récupère les 20 messages récents. Cependant, je souhaite récupérer 20 anciens/anciens messages avant ces 20 messages récents pour ma fonction de défilement infinie. Comment puis-je faire ceci?Swift + Pubnub chat app charger l'ancien message pour le défilement
Répondre
magasin l'horodatage du premier message que vous avez reçu de l'histoire Pubnub, pour recevoir 20 messages suivants:
self.client?.historyForChannel(channel, start: lastStoredTimstamp, end: nil, limit: 20, reverse: false, withCompletion:
Je l'ai testé et il fonctionne bien.
Petite Description: L'utilisation d'un seul paramètre de démarrage renvoie toujours des messages plus anciens que le jeton de temps fourni. Si vous définissez reverse = true, vous recevrez un message plus récent que le jeton de temps fourni.
S'il vous plaît voir comment https://www.pubnub.com/docs/swift/storage-and-history l'API d'histoire PubNub fonctionne avec des diagrammes de chronologie.
Il peut se faire via UIScrollViewDelegate
(dans votre cas, il est à l'intérieur UITableView)
Tout d'abord, définissez le délégué de votre UITableView
.
Ensuite, vous devez passer outre scrollViewDidScroll(_ scrollView: UIScrollView)
, et c'est un exemple de code:
let currentOffset = scrollView.contentOffset.y
let maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height
let deltaOffset = maximumOffset - currentOffset
if (deltaOffset <= 0)
// call to self.appDelegate.client?.historyForChannel with the offsets
)
L'expression se frapperait lorsque vous avez atteint au bas de la liste.
self.appDelegate.client?.historyForChannel
contient le début & fin décalages. Start peut être calculé en ajoutant +20 (déclarer une variable de classe quelque part) après chaque appel à historyForChannel
, mais cela ne fonctionnera que si les objets de la réponse n'ont pas d'ID uniques.
le problème est que 'start' et' end' sont NSNumbers et ils devraient être une date. C'est pourquoi je ne peux pas faire un simple +20 pour chaque parchemin –
Pouvez-vous élaborer la partie "J'ai besoin de récupérer 20 autres messages" dans votre question !! quels 20 messages ?? –
dit que l'historique des messages a 40 messages, viewDidLoad récupère le message [0] ~ [19], comment vais-je récupérer [20] ~ [39]? –