0

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

+0

Pouvez-vous élaborer la partie "J'ai besoin de récupérer 20 autres messages" dans votre question !! quels 20 messages ?? –

+0

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]? –

Répondre

3

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.

0

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.

+0

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 –