Çevrimdışı çalışabilen tuval uygulamaları geliştirmeDevelop offline-capable canvas apps

Mobil kullanıcılar genellikle gerekir üretken olmak bile ne zaman sınırlı veya bağlantı yok.Mobile users often need to be productive even when they have limited or no connectivity. Tuval uygulaması oluşturduğunuzda, bu görevleri gerçekleştirebilirsiniz:When you build a canvas app, you can perform these tasks:

  • PowerApps Mobile'ı açın ve uygulamaları çevrimdışıyken çalıştırabilirsiniz.Open PowerApps Mobile and run apps when offline.
  • Connection sinyal nesnesini kullanarak bir uygulamanın ne zaman çevrimdışı ve ne zaman çevrimiçi olduğunu veya ne zaman ölçülen bağlantı kullandığını belirleyebilirsiniz.Determine when an app is offline, online, or in a metered connection by using the Connection signal object.
  • Çevrimdışıyken temel veri depolaması için koleksiyonları kullanabilir ve LoadData ve SaveData gibi işlevlerden yararlanabilirsiniz.Use collections and leverage functions such as LoadData and SaveData for basic data storage when offline.

SınırlamalarıLimitations

LoadData ve SaveData yerel cihazda küçük miktarlarda veri depolamak için basit bir mekanizma oluşturacak şekilde birleştirin.LoadData and SaveData combine to form a simple mechanism to store small amounts of data on a local device. Bu işlevleri kullanarak uygulamanıza çevrimdışı basit özellikleri ekleyebilirsiniz.By using these functions, you can add simple offline capabilities to your app.

Bunlar bir bellek içi koleksiyonunda çalışır çünkü bu işlevler kullanılabilir uygulama bellek miktarı ile sınırlıdır.These functions are limited by the amount of available app memory because they operate on an in-memory collection. Kullanılabilir bellek, cihaz, işletim sistemi, PowerApps Mobile'ı kullanan bellek ve ekranları ve denetimleri açısından uygulama karmaşıklığına bağlı olarak değişebilir.Available memory can vary depending on the device, the operating system, the memory that PowerApps Mobile uses, and the complexity of the app in terms of screens and controls. Verilerinizin birkaç taneden fazla megabayt depolayacak olursanız, uygulamanız üzerinde çalışmaya beklediğiniz cihazlarda beklenen senaryoları ile test edin.If you store more than a few megabytes of data, test your app with expected scenarios on the devices on which you expect it to run. Genellikle 30-70 MB kullanılabilir bellek gerekir.You'll generally have 30-70 megabytes of available memory.

Bir cihaz çevrimiçi olduğunda işlevleri de otomatik olarak birleştirme çakışmaları yok.The functions also don't automatically resolve merge conflicts when a device comes online. Hangi veriler kaydedilir ve yeniden işlemek nasıl kadar Oluşturucu ifadeleri yazarken bir yapılandırmadır.Configuration on what data is saved and how to handle reconnection is up to the maker when writing expressions.

Çevrimdışı özellikleri güncelleştirmeleri, bu konuya dönün ve abone PowerApps blogu.For updates on offline capabilities, return to this topic, and subscribe to the PowerApps blog.

Genel BakışOverview

Çevrimdışı senaryolar tasarlarken, uygulamalarınızın verilerle nasıl çalıştığını düşünün.When you design offline scenarios, you should first consider how your apps work with data. PowerApps ile uygulama öncelikli olarak veri kümesi aracılığıyla erişim Bağlayıcılar , SharePoint, Office 365 ve Common Data Service gibi bir platform sağlar.Apps in PowerApps primarily access data through a set of connectors that the platform provides, such as SharePoint, Office 365, and Common Data Service. Ayrıca, uygulamaların bir RESTful uç noktası sağlayan herhangi bir hizmete erişmesine olanak sağlayan özel bağlayıcılar da oluşturabilirsiniz.You can also build custom connectors that enable apps to access any service that provides a RESTful endpoint. Bu bir Web API'si veya Azure İşlevleri gibi bir hizmet olabilir.This could be a Web API or a service such as Azure Functions. Söz konusu bağlayıcıların tümü İnternet üzerinden HTTPS kullanır ve bu, kullanıcılarınızın verilere ve bir hizmetin sunduğu diğer özelliklere erişebilmek için çevrimiçi olması gerektiği anlamına gelir.All these connectors use HTTPS over the Internet, which means your users must be online for them to access data and any other capabilities that a service offers.

Bağlayıcı içeren PowerApps uygulaması

Çevrimdışı verileri işlemeHandling offline data

Powerapps'te, filtreleyebilir, arama, sıralama, toplama ve veri kaynağını bağımsız olarak tutarlı bir şekilde verilerini işleme.In PowerApps, you can filter, search, sort, aggregate, and manipulate data in a consistent way regardless of the data source. Aralık uygulamadaki bellek içi koleksiyonlardan SharePoint listelerine SQL veritabanlarına ve Common Data Service kaynakları.Sources range from in-memory collections in the app to SharePoint lists to SQL databases and Common Data Service. Bu tutarlılık nedeniyle kolayca farklı bir veri kaynağı kullanmak için uygulamaları hedefleyebilirsiniz.Because of this consistency, you can easily retarget an app to use a different data source. Daha da önemlisi çevrimdışı senaryolar için yerel koleksiyonlar için veri yönetimi için bir uygulamanın mantığında neredeyse hiçbir değişiklik yapmadan kullanabilirsiniz.More importantly for offline scenarios, you can use local collections for data management with almost no changes to an app's logic. Aslında, yerel koleksiyonlar, çevrimdışı veriler işlemeye yönelik birincil mekanizmadır.In fact, local collections are the primary mechanism for handling offline data.

Çevrimdışı uygulama oluşturmaBuild an offline app

Uygulama geliştirmenin çevrimdışı görünüşlerine odağı tutmak için bu konuda Twitter odaklı basit bir senaryo gösterilmektedir.To keep the focus on the offline aspects of app development, this topic illustrates a simple scenario focused around Twitter. Twitter gönderileri okumanıza ve tweet çevrimdışıyken göndermek sağlayan bir uygulama oluşturacaksınız.You'll build an app that enables you to read Twitter posts and submit tweets while being offline. Söz konusu uygulama çevrimiçi olduğunda tweetleri gönderir ve yerel verileri yeniden yükler.When the app comes online, the app posts tweets and reloads the local data.

Yüksek düzeyde, uygulama bu görevleri gerçekleştirir:At a high level, the app performs these tasks:

  • Kullanıcı uygulamayı açtığında:When the user opens the app:

    • Cihaz çevrimiçiyse uygulama Twitter bağlayıcısı aracılığıyla verileri getirir ve bir koleksiyonu bu verilerle doldurur.If the device is online, the app fetches data through the Twitter connector and populates a collection with that data.
    • Cihaz çevrimdışı ise uygulama verileri bir yerel önbellek dosyasından kullanarak yükler LoadData işlevi.If the device is offline, the app loads the data from a local cache file by using the LoadData function.
    • Kullanıcının tweet gönderebilir.The user can submit tweets. Uygulama çevrimiçiyse tweetleri doğrudan Twitter'a gönderir ve yerel önbelleği yeniler.If the app is online, it posts the tweets directly to Twitter and refreshes the local cache.
  • Uygulama çevrimiçi durumdayken her beş dakikada:Every five minutes while the app is online:

    • Uygulamayı yerel önbellek üzerinde tüm tweetleri gönderir.The app posts any tweets in the local cache.
    • Uygulama yerel önbelleği yeniler ve kullanarak kaydeder SaveData işlevi.The app refreshes the local cache and saves it by using the SaveData function.

1. adım: Boş bir telefon uygulaması için twitter EkleStep 1: Add Twitter to a blank phone app

  1. PowerApps Studio içinde seçin dosya > yeni.In PowerApps Studio, select File > New.
  2. Boş uygulama kutucuğunda Telefon düzeni'ni seçin.On the Blank app tile, select Phone layout.
  3. Görünüm sekmesinde Veri kaynakları’nı seçin.On the View tab, select Data sources.
  4. İçinde veri bölmesinde veri kaynağı Ekle.In the Data pane, select Add data source.
  5. Seçin yeni bağlantı > Twitter > oluşturma.Select New Connection > Twitter > Create.
  6. Kimlik bilgilerinizi girin, bağlantı oluşturun ve ardından kapatın veri bölmesi.Enter your credentials, create the connection, and then close the Data pane.

2. adım: Mevcut tweetleri ToplaStep 2: Collect existing tweets

  1. İçinde ağaç görünümü bölmesinde uygulamave ardından kendi OnStart özelliği şu formül olarak ayarlayın:In the Tree view pane, select App, and then set its OnStart property to this formula:

    If( Connection.Connected;
        ClearCollect( LocalTweets; Twitter.SearchTweet( "PowerApps"; {maxResults: 10} ) );;
            Set( statusText; "Online data" );
        LoadData( LocalTweets; "LocalTweets"; true );;
            Set( statusText; "Local data" )
    );;
    SaveData( LocalTweets; "LocalTweets" );;
    

    Tweetleri yüklemeye yönelik formülFormula to load tweets

  2. İçinde ağaç görünümü bölmesinde üç nokta menüsünü seçin uygulama nesnesi ve ardından çalıştırma OnStart bu formülü çalıştırın.In the Tree view pane, select the ellipsis menu for the App object, and then select Run OnStart to run that formula.

    Tweetleri yüklemeye yönelik formül çalıştırınRun formula to load tweets

    Not

    LoadData ve SaveData işlevler bir hata gösterebilir PowerApps Studio tarayıcılar bunları desteklenmediği.The LoadData and SaveData functions might show an error in PowerApps Studio because browsers don't support them. Bu uygulama bir cihaza dağıttıktan sonra ancak bunlar normal olarak gerçekleştirir.However, they'll perform normally after you deploy this app to a device.

Bu formül, cihazın çevrimiçi olup olmadığını denetler:This formula checks whether the device is online:

  • Cihaz çevrimiçiyse formülü "PowerApps" arama terimini içeren 10 adede kadar tweet yükler bir LocalTweets koleksiyonu.If the device is online, the formula loads up to 10 tweets with the search term "PowerApps" into a LocalTweets collection.
  • Cihaz çevrimdışıysa, formül yerel önbellek varsa "LocalTweets" adlı bir dosyadan yükler.If the device is offline, the formula loads the local cache from a file called "LocalTweets" if it's available.
  1. Üzerinde Ekle sekmesinde galeri > boş esnek yükseklik.On the Insert tab, select Gallery > Blank flexible height.

  2. Ayarlama öğeleri özelliği galeri denetimini LocalTweets.Set the Items property of the Gallery control to LocalTweets.

  3. Galeri şablonu içinde üç ekleyin etiket denetimleri ve kümesi metin özelliği şu değerlerden biri olarak her bir etiketin:In the gallery template, add three Label controls, and set the Text property of each label to one of these values:

    • ThisItem.UserDetails.FullName & " (@" & ThisItem.UserDetails.UserName & ")"
    • Text(DateTimeValue(ThisItem.CreatedAtIso); DateTimeFormat.ShortDateTime)
    • ThisItem.TweetText
  4. Metin Galerisi bu örneğe benzeyecek şekilde içindeki son etiket kalın yapar.Make the text in the last label bold so that the gallery resembles this example.

    Örnek tweetleri gösteren galeriGallery showing sample tweets

4. Adım: Bağlantı durumu gösterStep 4: Show connection status

  1. Galeri altında bir etiket ekleyin ve ardından kendi renk özelliğini kırmızı.Under the gallery, insert a label, and then set its Color property to Red.

  2. En Yeni etiketin metin özelliği şu formül olarak ayarlayın:Set the newest label's Text property to this formula:

    If( Connection.Connected; "Connected"; "Offline" )

Bu formül, cihazın çevrimiçi olup olmadığını belirler.This formula determines whether the device is online. Eğer ise, etiket bağlı; Aksi takdirde, bu gösterir çevrimdışı.If it is, the label shows Connected; otherwise, it shows Offline.

5. Adım: Bir kutu tweetler oluşturmak için EkleStep 5: Add a box to compose tweets

  1. Bağlantı durumu etiketi altında Ekle bir metin girişi denetlemek ve adlandırın Newtweettextınput.Under the connection-status label, insert a Text input control, and rename it NewTweetTextInput.

  2. Metin girişi kutunun ayarlamak varsayılan özelliğini "".Set the text-input box's Default property to "".

    Durum bilgisi ve metin girişi kutusunu üzerinden GalerisiGallery over status info and text-input box

6. adım: Tweet göndermek için bir düğme ekleyinStep 6: Add a button to post the tweet

  1. Metin girişi kutusu altında ekleme bir düğmesi denetleyin ve ayarlayın, metin özelliğini şu değer:Under the text-input box, add a Button control, and set its Text property to this value:

    "Tweet"

  2. Düğmenin ayarlamak OnSelect özelliği şu formül olarak ayarlayın:Set the button's OnSelect property to this formula:

    If( Connection.Connected;
        Twitter.Tweet( ""; {tweetText: NewTweetTextInput.Text} );
        Collect( LocalTweetsToPost; {tweetText: NewTweetTextInput.Text} );;
            SaveData( LocalTweetsToPost; "LocalTweetsToPost" )
    );;
    Reset( NewTweetTextInput );;
    
  3. İçinde OnStart özelliği uygulama, formülün sonuna bir satır ekleyin:In the OnStart property for the App, add a line at the end of the formula:

    If( Connection.Connected;
        ClearCollect( LocalTweets; Twitter.SearchTweet( "PowerApps"; {maxResults: 100} ) );;
            Set( statusText; "Online data" );
        LoadData( LocalTweets; "LocalTweets"; true );;
            Set( statusText; "Local data" )
    );;
    SaveData( LocalTweets; "LocalTweets" );;
    LoadData( LocalTweetsToPost; "LocalTweetsToPost"; true );;  // added line
    

    Açıklamalı olmayan satır içeren tweetleri yüklemeye yönelik formül çalıştırınRun formula to load tweets with uncommented line

Bu formül, cihazın çevrimiçi olup olmadığını belirler:This formula determines whether the device is online:

  • Cihaz çevrimiçiyse hemen tweeti gönderir.If the device is online, it posts the tweet immediately.
  • Cihaz çevrimdışıysa tweeti yakalar. bir LocalTweetsToPost koleksiyonu ve cihaza kaydeder.If the device is offline, it captures the tweet in a LocalTweetsToPost collection and saves it to the device.

Ardından formül, metin girişi kutusundaki metni sıfırlar.Then the formula resets the text in the text-input box.

7. adım: Yeni tweetleri denetleStep 7: Check for new tweets

  1. Ekle düğmesine sağ tarafında bir Zamanlayıcı denetimi.On the right side of the button, add a Timer control.

    Son uygulamalarıFinal apps

  2. Zamanlayıcının süresi özelliğini 300000.Set the timer's Duration property to 300000.

  3. Zamanlayıcının AutoStart ve yineleyin özelliklerine true.Set the timer's AutoStart and Repeat properties to true.

  4. Zamanlayıcının OnTimerEnd şu formül olarak ayarlayın:Set the timer's OnTimerEnd to this formula:

    If( Connection.Connected;
        ForAll( LocalTweetsToPost; Twitter.Tweet( ""; {tweetText: tweetText} ) );;
        Clear( LocalTweetsToPost );;
        ClearCollect( LocalTweets; Twitter.SearchTweet( "PowerApps"; {maxResults: 10} ) );;
        SaveData( LocalTweets; "LocalTweets" );;
    )
    

Bu formül, cihazın çevrimiçi olup olmadığını belirler.This formula determines whether the device is online. İse, uygulama tüm öğeleri tweet LocalTweetsToPost koleksiyonu ve ardından koleksiyonu temizler.If it is, the app tweets all the items in the LocalTweetsToPost collection and then clears the collection.

Uygulamayı test etmeTest the app

  1. Internet'e bağlı bir mobil cihazda uygulamayı açın.Open the app on a mobile device that's connected to the Internet.

    Mevcut tweetleri galeride görünür ve durumu gösterilir bağlı.Existing tweets appear in the gallery, and the status shows Connected.

  2. Cihaz, cihazın uçak modu etkinleştirme ve devre dışı wi-fi Internet'ten bağlantısını kesin.Disconnect the device from the Internet by enabling the device's airplane mode and disabling wi-fi.

    Uygulama olduğunu durum etiketi gösterilir çevrimdışı.The status label shows that the app is Offline.

  3. Cihaz çevrimdışı olsa da, içeren bir tweet yazın PowerAppsve ardından Tweet düğmesi.While the device is offline, write a tweet that includes PowerApps, and then select the Tweet button.

    Yerel olarak depolanan bir tweet LocalTweetsToPost koleksiyonu.The tweet is stored locally in the LocalTweetsToPost collection.

  4. İnternet'e bir cihazı yeniden bağlama cihazın uçak modu devre dışı bırakma ve wi-fi etkinleştirme.Reconnect the device to the Internet by disabling the device's airplane mode and enabling wi-fi.

    Beş dakika içinde uygulama galeride görünen tweet gönderir.Within five minutes, the app posts the tweet, which appears in the gallery.

Bu makalenin size PowerApps'in çevrimdışı uygulama oluşturma özelliklerine ilişkin bir fikir verdiğini umuyoruz.We hope this article gives you an idea of the capabilities that PowerApps has for building offline apps. Her zaman olduğu gibi, forumumuzda geri bildirim sağlamanızı ve çevrimdışı uygulama örneklerinizi PowerApps topluluk blogunda paylaşmanızı rica ederiz.As always, please provide feedback in our forum and share your examples of offline apps in the PowerApps community blog.