Tworzenie aplikacji na WP. Blog dotyczący.net oraz WP.



Podobne dokumenty
POLITECHNIKA POZNAŃSKA. Oprogramowanie dla telefonów z systemem Windows Phone 8 obsługujących technologię NFC do sprawdzania listy obecności.

Programowanie telefonów z Windows Phone 7, cz. 2

Programowanie telefonów z Windows Phone 7, cz. 4

OpenPoland.net API Documentation

Near Field Communication

POLITYKA PRYWATNOŚCI / PRIVACY POLICY

Programowanie Komputerów

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Installation of EuroCert software for qualified electronic signature

Wykład 6 Dziedziczenie cd., pliki

akademia androida Składowanie danych część VI

Camspot 4.4 Camspot 4.5

1. CZYM JEST SERIALIZACJA

Android, wprowadzenie do SDK

Laboratorium Programowania Kart Elektronicznych

Metody Metody, parametry, zwracanie wartości

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Near Field Communication

INSTRUKCJE JAK AKTYWOWAĆ SWOJE KONTO PAYLUTION

Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Laboratorium 10 - Web Services

Java. Programowanie Obiektowe Mateusz Cicheński

Zarządzanie sieciami telekomunikacyjnymi

SOAP. Autor: Piotr Sobczak

Tworzenie aplikacji w języku Java

Zakopane, plan miasta: Skala ok. 1: = City map (Polish Edition)

Healthix Consent Web-Service Specification

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

HttpRequest Aplikacja Czat

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

Zmiany techniczne wprowadzone w wersji Comarch ERP Altum

Sieciowa komunikacja procesów - XDR i RPC

Logger. Następnie w klasie Bootstrapper muimy zarejestrować nasz nowy logger:

Programowanie obiektowe

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

1. Aplikacja LOGO! App do LOGO! 8 i LOGO! 7

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

SNP SNP Business Partner Data Checker. Prezentacja produktu

Programowanie obiektowe i zdarzeniowe

ARNOLD. EDUKACJA KULTURYSTY (POLSKA WERSJA JEZYKOWA) BY DOUGLAS KENT HALL

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

SNP Business Partner Data Checker. Prezentacja produktu

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

MS Visual Studio 2005 Team Suite - Performance Tool

Zaawansowane aplikacje WWW - laboratorium

Programowanie obiektowe w VB cz 2

METHOD 2 -DIAGNOSTIC OUTSIDE

kdpw_stream Struktura komunikatu: Status komunikatu z danymi uzupełniającymi na potrzeby ARM (auth.ste ) Data utworzenia: r.

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Arrays -II. Arrays. Outline ECE Cal Poly Pomona Electrical & Computer Engineering. Introduction

INSTRUKCJA UŻYTKOWNIKA MPCC

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Comarch e-sklep Sync. wersja

Konfiguracja połączenia VPN w systemie Windows 7 z serwerem rozgrywki wieloosobowej gry Medal Of Honor: Wojna na Pacyfiku: Pacyfik.

Programowanie obiektowe i zdarzeniowe

ESDI. WebService. Wersja 1.2. Strona 1

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

Zestaw ikon ilustrujących odpowiednie kategorie informacji Interoperacyjność. Nazwa przedsiębiorcy. Połączenie internetowe. Ograniczenia geograficzne

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Application Layer Functionality and Protocols

Szybki tutorial o zabezpieczeniach w NFC

Architektura komunikacji

Wykład 4: Klasy i Metody

MVC w praktyce tworzymy system artykułów. cz. 1

Klasy i obiekty cz II

Obsługa SMS i telefonii

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

Programowanie wielowarstwowe i komponentowe

Jerzy Kosiński Wyższa Szkoła Policji w Szczytnie

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Szkolenie Microsoft Lync Aplikacja Lync Web App

Website review radcowie.biz

User s manual for icarwash

Co jeszcze mogą nam dać adnotacje? Adam Warski

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

CPX Cisco Partner Excellence CSPP program partnerski

Twitter Status. plugin dla Joomla! 1.5. wersja 1.1

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Website review pureorganic.pl

Pomoc do programu konfiguracyjnego RFID-CS27-Reader User Guide of setup software RFID-CS27-Reader

Na przykładzie języków Java, C# i odrobiny C++ Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Systemy mobilne. Laboratorium. Dostęp do danych GPS w Windows Phone 7

public enum Environment { Development("Deweloperskie"), Test("Testowe"), Production("Produkcyjne"); private String name;

Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu)

Hard-Margin Support Vector Machines

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Microsoft IT Academy kurs programowania

BPS Zmiany w SDK i API. Data utworzenia: Data modyfikacji: :31:51

How to share data from SQL database table to the OPC Server? Jak udostępnić dane z tabeli bazy SQL do serwera OPC? samouczek ANT.

Shared memory and messages. Functions. process 0. process 1. program 0. program 0. data 0. data 1. program 1. data 0. data 1.

1. Pobierz darmową aplikację BlueStacks ze strony

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Transkrypt:

= =

Tworzenie aplikacji na WP. Blog dotyczący.net oraz WP. Kursy Walut: - 30k ściągnięć, - 1k ocen, - średnia ocena 4,5, - 3 miejsce w rankingu najczęściej pobieranych płatnych aplikacji. Ponad 300k ściągnięć aplikacji.

W 2015 roku już 42,3% platności mobilnych odbywać się będzie przy pomocy technologii NFC.

NFC (Near Field Communication) jest to komunikacja bezprzewodowa niewielkiego zasięgu. Umożwia ona przenoszenie informacji między telefonem, a innym urządzeniem NFC (telefon, tag, urządzenia płatnicze). Tagi NFC małe, pasywne urządzenia z zaprogramowanymi informacjami.

Typ sieci Peer-to-peer Point-to-multipoint Zasięg < 0,1 m 10 m (max 100 m) Tryb Aktywny / Pasywny Aktywny Prędkość 424 kbit/s 40 Mbit/s Bezpieczeństwo Wysokie Dobre Czas nawiązywania połączenia <0,1 s <6 s

Najczęściej NFC w telefonie jest wykorzystywane do parowania urządzeń, przesyłania danych pomiędzy urządzeniami oraz odczytywania danych zapisanych na tagach NFC.

Zobaczmy jak to działa

Coś co mogło być wielkim sukcesem, a wyszło jak zwykle. W Polsce ta funkcjonalność nie działa pomimo, że jest promowana.

Ultralight (UL) 48 41 39 Typ 2 Ultralight C (ULC) 148 132 130 Typ 2 NTAG203 144 132 130 Typ 2 MiFare 1K 1024 256 709 Classic (1) DESFire EV1 2k 2048 Typ 4 DESFire EV1 4k 4096 Typ 4 DESFire EV1 8k 8192 Typ 4 Sony FeliCa 4K 4096 Typ 3 Sony FeliCa Lite 224 Typ 3 Topaz 512 Typ 1 Telefony z WP wspierają tagi sformatowane w standardzie NDEF (NFC Data Exchange Format). Należy o tym pamiętać przy ich kupnie.

Zapis z hasłem Zapis Tylko odczyt Windows Phone 8 jest w stanie odczytać każdy z tych tagów. W przypadku zapisu nie ma możliwości zabezpieczenia taga przed zmianą. Zaleca się zamówić od razu odpowiednio zaprogramowany i zabezpieczony pakiet tagów ze sklepu.

Brak możliwości zabezpieczenia przed zapisem tagów. Brak możliwości sformatowania tagów do NDEF. Aby działały z naszym telefonem należy kupić sformatowane tagi lub użyć urządzania wspierającego formatowanie (np. Android). W przypadku uszkodzenia taga też nie jesteśmy w stanie go naprawić. Tagi mogą zawierać tylko wiadomość w formacie NDEF. Brak możliwości użycia całej dostępnej pamięci taga znaczniki, korekcja błędów, API nie wspiera zapisywania wiadomości w formacie NDEF domyślnie. Możemy to zrobić przygotowując wiadomość w formacie binarnym lub posłużyć się zewnętrzną biblioteką. Urządzenie domyślnie nie jest w stanie odczytać wszystkich wiadomości zapisanych na tagu. System wspiera odczyt tylko pierwszej wiadomości. Dodatkowe mogą być odczytane za pomocą własnej aplikacji. Nie ma możliwości odczytania taga przez aplikację działającą w tle.

Udostępnij zdjęcie

CameraCaptureTask cameracapturetask = new CameraCaptureTask(); cameracapturetask.completed +=(senderobject, photoresult) => { if (photoresult.taskresult == TaskResult.OK) { ShareMediaTask sharemediatask = new ShareMediaTask(); sharemediatask.filepath = photoresult.originalfilename; sharemediatask.show(); } }; cameracapturetask.show();

Wykrywanie urządzenia NFC

Należy wskazać funkcjonalności, które nasza aplikacja będzie wykorzystywać NFC to IP_CAP_PROXIMITY. Często od razu można włączyć IP_CAP_NETWORKING. Należy określić wymagania, które ma spełniać telefon ID_REQ_NFC. Telefony bez NFC nie będą widziały tej aplikacji w Windows Store.

ProximityDevice proximitydevice = ProximityDevice.GetDefault(); if (proximitydevice!= null) { // Urządzenie ma moduł NFC proximitydevice.devicearrived += proximitydevice_devicearrived; proximitydevice.devicedeparted += proximitydevice_devicedeparted; } else { // Brak modułu NFC }

Odczyt taga NFC

ProximityDevice proximitydevice = ProximityDevice.GetDefault(); if (proximitydevice!= null) { long subscribedmessageid = proximitydevice.subscribeformessage("writeabletag", Handler); } void Handler(ProximityDevice device, ProximityMessage message) { int writablesize = BitConverter.ToInt32(message.Data.ToArray(), 0); this.showmessage("messagetype: " + message.messagetype + "\n" + "DataAsString:" + message.dataasstring + "\n" + "SubscriptionId: " + message.subscriptionid + "\n" + "Size of tag: " + writablesize + "\n"); } proximitydevice.stopsubscribingformessage(subscribedmessageid);

The message contains binary data. The message data contains an URI (UTF-16LE encoded string). No subtype. The message data is of a specific MIME type. For example, if the message data is a JPEG image, the message type is WindowsMime.image/jpeg. Same as the Windows protocol, except that the content is intended to be written to a static tag. The message is not transmitted to any device except a writable static tag. This protocol is only valid for publications. Same as the WindowsUri protocol, except that the content is intended to be written to a static tag. The message is not transmitted to any device except a writable static tag. This protocol is only valid for publications. No subtype. Write a tag that can be used to launch a specific app with optional launch parameters. If you publish a LaunchApp:WriteTag message to a tag the result when that tag is tapped to a computer is the same as calling the PeerFinder.Start method and passing your launch parameters. When subscribing for this message protocol, if a writable tag is brought in to proximity, a proximity message is received that contains an int32 (little endian) indicating the maximum writable size of the tag. This protocol is only valid for subscriptions. The message contents are properly formatted NDEF records. The underlying type of the content for a publication using NDEF as the message type is contained in the NDEF records. A subscription for the NDEF type subscribes to all NDEF formatted messages. The message data is application defined NDEF records (TNF field value of 0x04). This protocol only applies to subscriptions; when publishing NDEF content, use NDEF. The message data is a properly formatted NDEF mime message (TNF field value of 0x02). For example,ndef:mime.image/jpeg. This protocol only applies to subscriptions; when publishing NDEF content, use NDEF. The message data is a properly formatted NDEF message of a type defined by a URI namespace (TNF field value of 0x03).This protocol only applies to subscriptions; when publishing NDEF content, use NDEF. This means that the data format is identified by the specified URI. The message data is a properly formatted NDEF message of a type defined by the NFC forum (TNF field value of 0x01).An example of this type isndef:wkt.u for the well known type of URI. This protocol only applies to subscriptions; when publishing NDEF content, use NDEF. The message data should be written to an NFC forum standard static tag. The message data must be in a proper NDEF format. This protocol is only valid for publications. The message data is an untyped NDEF message (TNF field value of 0x05).This protocol only applies to subscriptions; when publishing NDEF content, use NDEF.

Publikacja taga NFC

this.proximitydevice.publishmessage("windows.samplemessage", "Hello World", Handler); this.proximitydevice.publishurimessage(new System.Uri("http://www.onet.pl", Handler); this.proximitydevice.publishbinarymessage("windows:writetag.mysubtype", Encoding.Unicode.GetBytes("Hello World").AsBuffer(), Handler); Uri uri = new Uri("http://www.wp.pl"); byte[] buffer = Encoding.Unicode.GetBytes(uri.ToString()); proximitydevice.publishbinarymessage("windowsuri:writetag", buffer.asbuffer(), Handler); private void Handler(ProximityDevice sender, long messageid) { this.proximitydevice.stoppublishingmessage(messageid); this.showmessage("wysłano / Zapisano!"); }

this.subscribedmessageid = this.proximitydevice.subscribeformessage( "Windows.mySubType", Handler2); private void Handler2(ProximityDevice device, ProximityMessage message) { this.proximitydevice.stopsubscribingformessage( this.subscribedmessageid); } byte[] buf = message.data.toarray(); this.showmessage("messagetype: " + message.messagetype + "\n" +"Data:"+Encoding.Unicode.GetString(buf, 0, buf.length)+"\n" + "SubscriptionId: " + message.subscriptionid + "\n");

Uruchomienie aplikacji

Uri uri = new Uri("ms-drive-to:? destination.latitude=52.199506& destination.longitude=21.041737& destination.name=4developers"); byte[] buffer = Encoding.Unicode.GetBytes(uri.ToString()); proximitydevice.publishbinarymessage("windowsuri:writetag", buffer.asbuffer(), MessageTransmittedHandler);

Launches the web browser and navigates to the specified URL. Launches the email app and creates a new message with the specified email address on the To line. Note that the email is not sent until the user taps send. Launches the Account Settings app. Launches the Airplane Mode Settings app. Launches the Bluetooth Settings app. Launches the Cellular Settings app. Launches the email and accounts settings app. Launches the Location Settings app. Launches the Lock Screen settings app. Launches the Wi-Fi Settings app. Launches the Windows Phone Store and shows the details page for the specified app. Launches the Store and shows the review page for the calling app. Launches the Store and shows the review page for the specified app. Note that you must prepend app to the ID for the specified app. For example, the URI for reviewing an app with the ID fdf05477-814e-41d4-86cd-25d5a50ab2d8 would be zune:reviewapp?appid=appfdf05477-814e- 41d4-86cd-25d5a50ab2d8 Launches the Store and searches for apps by keyword. Launches the Store and searches for items by publisher name.

Dodanie obsługi własnego protokołu do aplikacji

... </Tokens> <Extensions> <Protocol Name="developers" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" /> </Extensions> <ScreenResolutions>...

class AssociationUriMapper : UriMapperBase { private string tempuri; public override Uri MapUri(Uri uri) { this.tempuri = System.Net.HttpUtility.UrlDecode(uri.ToString()); if (this.tempuri.contains("developers:mainpage?param=")) { int categoryindex = this.tempuri.indexof("param=") + 6; string param = this.tempuri.substring(categoryindex); return new Uri("/MainPage.xaml?Param=" + param, UriKind.Relative); } // Zwykłe uruchomienie naszej aplikacji return uri; } } // Trzeba dodać go do App.cs: RootFrame = new PhoneApplicationFrame(); RootFrame.UriMapper = new AssociationUriMapper();

// Odczyt parametru: protected override void OnNavigatedTo(NavigationEventArgs e) { if (NavigationContext.QueryString.ContainsKey("Param")) { this.showmessage(navigationcontext.querystring["param"]); } base.onnavigatedto(e); } // Zapis to już znamy: Uri uri = new Uri("developers:MainPage?Param=HelloWorld"); byte[] buffer = Encoding.Unicode.GetBytes(uri.ToString()); proximitydevice.publishbinarymessage("windowsuri:writetag", buffer.asbuffer(), MessageTransmittedHandler);

Wadą jest dość duży rozmiar zajmowany przez dane na tagu. Jednakże instaluje ścisle wybraną aplikację.

Wiadomość typu NDEF

Standard zapisu wiadomości na urządzeniach wykorzystujących NFC do komunikacji. Specyfikacja dostępna na: http://www.nfc-forum.org/specs/spec_list/ Windows Phone potrafi domyślnie odczytać tylko pierwszy rekord z wiadomości. Pozostałe rekordy mogą być odczytane przez dodatkowe programy.

Windows Phone pozwala na zapis wiadomości w formacie NDEF, ale w formacie binarnym. Zanim zapiszemy wiadomość musimy sami ją przygotować. Alternatywnie można użyć biblioteki: NDEF Library (http://ndef.codeplex.com/).

// Zapis: NdefUriRecord urirecord = new NdefUriRecord { Uri = "http://4developers.org.pl"}; NdefMessage message = new NdefMessage { urirecord }; ProximityDevice.GetDefault().PublishBinaryMessage("NDEF:WriteTag", message.tobytearray().asbuffer(), MessageTransmittedHandler); // Odczyt ProximityDevice.GetDefault().SubscribeForMessage("NDEF", MesReceivedHan); void MesReceivedHan (ProximityDevice sender, ProximityMessage message) { byte[] rawmsg = message.data.toarray(); var ndefmessage = NdefMessage.FromByteArray(rawMsg); foreach (NdefRecord record in ndefmessage) { if (NdefUriRecord.IsRecordType(record)) { var urirecord = new NdefUriRecord(record); ShowMessage("URI: " + urirecord.uri); } }

Automatyczne nawiązywanie połączenia

// Rozpoczęcie konfiguracji połączenia PeerFinder.TriggeredConnectionStateChanged += OnTriggeredConnectionStateChanged; PeerFinder.AllowBluetooth = true; PeerFinder.AllowWiFiDirect = true; PeerFinder.Start(); private void OnTriggeredConnectionStateChanged(object sender, TriggeredConnectionStateChangedEventArgs args) { switch (args.state) { case TriggeredConnectState.Listening: // Łączenie jako host break; case TriggeredConnectState.PeerFound: // Zakończono używania NFC - połączenie wykorzystuje Wi-Fi, Bluetooth. // Można odsunąć urządzenia. break; case TriggeredConnectState.Connecting: // Łączenie... break; case TriggeredConnectState.Completed: // Połączenie ustanowiono streamsocket = args.socket; break; case TriggeredConnectState.Canceled: break; case TriggeredConnectState.Failed: // Nastąpił błąd - trzeba jeszcze raz spróbować break;

How to use emulators to develop NFC features on WP8 Proximity for Windows Phone 8 (MSDN) Use NFC tags with Windows Phone 8 (Nokia) NDEF Library for Proximity APIs (NFC)

< >