iOS 5 en het Twitter Framework geavanceerde technieken

In het eerste deel van deze tweedelige tutorial over het Twitter-framework waar ik het over had TWTweetComposeViewController. Ik heb je laten zien hoe je deze les kunt gebruiken om tweets samen te stellen en te verzenden met heel weinig inspanning van jouw kant. In deze tutorial praat ik over de meer gevorderden TWRequest klasse. Met deze klasse kun je direct praten met de API van Twitter en dit geeft je veel meer controle en flexibiliteit!

In deze zelfstudie worden ook de voordelen van het gebruik besproken TWRequest in plaats van het maken en uitvoeren van uw eigen HTTP-aanvraag en waarom u wordt aangemoedigd om te gebruiken TWRequest als u besluit om te communiceren met de Twitter API op iOS 5.


Project samenvatting

In de eerste zelfstudie heb ik je laten zien hoe je het Twitter-framework aan je project kunt toevoegen en hoe je het kunt gebruiken TWTweetComposeViewController klasse om tweets samen te stellen en te verzenden. In dit artikel zullen we een beetje sneller bewegen omdat ik een behoorlijk stuk grond wil bedekken.


Voor we beginnen

Voordat we beginnen, wil ik herhalen dat het noodzakelijk is dat u een of meer Twitter-accounts op het apparaat hebt geïnstalleerd die u voor deze zelfstudie zult gebruiken. U kunt de iOS-simulator ook gebruiken als u geen fysiek apparaat hebt om mee te testen. De TWRequest class zorgt voor authenticatie door het besturingssysteem te vragen of het toegang heeft tot de Twitter-accounts die op het apparaat van de gebruiker zijn geïnstalleerd. Zorg ervoor dat u ten minste één Twitter-account op uw apparaat of de iOS-simulator hebt geïnstalleerd om deze zelfstudie te voltooien. U kunt dit controleren door de instellingen toepassing en kiezen tjilpen van de lijst. Bekijk de eerste aflevering van deze tweedelige serie voor meer informatie.


Stap 1: Projectinstellingen

Om u te laten zien hoe eenvoudig het is om op de hoogte te blijven van het Twitter-raamwerk en de API van Twitter, zullen we vanaf het begin een applicatie bouwen. Natuurlijk zullen we geen volwaardige Twitter-client bouwen, maar je zult verbaasd zijn hoe gemakkelijk het is om met weinig tijd en moeite aan de slag te gaan. Dit is allemaal te danken aan de nauwe integratie van Twitter met iOS.

Maak een nieuw Xcode-project door de. Te kiezen Toepassing enkele weergave sjabloon uit de sjablonenlijst. Geef je sollicitatie een naam Twitter Rocks, voer een bedrijfsidentificatie in, stel in iPhone voor de apparaatfamilie en vink aan Gebruik automatische referentietelling. U kunt de resterende selectievakjes uitgeschakeld laten voor dit project. Vertel Xcode waar je je project wilt opslaan en klik creëren.


Stap 2: De gebruikersinterface instellen

Voordat we gaan werken met de TWRequest klasse, ik wil eerst zorgen voor de gebruikersinterface. Voor deze zelfstudie gebruiken we een tabelweergave om de gegevens weer te geven die we van Twitter hebben ontvangen, dat wil zeggen tweets. Selecteer het header-bestand van uw view controller en maak twee outlets, één voor de tabelweergave en een andere voor een instantie van UIActivityIndicatorView. De weergave van de activiteitsindicator is zichtbaar terwijl we wachten tot ons verzoek een reactie retourneert. We declareren ook een instantievariabele met de naam databron die de resultaten (tweets) van ons verzoek zal bevatten. Het zal dienen als de gegevensbron van onze tabelweergave. Een instantie van NSArray is perfect voor onze behoeften. Zorg ervoor dat uw weergavecontroller voldoet aan de tabelweergave gegevensbron en delegatieprotocollen.

Voordat we onze gebruikersinterface maken, moeten we ook twee acties toevoegen aan het headerbestand van onze view-controller. De eerste actie requestTimeline: initieert het verzoek dat de openbare tijdlijn van het Mobiletuts + Twitter-account ophaalt. De tweede actie, requestMentions:, initieert het verzoek om de vermeldingen op te halen van het Twitter-account dat op uw apparaat is geïnstalleerd. Maak je nog geen zorgen over deze acties. Ik zal alles in meer detail uitleggen zodra we beginnen met de implementatie ervan.

Vergeet niet om accessors voor onze verkooppunten te synthetiseren in het implementatiebestand van onze view controller en voeg een lege implementatie toe voor elke actie om compilerwaarschuwingen te voorkomen.

 #importeren  @interface ViewController: UIViewController  __wist UITableView * _tableView; __zwakke UIActivityIndicatorView * _activityIndicatorView; NSArray * _dataSource;  @property (nonatomic, weak) IBOutlet UITableView * tableView; @property (nonatomic, weak) IBOutlet UIActivityIndicatorView * activityIndicatorView; @property (nonatomic, strong) NSArray * dataSource; - (IBAction) requestTimeline: (id) afzender; - (IBAction) requestMentions: (id) afzender; @einde
 @synthesize tableView = _tableView, activityIndicatorView = _activityIndicatorView; @synthesize dataSource = _dataSource;
 - (IBAction) requestTimeline: (id) afzender  - (IBAction) requestMentions: (id) afzender 

Ga naar het XIB-bestand van onze view-controller en begin met het slepen van een werkbalk naar de onderkant van de weergave van de view controller. Standaard heeft de werkbalk één knop, dus laten we nog een instantie van slepen UIBarButtonItem naar de werkbalk. Houd het overzichtelijk door een flexibel ruimte-exemplaar tussen de twee balkknoppen te slepen om de knoppen naar de tegenoverliggende zijden te duwen. Selecteer de linkerknop en, in de Kenmerken Inspector (derde tabblad van rechts), voer in Tijdlijn in de Titel veld. Geef de rechterknop een titel van vermeldingen. Regel het slepen van het linkerknopitem naar de Bestand eigenaar en selecteer de requestTimeLine: actie uit het menu dat verschijnt. Doe hetzelfde voor het juiste knop item, maar selecteer de requestMentions: actie uit hetzelfde menu.

De gebruikersinterface is bijna klaar. Versleep een tabelweergave en een weergave van de activiteitenindicator naar de weergave van onze view-controller. Plaats de weergave van de activiteitenindicator in het midden van de weergave van de weergave-controller en vink het selectievakje naast aan Verbergt wanneer gestopt in de Kenmerken Inspector. Verbind beide weergaven met de stopcontacten die we een minuut geleden hebben verklaard door het slepen vanuit de Bestand eigenaar naar het tabeloverzicht en de weergave van de activiteitenindicator. Selecteer ten slotte de tabelweergave, open de Verbindingen Inspecteur, en wijs naar de databron en delegeren uitlaten van het tafelzicht naar de Bestand eigenaar voorwerp.

Gebruikersomgeving? Gedaan.


Stap 3: Implementatie van de tabelweergave

We moeten wat meer werk doen voordat we kunnen beginnen met spelen met het Twitter-raamwerk. Afgezien van het uitvoeren van onze acties, die we zo dadelijk zullen uitvoeren, moeten we ervoor zorgen dat de vereiste methoden van het databasegegevensbronprotocol worden geïmplementeerd. Hoewel we onze view-controller hebben toegewezen als de gedelegeerde van de tabelweergave, implementeren we in deze zelfstudie geen van de methoden voor het delegeren van tabelweergaves. De eerste methode die we zullen implementeren is numberOfSectionsInTableView:. De implementatie is eenvoudig. We zorgen ervoor dat onze gegevensbron is ingesteld en retourneert 1 als deze is of 0 als dit niet het geval is. Gemakkelijk. Rechts?

 - (NSInteger) numberOfSectionsInTableView: (UITableView *) tableView if (self.dataSource) return 1;  else retourneer 0; 

De tweede gegevensbronmethode is bijna identiek. In tableView: numberOfRowsInSection:, we verifiëren dat de gegevensbron is ingesteld en als dit het geval is, retourneren we het aantal elementen in de gegevensbron. Als onze gegevensbron niet is ingesteld, geven we 0 als resultaat.

 - (NSInteger) tableView: (UITableView *) tableView numberOfRowsInSection: (NSInteger) section if (self.dataSource) return self.dataSource.count;  else retourneer 0; 

In tableView: cellForRowAtIndexPath:, we verklaren een statische hergebruiksidentificatie (voor hergebruik van tabelweergavecellen) en vragen de tabelweergave om een ​​cel die we opnieuw kunnen gebruiken. Als de tabelweergave geen herbruikbare cel retourneert, initialiseren we een nieuwe cel. We zullen de cel nog niet configureren. We moeten eerst weten hoe de gegevens die we terugkrijgen van Twitter eruit zien.

 - (UITableViewCell *) tableView: (UITableView *) aTableView cellForRowAtIndexPath: (NSIndexPath *) indexPath static NSString * CellIdentifier = @ "Cell Identifier"; UITableViewCell * cell = [aTableView dequeueReusableCellWithIdentifier: CellIdentifier]; if (cell == nil) cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleSubtitle reuseIdentifier: CellIdentifier];  // Wordt vervolgd cel retourneren; 

Stap 4: Het Twitter Framework toevoegen

Voordat we het Twitter-raamwerk kunnen gaan gebruiken, moeten we ons project ertegen verbinden. Als we ook geverifieerde verzoeken willen doen, moeten we ons project ook koppelen aan het accountenkader. Laten we dat nu doen.

Selecteer uw project in de Project Navigator en selecteer ons doel in de lijst met doelen. Kiezen Bouw fases bovenaan opent u de Binaire koppeling met bibliotheken lade en voeg de Twitter- en Accounts-frameworks toe aan het project.

Als je het eerste deel van deze tutorial hebt gelezen, herinner je je misschien dat we ook de framework-headers moeten importeren in het header-bestand van onze view-controller om deze frameworks in onze view-controller te kunnen gebruiken. Voeg ze onmiddellijk in na de importverklaring van UIKit.

 #importeren  #importeren  #importeren 

Stap 5: Earth To Twitter

Er zijn twee dingen die ik je wil laten zien, (1) hoe je tweets niet-geauthenticeerd verzendt en (2) hoe je geverifieerde aanvragen naar de Twitter API stuurt. Het verschil ligt voor de hand, maar er is een groot verschil in gebruikerservaring. Als een iOS-toepassing een geverifieerd verzoek naar de API van Twitter wil verzenden, moet de gebruiker de toepassing expliciet toestemming geven voor toegang tot de Twitter-accounts die op het apparaat zijn geïnstalleerd. Met andere woorden, authenticatie wordt voor u gedaan wanneer u het Twitter-framework gebruikt, maar de gebruiker behoudt de controle over het verlenen of weigeren van toegang tot zijn Twitter-account (s).


Stap 6: Niet-geverifieerde Twitter-verzoeken

Om te illustreren hoe niet-geverifieerde Twitter-verzoeken werken, vragen we de tijdlijn van het Mobiletuts + Twitter-account aan. De magie zal gebeuren in onze requestTimeline: methode. Zoals altijd zal ik u stapsgewijs door de implementatie leiden. Voordat we ons verzoek verzenden naar Twitter, verbergen we onze tabelweergave en tonen we onze activiteitsindicatorweergave door deze te verzenden startAnimating bericht. Vervolgens maken we vervolgens de URL voor ons Twitter-verzoek. Ik zal niet ingaan op de details van de Twitter API in deze tutorial, omdat ik me wil concentreren op het iOS-aspect van het vragen van de API. Voor meer informatie over de API van Twitter gaat u naar de documentatie.

Onze TWRequest Een voorbeeld dat we binnenkort zullen maken, accepteert een woordenboek met parameters. Met deze parameters kunt u uw aanvraag verfijnen. In ons voorbeeld geven we op wiens tijdlijn we willen zien, hoeveel tweets we willen ophalen en we stellen ook de vlag in voor include_entities tot 1. Entiteiten zijn ongelooflijk handig. In plaats van alleen de tekst van een tweet te ontvangen, vertegenwoordigen entiteiten de interessante delen van een tweet, zoals afbeeldingen, URL's of vermeldingen van andere Twitter-gebruikers in de tweet.

 [self.tableView setHidden: YES]; [self.activityIndicatorView startAnimating]; NSURL * url = [NSURL URLWithString: @ "http://api.twitter.com/1/statuses/user_timeline.json"]; NSMutableDictionary * parameters = [[NSMutableDictionary alloc] init]; [parameters setObject: @ "envatomobile" forKey: @ "screen_name"]; [parameters setObject: @ "50" forKey: @ "count"]; [parameters setObject: @ "1" forKey: @ "include_entities"];

Het is tijd om onze te maken TWRequest aanleg. We initialiseren het met (1) onze URL, (2) ons woordenboek met parameters en (3) een verzoekmethode (TWRequestMethod). Dit laatste is het HTTP-werkwoord. In ons geval gebruiken we TWRequestMethodGET, die overeenkomt met een GET-verzoek. De andere opties zijn TWRequestMethodPOST en TWRequestMethodDELETE.

 TWRequest * request = [[TWRequest alloc] initWithURL: url-parameters: parameters requestMethod: TWRequestMethodGET];

We kunnen ons verzoek nu doen door te bellen performRequestWithHandler: op ons verzoek. Ik hou van blokken en deze methode neemt, net als veel andere iOS 5-methoden, een blok (TWRequestHandler) als de enige parameter. Het blok wordt uitgevoerd zodra we het antwoord ontvangen dat de Twitter API ons stuurt. Het blok neemt drie parameters, (1) de onbewerkte reactiegegevens, (2) de HTTP-reactie van ons verzoek, en (3) een fout in het geval er iets fout ging.

Voordat we de aanvraaghandler zelf bekijken, is het belangrijk om te weten dat we een JSON-reactie verwachten (bekijk de laatste component van onze verzoek-URL). De verwerker van de aanvraag geeft ons echter een exemplaar van NSData. Dit betekent dat we dit gegevensobject eerst moeten serialiseren met behulp van NSJSONSerialization, waardoor we een array krijgen met de tweets die we hebben aangevraagd.

In de verzoekhandler controleren we eerst of het antwoordgegevensobject dat niet is nul. Als dit het geval is, serialiseren we het responsgegevensobject en wijzen we de geretourneerde waarde toe aan ons gegevensbronobject. Het is altijd belangrijk om te controleren op fouten bij het aanvragen van een webservice, omdat u nooit weet wat u terug krijgt. In ons voorbeeld controleren we of ons gegevensbronobject dat niet is nul. Als dit het geval is, herladen en tonen we de tabelweergave en verbergen we de activiteitsindicatorweergave door deze te verzenden stopAnimating bericht. Als ons verzoek niet heeft opgeleverd wat we verwachtten, loggen we de juiste fout in de console.

 [request performRequestWithHandler: ^ (NSData * responseData, NSHTTPURLResponse * urlResponse, NSError * error) if (responseData! = nil) NSError * error = nil; self.dataSource = [NSJSONSerialization JSONObjectWithData: responseData options: NSJSONReadingMutableLeaves error: & error]; if (self.dataSource! = nil) [self.tableBekijk reloadDataView]; [self.tableView setHidden: NO]; [self.activityIndicatorView stopAnimating];  else NSLog (@ "Error serializing response data% @ with user info% @.", error, error.userInfo);  else NSLog (@ "Fout bij het opvragen van tijdlijn% @ met gebruikersinfo% @.", error, error.userInfo); ];

Als u wilt weten hoe elke tweet is gestructureerd, raad ik u aan het gerubriceerde antwoordgegevensobject bij de console te registreren. Ik zal niet in detail treden, omdat ik de focus van deze tutorial op de ontwikkeling van iOS wil behouden. Voordat we iets in onze tabelweergave kunnen weergeven, moeten we ons finaliseren tableView: cellForRowAtIndexPath: methode. Het configureren van de cel is zowel eenvoudig als niet-zo-eenvoudig. Bekijk de volledige implementatie hieronder.

 - (UITableViewCell *) tableView: (UITableView *) aTableView cellForRowAtIndexPath: (NSIndexPath *) indexPath static NSString * CellIdentifier = @ "Cell Identifier"; UITableViewCell * cell = [aTableView dequeueReusableCellWithIdentifier: CellIdentifier]; if (cell == nil) cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleSubtitle reuseIdentifier: CellIdentifier];  NSDictionary * tweet = [self.dataSource objectAtIndex: indexPath.row]; cell.textLabel.text = [tweet objectForKey: @ "text"]; cell.imageView.image = [UIImage imageNamed: @ "placeholder"]; dispatch_queue_t queue = dispatch_queue_create ("com.mobiletuts.task", NULL); dispatch_queue_t main = dispatch_get_main_queue (); dispatch_async (wachtrij, ^ NSURL * imageURL = [NSURL URLWithString: [[tweet objectForKey: @ "user"] objectForKey: @ "profile_image_url"]]; NSData * imageData = [NSData-gegevensWithContentsOfURL: imageURL]; dispatch_async (hoofd, ^  cell.imageView.image = [UIImage imageWithData: imageData];);); dispatch_release (wachtrij); terugkeer cel; 

Eerst halen we de juiste tweet uit onze gegevensbronarray. Elke tweet is een instantie van NSDictionary. In het tekstlabel van onze cel geven we de tweet zelf weer door de waarde voor de sleutel te verkrijgen tekst. Natuurlijk zou een Twitter-applicatie niet compleet zijn zonder afbeeldingen. Elke tweet geeft ons de URL van het profiel van de persoon die de tweeted heeft verzonden. Als je een van mijn vorige tutorials hebt gelezen, heb je misschien een idee van wat ik hierna ga zeggen. Als we de profielafbeelding zouden aanvragen voor elke tweet op de hoofdthread, zou de uitvoering van onze tabelweergave verschrikkelijk zijn. Onze hoofdthread zou worden geblokkeerd elke keer dat een verzoek werd gedaan en scrollen zou allesbehalve soepel zijn. Ik hou van soepel, dus we moeten dit oplossen.

Een mogelijke oplossing is om te gebruiken Grand Central Dispatch of GCD. Ik zal in deze tutorial niet ingaan op de details van GCD, maar het idee is eenvoudig. We maken de aanvraag voor elke profielafbeelding op een aparte thread. Nadat we de gegevens hebben ontvangen, maken we een UIImage uit de gegevens en stel de afbeelding van de afbeelding van de cel in met die afbeelding. Het is van vitaal belang dat de laatste om verschillende redenen aan de draad wordt getrokken. Maak je geen zorgen als je niet volledig begrijpt wat er aan de hand is, want het is niet de focus van deze tutorial.

U kunt ook een bibliotheek zoals gebruiken AFNetworking om de nitty-gritty details weg te abstracteren. Kijk eens naar een van mijn vorige tutorials voor meer informatie over de AFNetworking bibliotheek.

Merk op dat ik, voordat ik om de profielafbeelding vraag, de afbeelding van de afbeelding van de celafbeelding met een afbeelding voor tijdelijke aanduiding instelt. Dit is nodig om te voorkomen dat sommige visuele eigenaardigheden verschijnen.

Bouw en run uw applicatie. Tik op de tijdlijnknop linksonder om de tweets op te halen voor de openbare tijdlijn van de Mobile Tuts + Twitter-account. Heb ik je niet gezegd dat ik van een vloeiend scrollend tafelbeeld houd? Zoals u kunt zien, is er momenteel geen vorm van caching op zijn plaats. Met andere woorden, de profielafbeelding van de Mobiletuts + Twitter-account wordt meerdere keren onnodig opgehaald. Voel je vrij om dit te repareren met je eigen caching-oplossing.


Stap 7: Geverifieerde Twitter-verzoeken

Geverifieerde Twitter-verzoeken lijken veel op niet-geverifieerde verzoeken. We hoeven alleen maar een beetje extra werk te doen om een ​​geverifieerd Twitter-verzoek uit te voeren. Laten we een kijkje nemen naar de implementatie van onze requestMentions: methode stap voor stap.

 [self.tableView setHidden: YES]; [self.activityIndicatorView startAnimating]; ACAccountStore * accountStore = [[ACAccountStore alloc] init]; ACAccountType * accountType = [accountStore accountTypeWithAccountTypeIdentifier: ACAccountTypeIdentifierTwitter];

Eerst verbergen we onze tabelweergave en tonen onze activiteitsindicatorweergave door er een bericht van te verzenden startAnimating. We initialiseren vervolgens een account store (ACAccountStore). Met dit object kunnen we toegang krijgen tot de Twitter-accounts die op het apparaat zijn geïnstalleerd. Vervolgens maken we een instantie van ACAccountType door te bellen accountTypeWithAccountTypeIdentifier: in onze account store-instantie. Deze methode accepteert één parameter, dat wil zeggen, het type account waartoe we toegang willen krijgen. In ons voorbeeld willen we toegang tot de Twitter-account (s) op het apparaat.

 [accountStore requestAccessToAccountsWithType: accountType withCompletionHandler: ^ (BOOL verleend, NSError * -fout) if (verleend)  ​​else NSLog (@ "De gebruiker verleent ons geen toestemming om toegang tot zijn Twitter-account (s) te krijgen."); ];

Met ons ingestelde accountarchief en accounttype vragen we de gebruiker om ons toegang te geven tot hun Twitter-account (s) door te bellen requestAccessToAccountsWithType: withCompletionHandler: in onze account store-instantie. We geven twee parameters door, (1) het exemplaar van het accounttype en (2) een ander blok. Waarom moeten we een blok passeren? Wanneer deze methode wordt aangeroepen, toont het apparaat de gebruiker een waarschuwingsweergave die de gebruiker informeert dat onze app toegang tot de Twitter-account (s) van het apparaat vraagt. De blokkerings- of voltooiingsafhandeling wordt uitgevoerd wanneer de gebruiker de toegang tot de toepassing verleent of weigert. Het blok accepteert twee parameters, (1) een Booleaanse waarde die aangeeft of toegang is verleend en (2) een foutobject dat ons vertelt wat er mis ging als er inderdaad iets fout ging.

Hoewel de voltooiingshandler er eenvoudig uitziet en veel lijkt op hoe we het niet-geverifieerde Twitter-verzoek eerder hebben opgezet en afgehandeld, zijn er enkele belangrijke verschillen. Als de gebruiker ons toestemming heeft gegeven voor hun Twitter-account (s), vragen we het accountarchief voor alle Twitter-accounts die op het apparaat zijn geïnstalleerd.

 NSArray * accounts = [accountStore accountsWithAccountType: accountType];

Als een of meer accounts zijn teruggestuurd, nemen we een verwijzing naar het eerste account in de array. Uiteraard is dit in een echte applicatie niet de beste aanpak, omdat u er zeker van wilt zijn dat u een specifiek account te pakken krijgt. Voor onze toepassing doet het er niet toe. Het enige wat u hoeft te doen, is het Twitter-verzoek maken en dit naar de API van Twitter verzenden. Het belangrijkste verschil met het niet-geverifieerde verzoek is dat we de accudeigenschap van het Twitter-verzoek instellen op het account dat we hebben ontvangen van het accountarchief. Dit vertelt het verzoek (en Twitter trouwens) namens wie het verzoek wordt gedaan, met andere woorden, van wie we de gevraagde bewoordingen noemen. Het afhandelen van het antwoord is identiek aan hoe we het antwoord hebben behandeld voor het niet-geverifieerde verzoek.

 if (accounts.count) ACAccount * twitterAccount = [accounts objectAtIndex: 0]; [self.tableView setHidden: YES]; [self.activityIndicatorView startAnimating]; NSURL * url = [NSURL URLWithString: @ "http://api.twitter.com/1/statuses/mentions.json"]; NSMutableDictionary * parameters = [[NSMutableDictionary alloc] init]; [parameters setObject: @ "20" forKey: @ "count"]; [parameters setObject: @ "1" forKey: @ "include_entities"]; TWRequest * request = [[TWRequest alloc] initWithURL: url-parameters: parameters requestMethod: TWRequestMethodGET]; [verzoek setAccount: twitterAccount]; [request performRequestWithHandler: ^ (NSData * responseData, NSHTTPURLResponse * urlResponse, NSError * error) if (responseData) NSError * error = nil; self.dataSource = [NSJSONSerialization JSONObjectWithData: responseData options: NSJSONReadingMutableLeaves error: & error]; if (self.dataSource) [self.tableBekijk reloadDataView]; [self.tableView setHidden: NO]; [self.activityIndicatorView stopAnimating];  else NSLog (@ "Error% @ with user info% @.", error, error.userInfo); ]; 

Vergeet niet om de volledige implementatie van onze te bekijken requestMentions: methode hieronder. Bouw en voer uw applicatie uit en tik op het juiste item in de balkknop om de vermeldingen van uw Twitter-account aan te vragen.

 - (IBAction) requestMentions: (id) afzender [self.tableView setHidden: YES]; [self.activityIndicatorView startAnimating]; ACAccountStore * accountStore = [[ACAccountStore alloc] init]; ACAccountType * accountType = [accountStore accountTypeWithAccountTypeIdentifier: ACAccountTypeIdentifierTwitter]; [accountStore requestAccessToAccountsWithType: accountType withCompletionHandler: ^ (BOOL verleend, NSError * fout) if (toegekend) NSArray * accounts = [accountStore accountsWithAccountType: accountType]; if (accounts.count) ACAccount * twitterAccount = [accounts objectAtIndex: 0]; NSURL * url = [NSURL URLWithString: @ "http://api.twitter.com/1/statuses/mentions.json"]; NSMutableDictionary * parameters = [[NSMutableDictionary alloc] init]; [parameters setObject: @ "20" forKey: @ "count"]; [parameters setObject: @ "1" forKey: @ "include_entities"]; TWRequest * request = [[TWRequest alloc] initWithURL: url-parameters: parameters requestMethod: TWRequestMethodGET]; [verzoek setAccount: twitterAccount]; [request performRequestWithHandler: ^ (NSData * responseData, NSHTTPURLResponse * urlResponse, NSError * error) if (responseData) NSError * error = nil; self.dataSource = [NSJSONSerialization JSONObjectWithData: responseData options: NSJSONReadingMutableLeaves error: & error]; if (self.dataSource) [self.tableBekijk reloadDataView]; [self.tableView setHidden: NO]; [self.activityIndicatorView stopAnimating];  else NSLog (@ "Error% @ with user info% @.", error, error.userInfo); ];  else NSLog (@ "De gebruiker verleent ons geen toestemming voor toegang tot zijn Twitter-account (s)."); ]; 

Conclusie

Dit was niet de kortste tutorial, maar je moet nu goed begrijpen hoe je het Twitter-framework kunt gebruiken in je eigen applicaties. Dankzij de integratie van Twitter in het besturingssysteem sinds iOS 5 is het verbazingwekkend eenvoudig en eenvoudig om met de API van Twitter te praten.

Als u de gebruiker alleen van tijd tot tijd een tweet wilt laten sturen, is alles nog eenvoudiger. TWTweetComposeViewController biedt alle benodigde infrastructuur om die taak elegant aan te kunnen.