Creating til Dating Application: Integrering Sinchi Del Madame 46 Madame Madame Madame Share Leilighet 3
Denne Cyber Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av
Dette innlegget er en del av en serie som heter Opprette en Dating Dating Søknad med søknad til Sinch.Creating med Sinchi. RESTful APISponsored Innhold
Dette sponset post har et produkt som er relevant for våre lesere samtidig møte vår redaksjonelle og pedagogiske saklige retningslinjer for bling.
Dating apps har becomed en av de mer populære sjangrene i App Store nylig. Grunnet theire natur, men å utvikle en fullverdig dating app kan være utfordrende. I den andre delen av denne serien, vil vi se på hvordan vi kan utnytte plattformen Sinchi i en iOS-app for å gjennomføre samtaler og meldinger. Dette er to hjørnesteinen for dating apps og funksjoner er de overraskende lett å implementere med Sinchi.
1. Oversikt
Før vi begynner koding, la oss gå gjennom programmet vi lager. Vår dating app vil ha i de siste kjernefunksjonene som vi vil fokusere på i denne opplæringen. For kontoer, vil brukere kunne logge på via Facebook. Etter signering i, vil de være i stand til å se andre brukere av programmet som er i nærheten.
Brukerne blir lagret på serveren Kommunisere med At vi laget fra RESTful API i den første delen av denne opplæringen. Når vi får brukeren informasjon fra Facebook, er en ny bruker postet til serveren og en økt opprettet. Etter det, vil en liste over registrerte brukere hentes å velge mellom.
Når brukeren finner De ønsker noen å snakke med, vil de kunne for å starte en talemelding eller ringe dem. Dette er wheres Sinchi kommer inn i bildet. Vi vil utnytte theire SDK til å gjøre alt det harde arbeidet med å håndtere samtaler og meldinger.
Nå som vi vet hva vi utvikler, er det på tide å komme i gang.
2. Starter Prosjekt
Start ved å laste ned start prosjektet fra GitHub. Programmet er rettet mot iPhone og den inneholder brukergrensesnittet, Facebook-godkjenning, og kommunikasjon med RESTful API allerede på plass. Dette vil tillate deg å fokusere på å integrere med Sinchi.
Før vi fortsetter, Skjønt, vil jeg gjerne diskutere den grunnleggende arkitekturen i programmet og hvordan den kommuniserer med serveren. Koden kommuniserer med resten Det API UsersAPIClient bor i klassen. Den bruker den populære AFNetworking biblioteket for å forenkle nettverks logikk. AFNetworking Hvis du har brukt før, vil dette ser veldig kjent ut for deg. Hvis du ikke har, er vår veiledning om AFNetworking et utmerket sted å starte.
I topptekstfilen, vil du se noen metoder for å kommunisere med ulike endepunkter av RESTful API, som å opprette en bruker, starter en session, slette en bruker, og mer Anmeldelser - (void) CreateUser: (* Bruker) bruker ferdigstillelse: (void (^) ()) handling; - (void) beginUserSession:. (* Bruker) bruker ferdigstillelse: (void (^) ()) handling; - (void) DeleteUser: (User *) bruker ferdigstillelse: (void (^) ()) handling; - (void) getRegisteredUsersWithMeters: (dobbel) meter ferdigstillelse: (void (^) (NSArray * brukere)) handling;
Når komma svar tilbake fra serveren, og analyseres JSON blir brukt til å klargjøre en modell Madame
Snakker av modeller, er det en modell som brukes i. The Project, bruker. Den inneholder grunnleggende informasjon om en bruker, slik som navn, sted, ID, etc. Bruker-IDen er viktig Spesielt siden vi trenger det for å unikt Identifikasjon whoa vi kommuniserer med Når vi integrerer med Sinchi.
Ta siste par minutter på å bla prosjektet for å få en bedre forståelse av SOI struktur. Akkurat som med tredjeparts biblioteker, er det enormt nyttig å bla dokumentasjon og kildekode Egentlig før du bruker det. Madame
3. Bygg og Run Flat
Hvis du bygge og kjøre demo prosjekt, bør du bli bedt om å logge inn via Facebook.
Gå videre og se om du kan logge inn med Facebook. Når du har logget inn, gjør demo app tre ting: Madame
Det skaper et brukerminne på backend hvis man ikke er til stede
Det Starter Oppretter en bruker session og en tilgang. token for økten.
Det retriever i listen over brukere i systemet. Madame
Senere, når du har gjort i de siste testkontoer, kan du finne brukere innenfor en viss range. Som standard er hver bruker i systemet Returnerte år siden det er usannsynlig andre brukere er i nærheten mens du tester.
4. Opprett en Sinchi konto
Sinchi For å bruke SDK, må du først opprette en utvikler konto. Sinchi Hodet over til nettstedet og klikk Kom i gang For Free i høyre for å registrere deg.
Skriv inn din e-postadresse og passord, og godta vilkårene og betingelsene. Automatisk Sinchi vil starte en installasjonsprosessen til etter du registrerer deg. På dette punktet, er alt du trenger å gjøre navngi app og legge til en kort beskrivelse. Du kan hoppe over resten av veiledningen til å starte nå.
Deretter besøker app dashbordet for å hente din API-nøkkel og hemmelighet. Bør du se oversikten på toppen av Sinchi hjemmeside til etter at du har logget inn med den nye kontoen. Velg Apps til venstre, velg den applikasjonen du opprettet, nøkler og klikk på ikonet til høyre for å vise nøkkelen og hemmelig. Det er lurt å holde styr på disse verdiene for å initialisere senere Sinchi klienten.
Madame
5. Legg Sinchi SDK
Det er to måter å legge den Sinchi SDK til prosjektet. Den enkleste tilnærmingen er langt gjennom CocoaPods. Legg til følgende linje i din Podfile: Hi pod 'SinchService' ~ > 1.0
Deretter kjører du kommandoen å integrere Etter Sinchi SDK inn arbeidsområdet: Hi pod oppdatering
I denne opplæringen, derimot, vil jeg vise deg hvordan du legger til SDK hvis du ikke bruker CocoaPods. Start med å laste ned SDK for iOS Sinchi. Besøk nedlastinger delen av nettsiden Sinchi og laste ned SDK for iOS. Den Sinchi SDK avhenger av tre rammer, slik at vi må knytte vårt prosjekt mot thoses først. I prosjekt Navigator, velge og velge den SinceTutorial SinchTutorial målet
Velg Bygg Phases >.; Link Binary med biblioteker og klikk på pluss-knappen nederst
Etter de rammer Legg til i listen over rammeverk for å knytte kontakter med. Madame
Sikkerhet
AudioToolbox
AVFoundation Madame
Vi må også legge til tre linker flagg. I målets Bygg innstillinger, søk etter Andre Linker Flags
legge til følgende linker flagg henhold Debug:. Hi -ObjC -Xlinker -lc ++
Til slutt drar Sinchi At rammen Tidligere du lastet inn i rammer mappen i prosjekt Navigator. Bygg ditt prosjekt for å sørge for at det ikke er noen feil. Du er nå klar til å begynne å bruke SDK Sinchi.
6. Sette opp Client Sinchi
Sinchi klient er drivkraften ansvarlig for kommunikasjon med Sinchi plattformen. Før vi kan bruke meldinger eller ringefunksjoner, må vi initial en forekomst av Sinchi klienten. For å gjøre dette trenger vi nøkkelen og hemmelige etter Opprette tidligere at vi hentet våre Sinchi konto
Åpne AppDelegate.h og mengden Sinchi rammeverket som vist nedenfor
#import. ≪. Sinchi /Sinchi. h >
Deretter må vi lage en eiendom for klienten Sinchi og en metode for prototype initialisere den. Følger Legg kodebiten nedenfor eiendommen vindu
eiendom (Sterk, nonatomic) og d. ≪ SINClient > kunde, - (void) sinchClientWithUserId: (NSString *) brukerid;
Vi vil bruke dette henvisning til Sinchi klientsamtaler og meldinger for å enkelt komme i gang. Protokollen vil informere deg SINClientDelegate Enten koble med backend Sinchi Var vellykkede
Conform den AppDelegate klassen SINClientDelegate til protokollen som vist nedenfor
Conform til //@ SINClientDelegate grensesnitt AppDelegate: UIResponder < UIApplicationDelegate,.. SINClientDelegate >
Bytt til gjennomføringen av filen klassen og implementere sinchClientWithUserId AppDelegate: metode som vist nedenfor #pragma mark Anmeldelser - Sinch- (void) sinchClientWithUserId: (NSString *) brukerid {if (_client!) {. _client = [Sinchi clientWithApplicationKey @ "< YOUR_APP_KEY >" applicationSecret @ "< YOUR_APP_SECRET >" environmentHost @ "sandbox.sinch.com" brukerid: brukerid]; _client.delegate = selv; [_client setSupportCalling: YES]; [_client setSupportMessaging: YES]; [_client start]; [_client startListeningOnActiveConnection]; }}
Vi vil bruke denne metoden senere for å kommunisere med backend Sinchi Etter at brukeren har logget inn. Husk å gå inn i søknaden nøkkel og hemmelighet. Ellers vil du være Sinchi Kan ikke koble til backend.
Etter Initial kunden, forteller vi Sinchi At vi skal bruke meldinger og ringer funksjoner. Så vi starter klienten og etablere en forbindelse med tjenestene til Sinchi Motta innkommende samtaler
Deretter gjennomføre følgende delegere metoder for protokollen i AppDelegate SINClientDelegate klassen:. Hi - (void) clientDidStart :( d < SINClient >) klient {NSLog (@ "Sinchi klient startet med hell (versjon:% @)" [Sinchi versjon]);} - (void) clientDidFail: (id <) klient feil; SINClient >: NSError *) feil ( {NSLog (@ "Sinchi klient feil:% @" [error localizedDescription]);} - (void) klient: (id < SINClient >) klient logMessage: (NSString *) meldingsfeltet: (NSString *) Areal Alvorlighetsgrad :( SINLogSeverity) Alvorlighetsgrad timestamp: (NSDate *) timestamp {if (Severity == SINLogSeverityCritical) {NSLog (@ "% @" melding); }}
Disse metodene delegat vil logge feil på konsollen Bør Xcode år occure De også informere oss, og når vi har koblet med Sinchi.
7. Initialisering Client Sinchi
Åpne og blar til beginUserSession FindUsersViewController.m metoden. I denne metoden, dersom en økt startet uten feil var fullført blokk blir utført. Dette er et godt tidspunkt å initialisere Sinchi klienten. Erstatte //TODO kommentar med kodeblokken følgende: Hei //Init Sinchi clientAppDelegate * delegat = (AppDelegate *) [[UIApplication sharedApplication] delegat] [delegat sinchClientWithUserId: self.curUser.userID];
Dette kaller metoden for å starte Sinchi klient og lar deg begynne å bruke funksjoner kjønnssykdommer. Bygge og drive programmet. Etter at du har hentet en liste over brukere, forbinder med den Sinchi bekrefte That Was backend vellykkede ved å sjekke loggene i Xcode konsollen.
8. Implementere Meldinger
Vi er nå å få til den morsomme delen, og legger en meldingstjeneste komponent med svært lite kode Sinchi hjelp av SDK. Start med å åpne MessagingViewController.m og mengden Sinchi rammeverket
#import. ≪ Sinchi /Sinch.h >
Mye som SINClientDelegate Det protokollen gir nyttige metoder hjelpe deg å holde styr på kundens status, Holder protokollen SINMessageClientDelegate informert deg om innkommende og utgående meldinger, theire status, og mer
Start med å MessagingViewController klassen forventninger til denne protokollen ved å oppdatere grensesnittet av class.interface
MessagingViewController (). < UITableViewDataSource, UITableViewDataSource , UITextFieldDelegate, SINMessageClientDelegate >
For å gjennomføre messaging, vi trenger også å SINMessageClient eksempel å håndtere ansvaret for meldingstjenester. Legge en eiendom for SINMessageClient eksempel
eiendom (Sterk, nonatomic) og d. ≪ SINMessageClient > sinchMessageClient;
Vi kan opprette en forekomst av en meldingsklient fra klienten Sinchi vi allerede har i app representanten. Når visningen kontrolleren laster, må vi initial én visning og Sett kontrolleren som delegat kjønnssykdommer. Etter Legg inn koden for å blokkere utsikten kontrollerens viewDidLoad metode: Hi //Setup Sinchi melding clientself.sinchMessageClient = [((AppDelegate *) [[UIApplication sharedApplication] delegat]) Client messageClient.]; Self.sinchMessageClient.delegate selv =;
Nå som vi har fått et objekt for å motta og sende meldinger, og en representant til å håndtere dem, la oss legge til kode for å skrive en melding. Finn den Sendmessage: metode nederst i visningen kontrolleren og til følger gjennomføring: Hei [selvtillit dismissKeyboard]; SINOutgoingMessage outgoingMessage * = [SINOutgoingMessage messageWithRecipient: self.selectedUser.userID tekst: self.messageTextField.text] [selv .sinchMessageClient Sendmessage: outgoingMessage];
SINOutgoingMessage Sinchi eksempel vil kontakte og flytte over meldingen til mottakeren. Vi utpeke mottakeren av theire Gir bruker-ID fra brukerens modell. Sinchi vil vite hvor du skal gå med meldingen ved ruting det gjennom theire API ved hjelp av en kombinasjon av søknaden din nøkkel, hemmelig, og den unike id sendes til brukeren det.
Siden en melding kan være enten innkommende eller utgående, legge en enum på toppen av visningen kontrolleren til å gjøre rede for enten scenario. Legg det under import uttalelser
typedef NS_ENUM (int, messageDirection) {Innkommende, Utgående};.
Til slutt vil vi trenge meldingsklienten Egentlig å behandle og sende meldingen. I denne visningen kontrolleren, må vi håndtere sende BEGGE Flat og mottak av meldinger. Legg inn følgende kode for å motta en melding: Hei #pragma mark SINMessageClient //Motta en innkommende message.- (void) messageClient: (id < SINMessageClient >) messageClient didReceiveIncomingMessage: (id < SINMessage >) melding {NSLog (@ "fikk en melding"); [self.messages addObject @ [melding, @ (innkommende)]]; [self.tableView reloadData];} Når vi mottar en melding, vi vil legge det til meldinger matrise og laste tabellvisningen for å vise det. Det er viktig å merke seg at objektet er SINMessage Består av to elementer, meldingen objektet selv og sin retning (innkommende eller utgående). Nå som vi kan motta og sende meldinger, må vi vite når du har en melding hvis vi er ferdig med å sende forfatteren at lyden vi kan oppdatere datakilden og legg tabellvisningen. For å oppnå dette, vi implementere messagesent: recipientId: som vist nedenfor Vi kan også gjennomføre noen av de gjenværende delegere metoder for å hjelpe deg med å løse messaging prosessen hvis weve noe å gå galt. Legg til følgende delegere metodene nedenfor den messagesent: recipientId: metode På dette punktet, messaging med Sinchi er klar til bruk Det siste vi trenger å gjøre er å redigere Tableview: cellForRowAtIndexPath: metode for å vise . meldinger Dette er hva gjennomføringen skal se ut: Hei - (UITableViewCell *) Tableview: (UITableView *) Tableview cellForRowAtIndexPath: (NSIndexPath *) indexPath {UITableViewCell * celle; d < SINMessage > beskjed = [self.messages [indexPath .row] firstObject]; messageDirection retnings = (messageDirection) [[self.messages [indexPath.row] lastObject] intValue]; if (retning == Innkommende) celle = {[self.tableView dequeueReusableCellWithIdentifier: CELL_ID_RECIPIENT]; ((* RecipientTableViewCell ) celle) = .message.text message.text;} else {celle = [self.tableView dequeueReusableCellWithIdentifier: CELL_ID_USER]; ((* UsersTableViewCell) celle) = .message.text message.text; } Returner celle;} Bygg og kjør programmet for å sikre at det ikke er noen feil. Du er klar til å teste ut meldingsfunksjonen. Å prøve det ut, vil du ha tilgang til anothe Facebook-konto. På iOS-enheten, bygge og kjøre programmet og logge på med kontoen først. På iOS Simulator, kjøre en annen instans av programmet og logg deg på med den andre kontoen. Naviger til hverandres profil på hver enhet og trykk Message. På dette punktet, kan du skrive inn en melding, og trykk Send. Det kommer på mottakerens enhet nesten umiddelbart. Du er ferdig med å jobbe med å implementere meldingsklient for dating app bruker plattformen Sinchi. Hvis brukeren ikke er online, vil klienten prøve å sende meldingen, vil det ikke komme mål i den andre bruker. I dette tilfellet, kan det være lurt å implementere push-varslinger for å la mottakeren vet theyâ've mottatt en melding. Den siste funksjonen vi skal benytte for Sinchi er VoIP (Voice over IP) ringer. Åpne CallingViewController.m og mengden Sinchi rammer en siste gang Som før, vil vi gjøre bruk av noen protokoller for å håndtere ringer. De SINCallClientDelegate SINCallDelegate protokoller og metoder for å initiere og prowide jeg mottar et anrop, og bli oppdatert på statusen til en samtale. Oppdatere grensesnittet av klassen CallingViewController Begge protokollene å samsvare med det For å implementere IP-telefoni, trenger vi tilgang til klienten samt en Sinchi SINCall objekt. Legge en eiendom for SINCall eksempel som vist nedenfor I viewDidLoad sju visningen kontrolleren som delegat for samtalen Sinchi klient For å forstå bedre neste avsnitt, det hjelper brukerne til å gå gjennom scenarioene vil møte når du bruker ringefunksjonen. En bruker kan være: Madame La oss adressen lage og motta en samtale først. Legg koden til makeOrAcceptCallFromSelectedUser følgende: metode: Hi #pragma mark - Initiere eller Godta Call- (IBAction) makeOAccepetCallFromSelectedUser: (UIButton *) avsender {if ([sender.titleLabel.text isEqualToString @ "Ring"]) { self.sinchCall = [self.delegate.client.callClient callUserWithId: self.selectedUser.userID]; self.sinchCall.delegate = selv; self.lblCallStatus.text = [NSString stringWithFormat @ "- kall til% @ -" self.selectedUser.userName]; self.btnDeny.hidden = NO; [self.btnDeny setTitle: @ "Hang Up" forState: UIControlStateNormal]; } Else {[self.sinchCall besvare]; self.lblCallStatus.text = [NSString stringWithFormat @ "- å snakke med @% -" self.selectedUser.userName]; }} Vi sjekker for å se om vi gjør et anrop eller har en kommer inn. Hvis vi Initiere samtalen, callUserWithId: kalle prosessen vil starte og initialisere sinchCall eiendom Hvis vi svarer på et anrop, sinchCall eiendommen vil bli initialisert og allerede vi begynner ganske enkelt svare på anropet ved å ringe på. det. Deretter vil vi gjennomføre AVSLÅ og henger opp en samtale. Legg koden til rejectOrHangUpCallFromSelectedUser følgende: metode: Hi #pragma mark - Nekt eller Hang Up Call- (IBAction) rejectOrHangUpCallFromSelectedUser: (UIButton *) avsender {[self.sinchCall Legg på]; self.lblCallStatus.text = [NSString stringWithFormat @ "- kaller endte med% @ -" self.selectedUser.userName];} Denne koden er lettere å fordøye, becaus, uansett situasjon, det er håndtert ved å ringe hangup sinchCall på eiendommen. Alt som gjenstår for oss å gjøre, er å gjennomføre de nødvendige delegere metoder. Dette vil være seg en bit av koden, mål det er enkelt å forstå og metodenavn er veldig beskrivende Anmeldelser #pragma Mark - SINCall /klient- (void) klient: (id < SINCallClient >) klient didReceiveIncomingCall:. (Id < SINCall >) {self.sinchCall samtale = ringe; self.sinchCall.delegate = selv; self.lblCallStatus.text = [NSString stringWithFormat @ "- innkommende anrop fra% @ -" self.selectedUser.userName]; [self.btnAcceptOrCall setTitle: @ "Aksepter Call" forState: UIControlStateNormal]; self.btnDeny.hidden = NO;} - (void) callDidEstablish: (". Samtale tilkoblet" @) (id <; SINCall >) samtale {NSLog; self.btnDeny.hidden = NO; [self.btnDeny setTitle: @ "Hang Up" forState: UIControlStateNormal]; self.lblCallStatus.text = @ "- kaller tilkoblet -"; self.btnAcceptOrCall.hidden = JA;} - (void) callDidEnd: (id < SINCall >) call {NSLog (@ "Call ferdig"); self.sinchCall = null; self.lblCallStatus.text = @ "- kaller endte -"; self.btnDeny.hidden = JA; dispatch_after (dispatch_time (DISPATCH_TIME_NOW (int64_t) (1 * NSEC_PER_SEC)) dispatch_get_main_queue () ^ {[self.navigationController popViewControllerAnimated: YES];});} - (void) callDidProgress: (id < SINCall >) call {//I denne metoden kan du spille ringetone ui å oppdatere og visning av samtale fremgang} Den første metoden, didReceiveIncomingCall:., mottak av anrop og håndterer sette opp sinchCall eiendommen. Vi vil også vite Starter når samtalen er over og fra callDidEstablish: Flat og callDidEnd:. Den siste metoden, callDidProgress:, er tom for øyeblikket, ville det være nyttig mål for oppdatering av brukergrensesnittet med nyttig informasjon , slik som varigheten av samtalen. Du kan bruke SINCallDetail og sin eiendom for å enkelt lage establishedTime Det beregningen. Kjør to forekomster av programmet ved hjelp av to Facebook-kontoer som du gjorde før. Naviger til hverandres profil og velg Ring. Hit den grønne ringeknappen på enheten eller i iOS Simulator. Når samtalen er å være Sinchi, oppdaterer brukergrensesnittet for å la brukeren vite samtalen pågår På samme måte, hvis en av brukerne mottar et anrop, brukergrensesnittet vil se slik ut.: Til slutt Når samtalen er i gang, brukergrensesnittet vil gjenspeile tilstanden i samtalen. En knapp merket Hang Up vil være synlig for å avslutte samtalen. I likhet med meldinger, at forsøk på å kalle en bruker er ikke online støttes ikke av appen. Som med meldinger, kan du løse dette ved å bruke push-varslinger for å varsle brukeren om at noen har forsøkt å ringe deg. Det er flere deler av programmet som kan forbedres. Det mest bemerkelsesverdige er integrering av push-varslinger. Sinchi nylig lagt innebygd støtte for push-varslinger til theire iOS SDK Tar byrden av utviklere. Med push-varslinger, kan du varsle brukere som ikke bruker for øyeblikket app har de? At mottatt et anrop eller en melding. En annen nyttig tillegg ville være å lagre meldinger og samtaler på en ekstern backend. På denne måten brukerne kunne gå tilbake i tid og se tidligere samtaler de har hatt. Det gjør også beskjed erfaring mer væske siden theyâ kunne plukke opp en samtale wheres de slapp. Dette er bare noen ideer. Jeg er sikker på at du kan tenke på i de siste få svart Det ville gjøre appen mer engasjerende og fullstendig. Sinchi kraftige SDK gjør to skremmende oppgaver tilnærmelig, enkelt og rimelig. Som du har sett i denne opplæringen, Lar Sinchi utviklere å integrere meldinger og ringer i theire apps i løpet av minutter. Den Sinchi er ikke begrenset til iOS SDK. Hvis programmet har en dating nettside komponent, for eksempel theire Deretter kan du bruke Javascript API for å implementere de samme funksjonene. Hvis du fikk fast langs veien, ikke bekymre deg, kan du finne det ferdige prosjektet på GitHub. Du kan nå ta det du har lært i denne opplæringen og gå lage neste Tinder.
//Finish sende en melding om (void) messagesent: (id < SINMessage >) melding recipientId:. (NSString *) recipientId {NSLog (@ "Ferdig sende en melding "); self.messageTextField.text @ = ""; [self.messages addObject @ [melding, @ (Utgående)]]; [self.tableView reloadData];}
//Kunne ikke sende en melding om (void) messageFailed: (id < SINMessage >) melding info:. (Id < SINMessageFailureInfo >) messageFailureInfo {NSLog (@ " Klarte ikke å sende en melding:% @ " messageFailureInfo.error.localizedDescription);}-(void)messageDelivered:(id<SINMessageDeliveryInfo>)info{ NSLog (@ "meldingen ble levert");} - (void) melding: (id < SINMessage >) beskjed shouldSendPushNotifications:. (NSArray *) pushPairs {NSLog (@ "Container ikke online \\ NShould varsle container bruker push (ikke implementert i ... denne opplæringen) \\ nVennligst å gjenoppbygge dokumentasjon ");}
9. Test Messaging
10. VoIP Calling
#import. ≪ Sinchi /Sinch.h >
grensesnitt CallingViewController (). ≪ SINCallClientDelegate, SINCallDelegate >
eiendom (Sterk, nonatomic) og d. ≪ SINCall > sinchCall;
//overdra denne VC som Sinchi oppfordring delegateself.delegate = (AppDelegate *) [[UIApplication sharedApplication] delegat];. selv. delegate.client.callClient.delegate = selv;
Motta en samtale
gjøre en samtale
henge opp en eksisterende samtale
avvise et innkommende anrop Anmeldelser
11. Test Calling
12. Hvor å gå Neste
Konklusjon