พัฒนาแอปพื้นที่ทำงานสามารถใช้งานแบบออฟไลน์

ผู้ใช้มือถือมักจะต้องทำงานแม้ในเวลาที่มีการเชื่อมต่อที่จำกัดหรือไม่มีเลย เมื่อคุณสร้างแอปพื้นที่ทำงาน คุณสามารถทำงานเหล่านี้ได้:

  • เปิด Power Apps Mobile และเรียกใช้แอปเมื่อออฟไลน์
  • กำหนดว่าแอปเป็นการเชื่อมต่อแบบออฟไลน์ ออนไลน์ หรืออยู่ในแบบคิดค่าบริการตามปริมาณข้อมูล โดยใช้ออบเจกต์สัญญาณ การเชื่อมต่อ
  • ใช้ คอลเลกชัน และใช้ประโยชน์จากฟังก์ชัน LoadData และ SaveData สำหรับที่เก็บข้อมูลพื้นฐานเมื่อออฟไลน์

หมายเหตุ

บทความนี้มีตัวอย่างการใช้ข้อมูล Twitter ตัวอย่างที่เรียบง่ายยิ่งขึ้นซึ่งไม่ต้องการการเชื่อมต่อรวมอยู่ใน การอ้างอิงฟังก์ชัน LoadData และ SaveData

ดูวิดีโอนี้เพื่อเรียนรู้วิธีสร้างแอปพื้นที่ทำงานแบบออฟไลน์ที่เปิดใช้งาน:

ข้อจำกัด

LoadData และ SaveData รวมกันเป็นกลไกง่ายๆ ในการจัดเก็บข้อมูลจำนวนน้อยบนอุปกรณ์ท้องถิ่น ด้วยการใช้ฟังก์ชันเหล่านี้ คุณสามารถเพิ่มความสามารถแบบออฟไลน์ที่เรียบง่ายให้กับแอปของคุณ

ฟังก์ชันเหล่านี้ถูกจำกัดด้วยจำนวนหน่วยความจำแอปที่มีอยู่ เพราะฟังก์ชันทำงานในคอลเลกชันในหน่วยความจำ หน่วยความจำที่ใช้งานได้อาจแตกต่างกันไปขึ้นอยู่กับอุปกรณ์ ระบบปฏิบัติการ หน่วยความจำที่ Power Apps Mobile ใช้ และความซับซ้อนของแอปในแง่ของหน้าจอและการควบคุม หากคุณเก็บข้อมูลมากกว่าสองสามเมกะไบต์ ให้ทดสอบแอปของคุณกับสถานการณ์ที่คาดหวังไว้ในอุปกรณ์ที่คุณคาดหวังให้ทำงาน โดยทั่วไปคุณจะมีหน่วยความจำที่พร้อมใช้ 30-70 เมกะไบต์

ฟังก์ชันนี้จะไม่แก้ไขข้อขัดแย้งในการรวมโดยอัตโนมัติ เมื่ออุปกรณ์ออนไลน์ การกำหนดค่าเกี่ยวกับข้อมูลที่จะบันทึกและวิธีจัดการการเชื่อมต่อใหม่นั้น ขึ้นอยู่กับผู้สร้างเมื่อเขียนนิพจน์

สำหรับการอัปเดตเกี่ยวกับความสามารถแบบออฟไลน์ ให้กลับไปที่หัวข้อ และสมัครรับข้อมูล บล็อก Power Apps

ภาพรวม

เมื่อคุณออกแบบสถานการณ์แบบออฟไลน์ ก่อนอื่นคุณควรพิจารณาว่าแอปทำงานกับข้อมูลอย่างไร แอปใน Power Apps เข้าถึงข้อมูลเป็นหลักผ่านชุดของ ตัวเชื่อมต่อ ที่แพลตฟอร์มจัดให้ เช่น SharePoint, Office 365 และ Microsoft Dataverse คุณยังสามารถสร้างตัวเชื่อมต่อแบบกำหนดเอง ให้แอปสามารถเข้าถึงบริการใดๆ ที่ให้จุดสิ้นสุด RESTful ซึ่งอาจเป็น API ของเว็บหรือบริการ เช่น ฟังก์ชัน Azure ตัวเชื่อมต่อทั้งหมดนี้ใช้ HTTPS ผ่านอินเทอร์เน็ต หมายความว่าผู้ใช้ของคุณต้องออนไลน์เพื่อให้พวกเขาเข้าถึงข้อมูลและความสามารถอื่นที่บริการให้มา

แอป Power Apps ที่มีตัวเชื่อมต่อ

การจัดการข้อมูลแบบออฟไลน์

ใน Power Apps คุณสามารถกรอง ค้นหา เรียงลำดับ รวม และจัดการข้อมูลด้วยวิธีที่สอดคล้องไม่ว่าจะเป็นแหล่งข้อมูลใด แหล่งที่มามีตั้งแต่คอลเลกชันในหน่วยความจำในแอปไปจนถึงรายการที่สร้างโดยใช้ Microsoft Lists ไปจนถึงฐานข้อมูล SQL และ Dataverse เนื่องจากความสอดคล้องนี้ คุณสามารถกำหนดเป้าหมายแอปอีกครั้งเพื่อใช้แหล่งข้อมูลที่แตกต่างกันได้อย่างง่ายดาย และที่สำคัญไปกว่านั้นสำหรับสถานการณ์แบบออฟไลน์ คุณสามารถใช้คอลเลกชันภายในเครื่องเพื่อจัดการข้อมูลโดยแทบจะไม่ได้เปลี่ยนแปลงตรรกะของแอปเลย อันที่จริง คอลเลกชันภายในเครื่องเป็นกลไกหลักสำหรับจัดการข้อมูลแบบออฟไลน์

สร้างแอปแบบออฟไลน์

เพื่อเน้นเรื่องการพัฒนาแอปแบบออฟไลน์ หัวข้อนี้แสดงสถานการณ์ง่ายๆ ที่โฟกัสเกี่ยวกับ Twitter คุณจะสร้างแอปที่ให้คุณสามารถอ่านโพสต์ใน Twitter และส่งทวีตขณะที่ออฟไลน์ได้ เมื่อแอปกลับมาออนไลน์ แอปจะโพสต์ทวีตและโหลดข้อมูลภายในเครื่องใหม่

ในระดับสูง แอปจะทำงานเหล่านี้:

  • เมื่อผู้ใช้เปิดแอป:

    • ถ้าอุปกรณ์ต่อออนไลน์ แอปจะเรียกใช้ข้อมูลผ่านตัวเชื่อมต่อ Twitter โดยตรง และนำเข้าคอลเลกชันด้วยข้อมูลดังกล่าว
    • หากอุปกรณ์ออฟไลน์ แอปจะโหลดข้อมูลจากไฟล์แคชภายในเครื่อง โดยใช้ฟังก์ชัน LoadData
    • ผู้ใช้สามารถส่งทวีต หากแอปออนไลน์ แอปจะโพสต์ทวีตโดยตรงไปที่ Twitter และรีเฟรชแคชภายในเครื่อง
  • ทุกห้านาทีขณะที่แอปออนไลน์:

    • แอปจะโพสต์ทวีตใดๆ ในแคชภายในเครื่อง
    • แอปรีเฟรชแคชภายในเครื่องและบันทึกโดยใช้ฟังก์ชัน SaveData

ขั้นตอนที่ 1: เพิ่ม Twitter ลงในแอปโทรศัพท์เปล่า

  1. สร้าง แอปพื้นที่ทำงานเปล่า ด้วยเค้าโครง โทรศัพท์
  2. บนแท็บ มุมมอง เลือก แหล่งข้อมูล
  3. ในบานหน้าต่าง ข้อมูล เลือก เพิ่มแหล่งข้อมูล
  4. เลือก การเชื่อมต่อใหม่ > Twitter > สร้าง
  5. ป้อนข้อมูลประจำตัวของคุณ สร้างการเชื่อมต่อ แล้วปิดบานหน้าต่าง ข้อมูล

ขั้นตอนที่ 2: รวบรวมทวีตที่มีอยู่

  1. ในบานหน้าต่าง มุมมองทรี ให้เลือก แอป แล้วตั้งค่าคุณสมบัติ OnStart ในสูตรนี้:

    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" );
    

    สูตรที่จะโหลดทวีต

  2. ในบานหน้าต่าง มุมมองทรี เลือกเมนูจุดไข่ปลาสำหรับออบเจ็กต์ แอป แล้วเลือก เรียกใช้ OnStart เพื่อเรียกใช้สูตรนั้น

    เรียกใช้สูตรที่จะโหลดทวีต

    หมายเหตุ

    ฟังก์ชัน LoadData และ SaveData อาจแสดงข้อผิดพลาดใน Power Apps Studio เพราะเบราว์เซอร์ไม่รองรับ อย่างไรก็ตาม จะทำงานได้ตามปกติหลังจากที่คุณปรับใช้แอปนี้กับอุปกรณ์

สูตรนี้จะตรวจสอบว่าอุปกรณ์ออนไลน์หรือไม่:

  • ถ้าอุปกรณ์ออนไลน์ สูตรจะโหลดทวีตสูงสุด 10 รายการที่มีคำค้นหา "PowerApps" ลงในคอลเลกชัน LocalTweets
  • ถ้าอุปกรณ์ออฟไลน์ สูตรจะโหลดแคชภายในเครื่องจากไฟล์ชื่อว่า "LocalTweets" ถ้ามี
  1. บนแท็บ แทรก เลือก แกลเลอรี > ความสูงที่มีความยืดหยุ่นว่าง

  2. ตั้งค่าคุณสมบัติ รายการ ของตัวควบคุม แกลเลอรี เป็น LocalTweets

  3. ในเทมเพลตของแกลเลอรี เพิ่มตัวควบคุม ป้ายชื่อ สามตัวและตั้งค่าคุณสมบัติ ข้อความ ของแต่ละป้ายชื่อให้เป็นหนึ่งในค่าเหล่านี้:

    • ThisItem.UserDetails.FullName & " (@" & ThisItem.UserDetails.UserName & ")"
    • Text(DateTimeValue(ThisItem.CreatedAtIso), DateTimeFormat.ShortDateTime)
    • ThisItem.TweetText
  4. ทำข้อความในป้ายชื่อสุดท้ายเป็นตัวหนา เพื่อให้แกลเลอรีคล้ายกับตัวอย่างนี้

    แกลเลอรีแสดงทวีตตัวอย่าง

ขั้นตอนที่ 4: แสดงสถานะการเชื่อมต่อ

  1. ภายใต้แกลเลอรี ให้ใส่ป้ายชื่อ แล้วตั้งค่าคุณสมบัติ สี เป็น สีแดง

  2. ตั้งค่าคุณสมบัติ ข้อความ ของป้ายชื่อใหม่ล่าสุดให้เป็นสูตรนี้:

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

สูตรนี้จะกำหนดว่าอุปกรณ์ออนไลน์หรือไม่ ถ้าออนไลน์ ป้ายชื่อจะแสดง เชื่อมต่อแล้ว มิฉะนั้นจะแสดง ออฟไลน์

ขั้นตอนที่ 5: เพิ่มกล่องเพื่อเขียนทวีต

  1. ภายใต้ป้ายชื่อสถานะการเชื่อมต่อ ให้ใส่ตัวควบคุม การป้อนข้อความ และเปลี่ยนชื่อเป็น NewTweetTextInput

  2. ตั้งค่าคุณสมบัติ ค่าเริ่มต้น ของกล่องการป้อนข้อความเป็น ""

    สถานะแกลเลอรีเหนือข้อมูลและกล่องการป้อนข้อความ

ขั้นตอนที่ 6: เพิ่มปุ่มเพื่อโพสต์ทวีต

  1. ภายใต้กล่องการป้อนข้อความ ให้เพิ่มตัวควบคุม ปุ่ม และตั้งค่าคุณสมบัติ ข้อความ ให้ค่านี้:

    "Tweet"

  2. ตั้งค่าคุณสมบัติ OnSelect ของปุ่มให้สูตรนี้:

    If( Connection.Connected,
        Twitter.Tweet( "", {tweetText: NewTweetTextInput.Text} ),
        Collect( LocalTweetsToPost, {tweetText: NewTweetTextInput.Text} );
            SaveData( LocalTweetsToPost, "LocalTweetsToPost" )
    );
    Reset( NewTweetTextInput );
    
  3. ในคุณสมบัติ OnStart สำหรับ แอป เพิ่มบรรทัดที่ท้ายสูตร:

    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
    

    เรียกใช้สูตรเพื่อโหลดทวีตด้วยบรรทัดที่ไม่มีข้อคิดเห็น

สูตรนี้จะกำหนดว่าอุปกรณ์ออนไลน์หรือไม่:

  • ถ้าอุปกรณ์ออนไลน์ ระบบจะโพสต์ทวีตโดยอัตโนมัติ
  • ถ้าอุปกรณ์ออฟไลน์ ระบบจะเก็บทวีตในคอลเลกชัน LocalTweetsToPost และบันทึกไปยังอุปกรณ์

จากนั้น สูตรจะรีเซ็ตข้อความในกล่องการป้อนข้อความ

ขั้นตอนที่ 7: ตรวจสอบทวีตใหม่

  1. ที่ด้านขวาของปุ่ม เพิ่มการควบคุม ตัวจับเวลา

    แอปขั้นสุดท้าย

  2. ตั้งค่าคุณสมบัติ ระยะเวลา ของตัวจับเวลาเป็น 300000

  3. ตั้งค่า AutoStart ของตัวจับเวลาและคุณสมบัติ ทำซ้ำ เป็น จริง

  4. ตั้งค่า OnTimerEnd ของตัวจับเวลาให้สูตรนี้:

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

สูตรนี้จะกำหนดว่าอุปกรณ์ออนไลน์หรือไม่ หากเป็นเช่นนั้น แอปจะทวีตรายการทั้งหมดในคอลเลกชัน LocalTweetsToPost แล้วล้างคอลเลกชัน

ทดสอบแอป

  1. เปิดแอปโดยใช้ Power Apps Mobile บนอุปกรณ์มือถือที่เชื่อมต่อกับอินเทอร์เน็ต

    ทวีตที่มีอยู่ปรากฏในแกลเลอรี และสถานะจะแสดง เชื่อมต่อแล้ว

  2. ตัดการเชื่อมต่ออุปกรณ์จากอินเทอร์เน็ตโดยการเปิดใช้งานโหมดใช้งานบนเครื่องบิน และปิดการใช้งาน Wi-Fi

    ป้ายชื่อสถานะแสดงว่าแอปนั้น ออฟไลน์

  3. ในขณะที่อุปกรณ์ออฟไลน์ ให้เขียนทวีตที่มี Power Apps แล้วเลือกปุ่ม ทวีต

    ทวีตจะถูกเก็บไว้ในคอลเลกชัน LocalTweetsToPost ภายในเครื่อง

  4. เชื่อมต่ออุปกรณ์กับอินเทอร์เน็ตอีกครั้งโดยการปิดใช้งานโหมดใช้งานบนเครื่องบิน และเปิดการใช้งาน Wi-Fi

    ภายในห้านาที แอปจะโพสต์ทวีต ซึ่งจะปรากฏในแกลเลอรี

เราหวังว่า บทความนี้จะช่วยให้คุณทราบถึงความสามารถที่ Power Apps มีสำหรับการสร้างแอปแบบออฟไลน์ และเช่นเคย โปรดให้คำติชมใน ฟอรั่ม ของเรา และแชร์ตัวอย่างแอปแบบออฟไลน์ของคุณใน บล็อกชุมชน Power Apps

หมายเหตุ

บอกให้เราทราบเกี่ยวกับภาษาที่คุณต้องการในคู่มือ ทำแบบสำรวจสั้นๆ (โปรดทราบว่าแบบสำรวจนี้เป็นภาษาอังกฤษ)

แบบสำรวจนี้ใช้เวลาทำประมาณเจ็ดนาที ไม่มีการเก็บข้อมูลส่วนบุคคล (คำชี้แจงสิทธิ์ส่วนบุคคล)