Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a...
-
Upload
emil-sparks -
Category
Documents
-
view
217 -
download
1
Transcript of Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a...
![Page 1: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/1.jpg)
Additional Topics
![Page 2: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/2.jpg)
API Bindings
![Page 3: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/3.jpg)
Bindings
• Binding Native API’s
• Create Binding Project• Drop Jar or .a• Done
![Page 4: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/4.jpg)
You wish!
Painful
![Page 5: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/5.jpg)
Bindings Android
• Generate C# stubs from Java Classes• Simple Jar’s work without issues
• XML transforms for differences in C# / Java:– Anonymous inner classes– Data Type Mapping– Enums
• Samples available• Did I say it’s painful already?
![Page 6: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/6.jpg)
Bindings iOS
• Have to define all Classes / Methods manually• ObjectiveSharpie command line tool– Great help– Still a lot of manual work
• linkwith.cs file requires manual adaption– C Libraries– iOS Frameworks
• Errors appear when linking
![Page 7: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/7.jpg)
Let’s have a look
Urban Airship binding (MyWorldVision)
![Page 8: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/8.jpg)
Bindings Conclusion
• Many API’s are already available, maintained by main developer (Facebook, Microsoft etc.)
• Try to avoid bindings if other Components / Packages are available (-> e.g. Parse)
• Read error messages• Use Xamarin Forums, Stackoverflow• Be patient!
![Page 9: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/9.jpg)
SQLite
Crossplattform DB
![Page 10: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/10.jpg)
Data Model
public class TodoItem { public TodoItem () { }
[PrimaryKey, AutoIncrement] public int ID { get; set; } public string Name { get; set; } public string Notes { get; set; } public bool Done { get; set; } }
![Page 11: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/11.jpg)
Get Connection (Dependency Service)
public interface ISQLite { SQLiteConnection GetConnection(); }
![Page 12: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/12.jpg)
Android Implementation
public SQLite.SQLiteConnection GetConnection () { var sqliteFilename = "TodoSQLite.db3"; string documentsPath = System.Environment.GetFolderPath
(System.Environment.SpecialFolder.Personal); // Documents folder var path = Path.Combine(documentsPath, sqliteFilename); // Create the connection var conn = new SQLite.SQLiteConnection(path); // Return the database connection return conn; }}
![Page 13: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/13.jpg)
Usage
Init:database = DependencyService.Get<ISQLite> ().GetConnection ();database.CreateTable<TodoItem>();
SQL Query:return database.Query<TodoItem> ("SELECT * FROM [TodoItem] WHERE [Done] = 0");
![Page 14: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/14.jpg)
Usage
LINQ Expressions:TodoItem GetItem (int id){ return database.Table<TodoItem> ().FirstOrDefault (x => x.ID == id); }
return database.Delete<TodoItem> (id);
![Page 15: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/15.jpg)
Let’s have a look
SQLite Demo App
![Page 16: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/16.jpg)
JSON.Net
Jason!
![Page 17: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/17.jpg)
Decisions, decisions
System.Json vs Json.Net-> Use Json.Net unless you have a good reason
-> Less restrictive
![Page 18: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/18.jpg)
Basic example
var todoItem = new TodoItem {ID = 1,Name = "Name”
};
var json = JsonConvert.SerializeObject (todoItem);Debug.WriteLine ("JSON representation of todoItem: {0}", json);
var person2 = JsonConvert.DeserializeObject<TodoItem> (json);Debug.WriteLine ("{0} - {1}", person2.ID, person2.Name);
![Page 19: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/19.jpg)
Linq example
string jsontext = @"{ Name: 'Bob', HairColor: 'Brown' }";var bob = JObject.Parse (jsontext);
Debug.WriteLine ("{0} with {1} hair", bob["Name"], bob["HairColor"]);
![Page 20: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/20.jpg)
Let’s have a quick look
JSON Example
![Page 21: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/21.jpg)
UI Tests
Testcloud
![Page 22: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/22.jpg)
TestCloud
Physical devices mounted in Rack
![Page 23: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/23.jpg)
![Page 24: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/24.jpg)
UI Test
• For all native Apps• Physical devices mounted in Rack• Run locally in Simulator (iOS, Android)• Deploy to Cloud for mass testing• 60 Device Minutes included
• More is a bit expensive
![Page 25: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/25.jpg)
UI Test – how it works
• iOS: e.NativeView.AccessibilityIdentifier = value;• Android: e.NativeView.ContentDescription = value;
[Test]public void WelcomeTextIsDisplayed () {
AppResult[] results = app.WaitForElement (c => c.Marked ("Welcome to Xamarin Forms!"));app.Screenshot ("Welcome screen.");
Assert.IsTrue (results.Any ());}
![Page 26: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/26.jpg)
Tests
Let’s have a look (Local App)
![Page 27: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/27.jpg)
Tests
Let’s have a look (testcloud.xamarin.com)
![Page 28: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/28.jpg)
Insights
Analytics & Crash Reports made easy
![Page 29: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/29.jpg)
![Page 30: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/30.jpg)
Usage
• Import Package• Register API Key• Done
![Page 31: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/31.jpg)
Hold your horses…
• Uncaught Exceptions get reported automatically
• Exception Reporting for caught exceptions:Insights.Report(ex);
• User Identification• Events• Timed Events
![Page 32: Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.](https://reader035.fdocuments.in/reader035/viewer/2022062422/56649eae5503460f94bb53d7/html5/thumbnails/32.jpg)
Insights
• https://xamarin.com/insights
• https://developer.xamarin.com/guides/cross-platform/insights/application/