Đối tượng ứng dụng trong Power Apps

Áp dụng cho: Ứng dụng canvas Ứng dụng dựa trên mô hình

Cung cấp thông tin về ứng dụng hiện đang chạy và kiểm soát hành vi của ứng dụng.

Mô tả

Giống như một điều khiển, đối tượng Ứng dụng cung cấp các thuộc tính xác định màn hình nào đang hiển thị và nhắc nhở người dùng lưu các thay đổi để chúng không bị mất. Mỗi ứng dụng có một đối tượng Ứng dụng.

Bạn có thể viết công thức cho một số thuộc tính của Ứng dụng. Ở đầu ngăn Dạng xem cây, chọn đối tượng Ứng dụng như bất kỳ điều khiển hoặc màn hình nào khác. Xem và chỉnh sửa một trong các thuộc tính của đối tượng bằng cách chọn thuộc tính đó trong danh sách thả xuống bên trái của thanh công thức.

Đối tượng Ứng dụng trong khung dạng xem dạng cây.

Thuộc tính ActiveScreen

Thuộc tính ActiveScreen xác định màn hình đang hiển thị.

Thuộc tính này trả về một đối tượng màn hình. Sử dụng nó để tham chiếu các thuộc tính của màn hình hiện đang hiển thị, chẳng hạn như tên có công thức App.ActiveScreen.Name. Bạn cũng có thể so sánh thuộc tính này với một đối tượng màn hình khác, chẳng hạn như với công thức so sánh App.ActiveScreen = Screen2 để kiểm tra if Screen2 là màn hình hiện đang hiển thị.

Sử dụng hàm Back hoặc Navigate để thay đổi màn hình đang hiển thị.

Thuộc tính BackEnabled

Thuộc tính BackEnabled thay đổi cách ứng dụng phản hồi cử chỉ quay lại của thiết bị (vuốt hoặc sử dụng nút quay lại phần cứng trên Android thiết bị, vuốt từ trái sang iOS thiết bị) khi chạy trên Power Apps thiết bị di động. Khi được bật, cử chỉ quay lại của thiết bị sẽ điều hướng trở lại màn hình được hiển thị gần đây nhất, tương tự như công thức Quay lại . Khi bị tắt, cử chỉ quay lại thiết bị sẽ đưa người dùng trở lại danh sách ứng dụng.

Thuộc tính ConfirmExit

Không ai muốn mất những thay đổi chưa được lưu. Sử dụng thuộc tính ConfirmExitConfirmExitMessage để cảnh báo người dùng trước khi họ đóng ứng dụng của bạn.

Lưu ý

  • ConfirmExit không hoạt động trong các ứng dụng được nhúng vào, ví dụ: Power BI và SharePoint.
  • Hiện tại, các thuộc tính này chỉ có thể tham chiếu các điều khiển trên màn hình đầu tiên nếu tính năng xem trước Tải chậm được bật (theo mặc định cho các ứng dụng mới). Nếu tài liệu tham khảo được thực hiện, Power Apps Studio không hiển thị lỗi, nhưng ứng dụng được xuất bản không mở trong Power Apps Mobile hoặc trình duyệt. Chúng tôi đang tích cực làm việc để nâng cao giới hạn này. Trong thời gian chờ đợi, bạn có thể tắt tính năng Tải chậm trong phần Thiết đặt>Các tính năng sắp ra mắt (trong phần Xem trước).

ConfirmExit

ConfirmExit là một thuộc tính Boolean, khi true, mở hộp thoại xác nhận trước khi đóng ứng dụng. Theo mặc định, thuộc tính này là false và không có hộp thoại nào xuất hiện.

Trong trường hợp người dùng có thể chưa lưu các thay đổi trong ứng dụng, hãy sử dụng thuộc tính này để hiển thị hộp thoại xác nhận trước khi thoát khỏi ứng dụng. Sử dụng công thức có thể kiểm tra các biến và thuộc tính điều khiển (ví dụ: thuộc tính Chưa lưu của điều khiển Chỉnh sửa biểu mẫu).

Hộp thoại xác nhận xuất hiện trong mọi tình huống có thể bị mất dữ liệu, như trong các ví dụ sau:

  • Chạy hàm Exit.
  • Nếu ứng dụng đang chạy trong trình duyệt:
    • Đóng trình duyệt hoặc tab trình duyệt mà ứng dụng đang chạy.
    • Chọn nút quay lại của trình duyệt.
    • Chạy hàm Launch với LaunchTarget của Self.
  • Nếu ứng dụng đang chạy trên Power Apps Thiết bị di động (iOS hoặc Android):
    • Vuốt để chuyển sang một ứng dụng khác trong Power Apps Mobile.
    • Chọn nút quay lại trên thiết bị Android.
    • Chạy hàm Launch để khởi chạy một ứng dụng canvas khác.

Giao diện chính xác của hộp thoại xác nhận có thể khác nhau giữa các thiết bị và phiên bản của Power Apps.

Hộp thoại xác nhận không xuất hiện trong Power Apps Studio.

ConfirmExitMessage

Theo mặc định, hộp thoại xác nhận hiển thị một thông báo chung, chẳng hạn như "Bạn có thể có những thay đổi chưa được lưu." trong ngôn ngữ của người dùng.

Sử dụng ConfirmExitMessage để cung cấp một thông điệp tùy chỉnh trong hộp thoại xác nhận. Nếu thuộc tính này là trống, giá trị mặc định được sử dụng. Thông điệp tùy chỉnh được cắt bớt khi cần thiết để vừa trong hộp thoại xác nhận, vì vậy hãy giữ thông điệp ở một vài dòng.

Trong trình duyệt, hộp thoại xác nhận có thể xuất hiện với thông báo chung từ trình duyệt.

Lưu ý

Đối tượng ứng dụng có thêm hai thuộc tính OnMessageBackEnabled đang thử nghiệm. Các thuộc tính này cuối cùng sẽ bị xóa khỏi đối tượng ứng dụng. Bạn không nên sử dụng các thuộc tính này trong môi trường sản xuất của mình.

Ví dụ:

  1. Tạo một ứng dụng có chứa hai điều khiển biểu mẫu, AccountFormContactForm.

  2. Đặt thuộc tính ConfirmExit của đối tượng Ứng dụng cho biểu thức này:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Hộp thoại này xuất hiện nếu người dùng thay đổi dữ liệu ở một trong hai biểu mẫu và sau đó cố gắng đóng ứng dụng mà không lưu các thay đổi đó.

    Hộp thoại xác nhận chung.

  3. Đặt thuộc tính ConfirmExitMessage của Ứng dụng thành công thức này:

    If( AccountsForm.Unsaved,
        "Accounts form has unsaved changes.",
        "Contacts form has unsaved changes."
    )
    

    Hộp thoại này xuất hiện nếu người dùng thay đổi dữ liệu ở biểu mẫu Tài khoản và sau đó cố gắng đóng ứng dụng mà không lưu các thay đổi đó.

    Hộp thoại xác nhận theo mẫu cụ thể.

Khóa thiết bị thiết lập cho Application Insights

Để xuất nhật ký ứng dụng do hệ thống tạo sang Application Insights, bạn cần thiết lập Khóa công cụ cho ứng dụng canvas của mình.

  1. Mở ứng dụng của bạn để chỉnh sửa trong Power Apps Studio.
  2. Chọn đối tượng Ứng dụng trong chế độ xem dạng cây điều hướng bên trái.
  3. Nhập Khóa thiết bị trong khung thuộc tính.

Nếu dữ liệu không được gửi đến Thông tin chi tiết về ứng dụng, hãy liên hệ với Power Platform quản trị viên của bạn và xác minh xem Thông tin chi tiết về ứng dụng có bị tắt ở cấp độ đối tượng thuê hay không.

Thuộc tính công thức

Sử dụng các công thức đã đặt tên, trong thuộc tính Formulas, để xác định một công thức có thể được sử dụng lại trong ứng dụng của bạn.

Trong Power Apps, các thuộc tính kiểm soát được điều khiển bởi các công thức. Ví dụ: để đặt màu nền nhất quán trên một ứng dụng, bạn có thể đặt thuộc tính Fill cho mỗi thuộc tính thành một công thức chung:

Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )

Với rất nhiều nơi mà công thức này có thể xuất hiện, việc cập nhật tất cả chúng nếu cần thay đổi trở nên tẻ nhạt và dễ xảy ra lỗi. Thay vào đó, bạn có thể tạo một biến toàn cầu trong OnStart để đặt màu một lần, sau đó sử dụng lại giá trị đó trong toàn bộ ứng dụng:

App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

Mặc dù phương pháp này tốt hơn nhưng nó cũng phụ thuộc vào việc OnStart chạy trước khi giá trị cho BGColor được thiết lập. BGColor cũng có thể được thao tác ở một số góc của ứng dụng mà nhà sản xuất không biết, một thay đổi do người khác thực hiện và điều đó có thể khó theo dõi.

Các công thức được đặt tên cung cấp một giải pháp thay thế. Giống như chúng ta thường viết control-property = expression, thay vào đó, chúng ta có thể viết name = expression rồi sử dụng lại name trong toàn bộ ứng dụng của chúng tôi để thay thế expression. Định nghĩa của các công thức này được thực hiện trong thuộc tính Formulas:

App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

Những lợi thế của việc sử dụng các công thức được đặt tên bao gồm:

  • Giá trị của công thức luôn có sẵn. Không có sự phụ thuộc về thời gian, không có OnStart phải chạy trước khi giá trị được đặt, không có thời gian mà giá trị của công thức không chính xác. Các công thức được đặt tên có thể tham chiếu đến nhau theo bất kỳ thứ tự nào, miễn là chúng không tạo tham chiếu vòng. Chúng có thể được tính song song.
  • Giá trị của công thức luôn được cập nhật. Công thức có thể thực hiện một phép tính phụ thuộc vào các thuộc tính điều khiển hoặc bản ghi cơ sở dữ liệu và khi chúng thay đổi, giá trị của công thức sẽ tự động cập nhật. Bạn không cần phải cập nhật giá trị theo cách thủ công như với một biến. Và các công thức chỉ tính toán lại khi cần thiết.
  • Định nghĩa của công thức là bất biến. Định nghĩa trong Công thức là nguồn thông tin chính xác duy nhất và không thể thay đổi giá trị ở bất kỳ nơi nào khác trong ứng dụng. Với các biến, có thể một số mã bất ngờ thay đổi giá trị, nhưng điều này không thể xảy ra với các công thức được đặt tên.
  • Tính toán của công thức có thể được hoãn lại. Bởi vì giá trị của nó là bất biến nên nó luôn có thể được tính khi cần, điều đó có nghĩa là nó không cần phải tính cho đến khi cần. Các giá trị công thức không được sử dụng cho đến khi screen2 của ứng dụng được hiển thị thì không cần tính cho đến khi screen2 hiển thị. Trì hoãn công việc này có thể cải thiện thời gian tải ứng dụng. Các công thức được đặt tên mang tính khai báo và tạo cơ hội cho hệ thống tối ưu hóa cách thức và thời điểm chúng được tính toán.
  • Công thức được đặt tên là một khái niệm Excel. Power Fx sử dụng các khái niệm Excel nếu có thể vì rất nhiều người biết rõ về Excel. Công thức được đặt tên tương đương với ô được đặt tên và công thức được đặt tên trong Excel, được quản lý bằng Trình quản lý tên. Chúng tự động tính toán lại như một bảng tính, giống như các thuộc tính điều khiển.

Các công thức đã đặt tên được xác định lần lượt trong thuộc tính Formulas, mỗi công thức kết thúc bằng dấu chấm phẩy. Loại của công thức được suy ra từ các loại của biểu thức, dựa trên các loại thành phần trong biểu thức và cách chúng được sử dụng cùng nhau. Ví dụ: các công thức được đặt tên này truy xuất thông tin hữu ích về người dùng hiện tại từ Dataverse:

UserEmail = User().Email;
UserInfo = LookUp( Users, 'Primary Email' = User().Email );
UserTitle = UserInfo.Title;
UserPhone = Switch( UserInfo.'Preferred Phone', 
                    'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
                    UserInfo.'Main Phone' );

Nếu công thức cho UserTitle cần được cập nhật, bạn có thể thực hiện dễ dàng tại một địa điểm này. Nếu UserPhone không cần thiết trong ứng dụng, thì những cuộc gọi đến bảng Người dùng trong Dataverse sẽ không được tạo. Không có hình phạt nào đối với việc bao gồm một định nghĩa công thức không được sử dụng.

Một số hạn chế của công thức được đặt tên:

  • Không thể sử dụng chúng cho các chức năng hành vi hoặc gây ra tác dụng phụ trong ứng dụng.
  • Chúng không thể tạo tham chiếu vòng. Không được phép có a = b; trong b = a; trong cùng một ứng dụng.

Thuộc tính OnError

Sử dụng OnError để thực hiện hành động sau khi phát hiện lỗi. Nó cung cấp một cơ hội toàn cầu để chặn một biểu ngữ lỗi trước khi nó được hiển thị cho người dùng cuối. Nó cũng có thể được sử dụng để ghi lại lỗi bằng hàm Trace hoặc ghi vào cơ sở dữ liệu hoặc dịch vụ web.

Kết quả của mọi đánh giá công thức được kiểm tra lỗi. Nếu đó là lỗi, thì OnError sẽ được đánh giá bằng cùng các biến phạm vi FirstErrorAllErrors sẽ xuất hiện nếu toàn bộ công thức được gói trong một hàm IfError.

Nếu OnError trống, biểu ngữ lỗi mặc định sẽ hiển thị với FirstError.Message của lỗi. Việc xác định công thức OnError sẽ ghi đè hành vi này, cho phép người tạo xử lý báo cáo lỗi khi họ thấy phù hợp. Hành vi mặc định có thể được yêu cầu trong OnError bằng cách viết lại lỗi bằng hàm Error. Điều này hữu ích nếu một số lỗi được lọc ra hoặc xử lý theo một cách khác, trong khi những lỗi khác sẽ được chuyển qua.

OnError không thể thay thế lỗi trong phép tính theo cách mà IfError có thể. Tại thời điểm OnError được gọi, lỗi đã xảy ra và nó đã được xử lý thông qua tính toán công thức. * OnError* chỉ kiểm soát báo cáo lỗi.

Các công thức OnError được đánh giá đồng thời và có thể việc đánh giá của chúng trùng lặp với quá trình xử lý các lỗi khác. Ví dụ: nếu bạn đặt một biến toàn cục ở đầu OnError và đọc biến đó sau này trong cùng một công thức, thì giá trị có thể đã thay đổi. Sử dụng hàm With để tạo một giá trị được đặt tên cục bộ cho công thức.

Mặc dù mỗi lỗi được xử lý riêng lẻ bởi OnError, biểu ngữ lỗi mặc định có thể không xuất hiện cho từng lỗi riêng lẻ. Để tránh có quá nhiều biểu ngữ lỗi hiển thị cùng một lúc, cùng một lỗi sẽ không kích hoạt biểu ngữ lỗi mới nếu nó đã được hiển thị gần đây.

Ví dụ:

Xem xét điều khiển NhãnThanh trượt được liên kết với nhau thông qua công thức:

Label1.Text = 1/Slider1.Value

Điều khiển nhãn và thanh trượt được giới hạn thông qua công thức Label1.Text = 1/Slider1.Value.

Con trượt đặt mặc định ở 50. Nếu con trượt được di chuyển về 0, thì Label1 sẽ không hiển thị giá trị và biểu ngữ báo lỗi sẽ hiển thị:

Điều khiển thanh trượt được chuyển về 0, dẫn đến lỗi chia cho 0 và biểu ngữ lỗi.

Hãy xem xét những gì đã xảy ra một cách chi tiết:

  1. Người dùng đã di chuyển trang trình bày sang trái và thuộc tính Slide1.Value được thay đổi thành 0.
  2. Label1.Text was automatically reevaluated. Xảy ra phép chia cho 0, tạo ra lỗi.
  3. Không có IfError trong công thức này. Lỗi chia cho 0 được trả về bằng cách đánh giá công thức.
  4. Label1.Text không thể hiển thị bất cứ điều gì cho lỗi này, do đó, nó hiển thị trạng thái trống.
  5. OnError được gọi. Vì không có trình xử lý nên biểu ngữ lỗi tiêu chuẩn được hiển thị cùng với thông tin lỗi.

Nếu cần, chúng ta cũng có thể sửa đổi công thức thành Label1.Text = IfError( 1/Slider1.Value, 0 ). Điều này sẽ không dẫn đến lỗi hoặc biểu ngữ lỗi. Chúng tôi không thể thay đổi giá trị của lỗi từ OnError vì tại thời điểm đó lỗi đã xảy ra, vấn đề chỉ là cách báo cáo lỗi.

Nếu chúng ta thêm trình xử lý OnError , thì trình xử lý này sẽ không có tác động trước bước 5, nhưng nó có thể ảnh hưởng đến cách báo cáo lỗi:

Trace( $"Error {FirstError.Message} in {FirstError.Source}" )

Công thức App.OnError được đặt để tạo Dấu vết.

Với điều này, từ quan điểm của người dùng ứng dụng, sẽ không có bất kỳ lỗi nào. Nhưng lỗi sẽ được thêm vào dấu vết của Màn hình, hoàn chỉnh với nguồn thông tin lỗi từ FirstError:

Điều khiển thanh trượt được chuyển về 0, dẫn đến lỗi chia cho 0 nhưng không có biểu ngữ lỗi.

Nếu chúng ta cũng muốn có biểu ngữ báo lỗi mặc định tương tự được hiển thị ngoài dấu vết, thì chúng ta có thể tính lại lỗi bằng hàm Error sau lệnh gọi Trace giống như đã thực hiện nếu Trace không có ở đó:

Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )

Thuộc tính OnStart

Lưu ý

Việc sử dụng thuộc tính OnStart có thể gây ra sự cố về hiệu suất khi tải ứng dụng. Chúng tôi đang trong quá trình tạo các lựa chọn thay thế vì hai lý do hàng đầu để sử dụng thuộc tính – lưu dữ liệu vào bộ nhớ đệm và thiết lập các biến toàn cục. Chúng tôi đã tạo một giải pháp thay thế để xác định màn hình đầu tiên được hiển thị với Navigate. Tùy thuộc vào ngữ cảnh của bạn, thuộc tính này có thể bị tắt theo mặc định. Nếu bạn không nhìn thấy và cần sử dụng thuộc tính này, hãy kiểm tra Thiết đặt nâng cao của ứng dụng để tìm một nút chuyển nhằm bật thuộc tính đó. Thuộc tính OnVisible trên một màn hình cũng có thể được sử dụng.

Thuộc tính OnStart chạy khi người dùng khởi động ứng dụng. Thuộc tính này thường được dùng để thực hiện các tác vụ sau:

  • Truy xuất và lưu trữ dữ liệu vào bộ sưu tập bằng cách sử dụng hàm Collect.
  • Thiết lập các biến toàn cục bằng cách sử dụng hàm Set.

Công thức này được đánh giá trước khi màn hình đầu tiên xuất hiện. Không có màn hình nào được tải, vì vậy bạn không thể đặt các biến ngữ cảnh với hàm UpdateContext. Tuy nhiên, bạn có thể truyền các biến bối cảnh với hàm Navigate.

Sau khi bạn thay đổi thuộc tính OnStart, hãy kiểm tra thuộc tính bằng cách di chuột qua đối tượng Ứng dụng trong ngăn Dạng xem cây, chọn dấu chấm lửng (...), rồi chọn Chạy OnStart. Không giống như khi ứng dụng được tải lần đầu tiên, các bộ sưu tập và biến hiện có sẽ được đặt. Để bắt đầu với các bộ sưu tập trống, sử dụng hàm ClearCollect thay vì hàm Collect.

Menu phím tắt ứng dụng-mục cho Chạy OnStart

Lưu ý

  • Không thể sử dụng hàm Navigate trong thuộc tính OnStart nữa. Các ứng dụng hiện có sẽ tiếp tục hoạt động. Trong thời gian có giới hạn, bạn vẫn có thể bật thuộc tính này trong phần thiết đặt ứng dụng (có trong Không dùng nữa). Tuy nhiên, việc sử dụng hàm Navigate theo cách này có thể dẫn đến sự chậm trễ khi tải ứng dụng vì nó buộc hệ thống phải hoàn thành việc đánh giá OnStart trước khi hiển thị màn hình đầu tiên. Thay vào đó, hãy sử dụng thuộc tính StartScreen để tính toán màn hình đầu tiên được hiển thị.
  • Nút chuyển Không dùng nữa sẽ bị tắt đối với các ứng dụng được tạo trước tháng 3 năm 2021 mà bạn đã thêm chức năng Điều hướng vào OnStart từ tháng 3 năm 2021 đến nay. Khi chỉnh sửa các ứng dụng như vậy trong Power Apps Studio, bạn có thể gặp lỗi. Gạt nút chuyển Không dùng nữa đã nêu trên để loại bỏ lỗi này.

Thuộc tính StartScreen

Lưu ý

Thuộc tính StartScreen sẽ không xuất hiện trong danh sách thuộc tính khi tùy chọn đã ngừng sử dụng Thanh công thức nâng cao được bật. Để tắt Thanh công thức nâng cao, hãy chuyển đến Thiết đặt>Các tính năng sắp ra mắt>Không dùng nữa> tắt nút chuyển Thanh công thức nâng cao khi bạn muốn dùng thuộc tính StartScreen.

Thuộc tính StartScreen xác định màn hình nào sẽ được hiển thị đầu tiên. Thuộc tính này được đánh giá một lần khi ứng dụng được tải và trả về đối tượng màn hình sẽ hiển thị. Theo mặc định, thuộc tính này sẽ trống và màn hình đầu tiên trong Dạng xem cây của Studio được hiển thị đầu tiên.

StartScreen là thuộc tính luồng dữ liệu không được chứa các hàm hành vi. Tất cả các hàm của luồng dữ liệu đều có sẵn, cụ thể là sử dụng các hàm và tín hiệu này để xác định màn hình nào sẽ hiển thị trước:

  • Hàm Param để đọc tham số được dùng để khởi động ứng dụng.
  • Hàm User để đọc thông tin về người dùng hiện tại.
  • LookUp, Filter, CountRows, Max và các hàm khác đọc từ nguồn dữ liệu.
  • Bất kỳ API nào cũng gọi thông qua một trình kết nối, nhưng hãy cẩn thận rằng nó sẽ trả về nhanh chóng.
  • Các tín hiệu như Kết nối, La bànỨng dụng.

Lưu ý

Các biến và tập hợp toàn cục, bao gồm cả những biến được tạo trong OnStart, không có sẵn trong StartScreen. Chúng tôi đang triển khai những cách khai báo khác để thực hiện việc này. Để đưa ra ý kiến phản hồi của bạn về hạn chế này, hãy truy cập Diễn đàn cộng đồng Power Apps.

Nếu StartScreen trả về lỗi, màn hình đầu tiên trong Dạng xem cây của Studio sẽ được hiển thị như thể StartScreen chưa được thiết lập. Sử dụng hàm IfError để phát hiện bất kỳ lỗi nào và chuyển hướng đến một màn hình lỗi thích hợp.

Sau khi thay đổi StartScreen trong Studio, hãy kiểm tra thuộc tính bằng cách di chuột qua đối tượng Ứng dụng trong ngăn Dạng xem cây, chọn dấu chấm lửng (...), rồi chọn Chuyển đến StartScreen. Màn hình sẽ thay đổi như thể ứng dụng đã được tải.

Chuyển đến StartScreen

Ví dụ

Screen9

Chỉ ra rằng Screen9 sẽ được hiển thị đầu tiên bất cứ khi nào ứng dụng khởi động.

If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )

Kiểm tra xem Tham số "admin-mode" đã được người dùng đặt hay chưa và sử dụng nó để quyết định xem Màn hình chính hay Màn hình quản trị sẽ được hiển thị trước tiên.

If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )

Kiểm tra xem người tham dự hội nghị có phải là nhân viên hay không và hướng họ đến màn hình thích hợp khi khởi động.

IfError( If( CustomConnector.APICall() = "Forest", 
             ForestScreen, 
             OceanScreen 
         ), 
         ErrorScreen 
)

Hướng ứng dụng dựa trên lệnh gọi API đến ForestScreen hoặc OceanScreen. Nếu API không thành công vì bất kỳ lý do gì, ErrorScreen sẽ được dùng để thay thế.

Thuộc tính StudioVersion

Sử dụng thuộc tính StudioVersion để hiển thị hoặc ghi lại phiên bản Power Apps Studio được dùng để xuất bản ứng dụng. Điều này có thể hữu ích khi gỡ lỗi và đảm bảo ứng dụng của bạn đã được xuất bản lại với phiên bản Power Apps Studio gần đây.

StudioVersion được trả về dưới dạng văn bản. Định dạng của văn bản có thể thay đổi theo thời gian và cần được xử lý tổng thể; tránh trích xuất các phần riêng lẻ.