portaldacalheta.pt
  • Põhiline
  • Planeerimine Ja Prognoosimine
  • Elustiil
  • Ux Disain
  • Finantsprotsessid
Tagumine Ots

Kuidas teha Androidi ja iOS-i rakendust Macis C # -ga



Kunagi oli üks ettevõte, kellel olid kõik parimad tööriistad, ja nende platvormile tarkvara kirjutamine oli vinge. Kuid aeglaselt muutusid nad oma probleemide suhtes ükskõikseks. Nad ei muretsenud, kui nende süsteemid kokku kukkusid, vaid aktsepteerisid seda universumi seisundit kui elutõde. Nad uskusid, et nende programmid on endas täiuslikud, rahulikud ja elegantsed, nende eesmärk on enesestmõistetav.

Oh poiss, kui nad vaid teaksid, kui valesti nad olid ...



See oli juba hiljaks jäänud, kui nad said aru oma vigadest ja nende tegevjuht nuttis tuua kõik arendajad tagasi kes lahkusid oma perroonilt ja sõitis minema. Seltskond oli Microsoft ja mina olin kindlalt veendunud, et nende saatus on pitseeritud ja nad hukkuvad aeglaselt, kuid kindlalt tehnoloogiamaastiku esirinnast.



Olen nii õnnelik, et eksisin!



Viimastel aastatel on Microsoft paar ässa varrukast tõmmanud. Jah, nad ajasid Skype'i sassi (ma vihkan neid siiani selle eest), ebaõnnestusid nutitelefonidega ja tahvelarvutitega said peaaegu hakkama. Kuid nad tegid ka tõeliselt hämmastavaid asju. Loobudes oma suletud impeeriumi lähenemisviisist, avasid nad .NET-i, liitusid Linux Foundationiga, vabastasid Linuxi jaoks mõeldud SQL Serveri ja lõid selle suurepärase uue tööriista Visual Studio Macile .

See on õige, a päris Microsofti IDE mitte Windowsi, vaid Maci jaoks. Kujuta ette!



Visual Studio Macile

Esimese platvormiülese Androidi ja iOS-i rakenduse kirjutamine Maci C # abil

Visual Studio for Maci abil saate luua peaaegu igat tüüpi rakenduse. See võib olla iOS, tvOS, Android, Mac, .NET Core või isegi ASP.NET. Kuna kõik lahedad lapsed kirjutavad nüüd mobiilirakendusi, näeme, mida on vaja Visual Studio for Macis, et luua Androidis ja iOS-is töötav C # rakendus.



Esimene asi, mida peate tegema, on valida rakenduse mall. Alustame lihtsast rakendusest „Single View”.

Ühe vaate rakendus.



Pärast paketi nime täitmist ja rakenduse alglaadimist loob Visual Studio kolme projektiga lahenduse. Esimene projekt on jagatud teek, kus peaksite hoidma platvormist sõltumatut koodi, ja ülejäänud kaks on Androidi ja iOS-i rakendused.

milleks Adobe xd-d kasutatakse

Alustamine.



Rakenduse käivitamiseks võite kasutada menüüd „Käivita” või rakenduse ribal olevaid käske.

Tere maailm, klõpsake mind!



Kaks klõpsu logimine.

Palju õnne! Olete nüüd iOS-i ja Androidi arendaja, hoolimata sellest, et te pole kunagi kirjutanud rida Objective-C, Swift ega Java koode.

Kuigi me pole oma rakendusega veel palju saavutanud. Teeme asjad huvitavamaks ja kaasame kaardid ja asukohateenused.

Kaartide ja asukohateenuste kasutamine

Pidage meeles, et Maci VS on endiselt eelvaates ja selle kasutamisel pole palju abi ja dokumente. Parim koht viidete tegemiseks on endiselt Xamarini ametlik dokumentatsioon.

Visual Studio for Mac ei kasuta sama lahendust ja rakendusstruktuuri nagu Xamarini tööriistad, mida võite arvutis näha. Enamikul juhtudel peate nende näidete toimimiseks katsetama ja tegelema väheste takistustega. Loodame, et Microsoft püsib oma mängu tipus ja pakub suurepärast MSDN-i ressursside kogu, kui VS for Mac on välja antud.

Praeguse asukoha kuvamine iOS-is

Mobiilseadmete ressurssidele, näiteks praegusele asukohale juurdepääsemiseks peavad kasutajad nende ressursside kasutamiseks teie rakendusele „käsitsi” õigused andma. iOS kasutab faili info.plist nende seadete salvestamiseks. VS for Mac pakub visuaalset liidest selle faili redigeerimiseks. Esimene asi, mida peame tegema, on lisama väärtus seadele nimega NSLocationWhenInUseUsageDescription

Asukoha väärtuse lisamine kasutuskirjelduses.

Märge: VS kuvab atribuudi nime määramisel pika nime 'NSLocationWhenInUseUsageDescription' jaoks. See on eeldatav ja ärge muretsege selle pärast.

Meie alglaaditud rakendus loodi lihtsa nupuga, mis loendas klikke. Esimene asi, mida soovite teha, on selle eemaldamine ja ekraani sisu asendamine kaardiga. Selleks otsige Main.storyboard fail lahenduse brauseris ja topeltklõpsake seda redaktoris avamiseks.

Süžeeskeem on rakenduse kasutajaliidese visuaalne esitus, mis näitab sisu ekraane ja seoseid nende ekraanide vahel. Süžeeskeem koosneb stseenide järjestusest, millest igaüks esindab vaate kontrollerit ja selle vaateid; stseenid on ühendatud segueobjektidega, mis tähistavad üleminekut kahe vaatekontrolleri vahel.

Süžeeskeeme tutvustab Apple ja võtab kasutusele ka Xamarin. Viitama Apple'i dokumentatsioon või Xamarini dokumentatsioon rohkem informatsiooni.

Eemaldage nupp ja lisage lehele kaartvaate komponent.

Ionic 2 vs Ionic 1

Eemalda kaardivaate komponent.

Nimetage oma mapView komponent õigesti.

Kaardivaate komponendi nimetamine

Nüüd on jäänud vaid oma ViewController.cs koristamine faili ja muutke ViewDidLoad() meetod sobitada järgmisega:

using CoreLocation; public override void ViewDidLoad() { base.ViewDidLoad(); // Perform any additional setup after loading the view, typically from a nib. CLLocationManager locationManager = new CLLocationManager(); locationManager.RequestWhenInUseAuthorization(); mapView.ShowsUserLocation = true; }

Funktsiooni „Kiirparandus” saate kasutada, kui VS lisab CoreLocationi teeki automaatselt viite või saate selle käsitsi lisada.

Pärast iOS-i rakenduse käivitamist peaksite nägema oma asukohale juurdepääsu taotlust. Kui luba on antud, laaditakse teie kaardile tavaline sinine punkt, mis näitab teie asukohta (või kus te võltsite, kasutades iOS-i simulaatorit :)).

Luba rakenduses asukohakasutus.

Kuvatakse praegune asukoht Androidis

Kahjuks otsustasid Google ja Microsoft muuta selle lihtsa ülesande natuke keerulisemaks kui iOS-i puhul. Kaartide kasutamiseks Android-rakenduses peate looma Google Mapsi API-võtme ja lisama selle oma AndroidManifest.xml faili.

Xamarini kutid lõid selle jaoks üsna sirgjoonelise juhendi Google Mapsi API võtme hankimine . Enne jätkamist järgige nende juhendis olevaid samme. Kui olete lõpetanud, kuvatakse teie AndroidManifest.xml peaks sisaldama sellist seadet:

Xamarin.Forms.Maps

Nüüd olete valmis rakendusse kaardi lisama.

Maci jaoks mõeldud VS-i suurepärane asi on see, et seda töötab NuGet, nagu ka tema suur vend. Kuna kaardikaarditeegid pole vaikimisi kaasatud, peate installima LinearLayout pakend.

Installige Xamarin.Forms.Maps

Siiski pole ühtegi kaardivaate komponenti, mille saaksite lihtsalt oma tegevusse lohistada. Selle asemel nõuab kaardi lisamine ekraanile faili Ressursid-> paigutus-> Main.axml käsitsi muutmist. Disainerivaate abil saate kustutada varem loodud nupu, kuid seejärel minna üle koodivaadele ja lisada oma AndroidManifest.xml -i järgmine fragmentkood:

MainActivity.cs

Nagu iOS-i puhul, peate oma rakenduse konfigureerima õigete lubade küsimiseks. Selleks avage using Android.Gms.Maps.Model; using Android.Gms.Maps; using Android.Locations; Make your MainActivity also a ILocationListener. public class MainActivity : Activity, ILocationListener Implement the ILocationListener methods within your MainActivity: public void OnProviderEnabled(string provider) {} public void OnProviderDisabled(string provider) {} public void OnStatusChanged(string provider, Availability status, Bundle extras) {} public void OnLocationChanged(Android.Locations.Location location) { LatLng latLng = new LatLng(location.Latitude, location.Longitude); CameraPosition.Builder builder = CameraPosition.InvokeBuilder(); builder.Target(latLng); builder.Zoom(15); builder.Bearing(155); builder.Tilt(10); CameraPosition cameraPosition = builder.Build(); CameraUpdate cameraUpdate = CameraUpdateFactory.NewCameraPosition(cameraPosition); MapFragment mapFrag = (MapFragment)FragmentManager.FindFragmentById(Resource.Id.map); GoogleMap map = mapFrag.Map; if (map != null) { map.MoveCamera(cameraUpdate); } } redigeerimiseks ja klõpsake redaktori vasakus alanurgas nuppu „Rakendus”. VS näitab teile visuaalset liidest nende väärtuste määramiseks. Seal on mõned neist, mida peate lubama, nagu allpool näidatud.

Lubade lubamine.

Nüüd on aeg kirjutada reaalne kood. Leidke LocationManager locMgr; string locationProvider; fail, avage see redigeerimiseks ja tehke järgmised muudatused:

Lisage nimeruumi viited:

python lisab objektile atribuudi
OnCreate()

Lisage järgmised kaks muutujat klassitaseme muutujatena:

protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the 'main' layout resource SetContentView(Resource.Layout.Main); locMgr = GetSystemService(LocationService) as LocationManager; Criteria locationCriteria = new Criteria(); locationCriteria.Accuracy = Accuracy.Coarse; locationCriteria.PowerRequirement = Power.Medium; locationProvider = locMgr.GetBestProvider(locationCriteria, true); locMgr.RequestLocationUpdates(locationProvider, 2000, 1, this); }

Ja puhastage OnCreate() meetod välja nägema selline:

MainActivity

Helistades saidile ILocationListener GetSystemService meetod, teie RestClient.cs aktiveeritakse kui using System; using System.Net; namespace testshared { public delegate void callback(string responseText); class ReqState { public ReqState(HttpWebRequest req, callback cb) { request = req; callback = cb; } public HttpWebRequest request { get; set; } public callback callback; } public class RestClient { public RestClient() {} public void FetchPage(string url, callback cb) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.BeginGetResponse(new AsyncCallback(FinishWebRequest), new ReqState(request, cb)); } private void FinishWebRequest(IAsyncResult result) { ReqState reqState = (result.AsyncState as ReqState); HttpWebResponse response = reqState.request.EndGetResponse(result) as HttpWebResponse; using (var reader = new System.IO.StreamReader(response.GetResponseStream())) { string responseText = reader.ReadToEnd(); reqState.callback(responseText); } } } } ja saab seeläbi hakkama kõigi eespool loetletud sündmustega.

Käivitage oma Android-rakendus ja peaksite kaardi paigutama oma asukohale sarnaselt järgmisele pildile.

Kaart asub Sarajevos.

kuidas krediitkaardi numbrit murda

Jagatud raamatukogude kasutamine iOS-i ja Android-i jaoks

VS for Maci üks suurimaid omadusi on iOS-i ja Androidi rakenduste vahel jagatud koodi olemasolu. Ideaalis võiks meil olla kogu rakenduse äriloogika jagatud teegis, piirates mis tahes iOS-i ja Androidi spetsiifilist koodi kasutajaliidese osaks olemisega.

Loome jagatud klassi, mis täidab asünkroonselt HTTP-päringut ja näitab sisu silumiskonsoolis.

Looge oma jagatud teeki uus klassifail nimega ViewController.cs järgmise koodiga:

(Kasutage oma projektis kindlasti õiget nimeruumi)

using System; using UIKit; using System.Diagnostics; namespace testshared.iOS { public partial class ViewController : UIViewController { RestClient rest = new RestClient(); public ViewController(IntPtr handle) : base(handle) {} public override void ViewDidLoad() { base.ViewDidLoad(); // Perform any additional setup after loading the view, typically from a nib. Button.AccessibilityIdentifier = 'myButton'; Button.TouchUpInside += delegate { Button.SetTitle('Loading...', UIControlState.Normal); rest.FetchPage('http://www.google.com', doneCallback); }; } public void doneCallback(string content) { InvokeOnMainThread(() => { Debug.Write(content); Button.SetTitle('All Done', UIControlState.Normal); }); } public override void DidReceiveMemoryWarning() { base.DidReceiveMemoryWarning(); // Release any cached data, images, etc that aren't in use. } } }

Teegi kasutamine iOS-is

Muutke oma MainActivity.cs fail iOS-i projektis, et see vastaks järgmisele koodile:

(Kasutage oma projektis kindlasti õiget nimeruumi)

using Android.App; using Android.Widget; using Android.OS; namespace testshared.Droid { [Activity(Label = 'testshared', MainLauncher = true, Icon = '@mipmap/icon')] public class MainActivity : Activity { RestClient rest = new RestClient(); protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the 'main' layout resource SetContentView(Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it Button button = FindViewById(Resource.Id.myButton); button.Click += delegate { button.Text = $'Loading...'; rest.FetchPage('http://www.google.com', doneCallback); }; } public void doneCallback(string content) { RunOnUiThread(() => { Button button = FindViewById(Resource.Id.myButton); button.Text = 'All done'; System.Diagnostics.Debug.WriteLine(content); }); } } }

Käivitage oma iOS-i rakendus, klõpsake nuppu ja kontrollige Visual Studio vahekaarti „Rakenduse väljund”. See peaks kuvama midagi sellist:

Vahekaart Rakenduse väljund.

Teegi kasutamine Androidis

Androidi rakenduses vajalikud muudatused on väga sarnased iOS-is vajalike muudatustega. Muutke RunOnUiThread fail, mis sobib järgmisega:

(Kasutage oma projektis kindlasti õiget nimeruumi)

InvokeOnMainThread

Märge: Mõlema platvormi, nii Androidi kui ka iOS-i süsteemiarhitektuur nõuab, et kogu kasutajaliidese suhtlus toimuks rakenduse põhilõigus. See tähendab, et mis tahes muudatused kasutajaliidese elementides peaksid toimuma ka peaniidist. Seal on doneCallback() ja

|_+_|
sisse tulema. Kuna HTTP-päringud täideti eraldi lõimes ja
 kutsuti väljapoole põhilõnga, pidime neid meetodeid kasutama, et pääseda juurde nuppudele ja muuta silti.

C # Arendajad võtavad üle Androidi ja iOS-i

Visual Studio for Macil on veel mõned kortsud välja töötada, kuid esimesest vaatamisest olen selle tuleviku üle väga põnevil. Vajadus mobiilirakenduste järele kasvab iga päev ja Visual Studio for Maci abil on Microsoft veelgi lubanud armee suurepärased C # arendajad selle vajaduse täitmiseks.

Swiftil ja Java / JVM-il on nüüd meie mobiilseadmete arenduskeskkondade eest võitlemisel uus ja väga tugev konkurent. Seotud: .NET Core - metsikuks muutumine ja avatud lähtekood. Microsoft, mis teil nii kaua aega võttis ?! Seotud: Noolemängu keel: kui Java ja C # pole piisavalt teravad

Põnev ja liikuv - juhend liikumiskujunduse põhimõtete kohta

Ux Disain

Põnev ja liikuv - juhend liikumiskujunduse põhimõtete kohta
Väikesed andmed, suured võimalused

Väikesed andmed, suured võimalused

Finantsprotsessid

Lemmik Postitused
Serveripoolsete renderdatud Vue.js-rakenduste loomine Nuxt.js-i abil
Serveripoolsete renderdatud Vue.js-rakenduste loomine Nuxt.js-i abil
HTTP-päringute testimine: arendaja ellujäämisriist
HTTP-päringute testimine: arendaja ellujäämisriist
Bridgewateri Ray Dalio: Big Data, masinõppe ja Fintechi vaikne pioneer
Bridgewateri Ray Dalio: Big Data, masinõppe ja Fintechi vaikne pioneer
Magento 2 õpetus: kuidas moodustada terviklikku moodulit
Magento 2 õpetus: kuidas moodustada terviklikku moodulit
Välja tasemel rööbaste vahemälu valideerimine: DSL-i lahendus
Välja tasemel rööbaste vahemälu valideerimine: DSL-i lahendus
 
Sisuka UX-i disaini kunst
Juhend kasutajate tõhusaks kasutuselevõtuks parimate tavade kohta
Juhend kasutajate tõhusaks kasutuselevõtuks parimate tavade kohta
Disainilitsents pole lahendus
Disainilitsents pole lahendus
Liitreaalsuse vs. Virtuaalne reaalsus vs. Segareaalsus: sissejuhatav juhend
Liitreaalsuse vs. Virtuaalne reaalsus vs. Segareaalsus: sissejuhatav juhend
Mis on PMO? Juhend projektijuhtimise kontorisse
Mis on PMO? Juhend projektijuhtimise kontorisse
Lemmik Postitused
  • kui palju sa maksad
  • mis on SQL-i jõudluse häälestamine
  • on ettevõtte juht ja ametnik
  • ar vs vr vs mr
  • c korporatsioon vs korporatsioon
Kategooriad
  • Planeerimine Ja Prognoosimine
  • Elustiil
  • Ux Disain
  • Finantsprotsessid
  • © 2022 | Kõik Õigused Kaitstud

    portaldacalheta.pt