Created on 19 June 2022
icon_unfollowing
Login to follow
appventure-banking-mobile-prebuild

APPventure Banking Mobile PREBUILD

Version 0.0.1 (Compatible with OutSystems 11)
Uploaded on 19 June 2022 by 
appventure-banking-mobile-prebuild

APPventure Banking Mobile PREBUILD

Documentation
0.0.1

APPventure Banking

1 Core Mobile App


1.1 Create App

  1. New Mobile App
  2. APPventureBankingMobile

1.2 Dependencies

  1. Add APPventureBanking_CS -> All

1.3 Accounts Screen

  1. Create “Accounts” screen, Lists -> List with chart
    1. Include in menu
  2. Delete GetAccounts
  3. Create GetAccounts
    1. Fetch Data from Other Source
    2. Output -> Accounts (AccountBalanceResponse)
    3. Call GetAccounts
      1. Create Client Variable for IdentityId (default 1)
      2. Authorization “Identity ” + Client.IdentityId
  4. Fix Errors
    1. GetAccounts.List to GetAccounts.Accounts
  5. UI
    1. Delete Checkmark
    2. Set expressions to Name and AccountType
    3. Delete GetChartData
      1. Replace with GetAccounts using Name and Balance
    4. Change “No items available to display” to “accounts”
    5. Delete OnScrollEnding and MaxRecords
    6. Put the list into an adaptive columns 2 and add balance
      1. TextEllipsis(FormatAmount(GetAccounts.Accounts.Current.Balance,2),16)
      2. Right align it

1.4 Account Details Screen

  1. Create “AccountDetails” screen, Banking -> Account Overview
  2. Add input parameter of AccountId (Integer)
  3. Delete GetAccountsByOwner, GetTransactionsByAccount, and GetFiltersOption
  4. Delete all *Filter* actions and variables
    1. Delete OnSelect_* and RangeSlider*
  5. Delete ListTransactions_Filters Container
  6. Delete OnSort and TableSort update ListTransactions_Table
  7. Create GetAccountsByOwner from other data
    1. Rename to GetAccountDetails
    2. Change Out1 to Account and set type to AccountBalanceResponse
    3. Call GetAccount
  8. Create GetTransactionsByAccount from other data
    1. Change Out1 to Transactions and set type to List of TransactionResponse
    2. Add output parameter TotalTransactions
    3. Call GetTransactions
      1. Set PageNumber to (StartIndex / MaxRecords) + 1
  9. Change the Checking expression to GetAccountDetails.Account.AccountType (just drag it)
  10. Change the Balance expression to GetAccountDetails.Account.Balance
  11. Update account number expression by removing the List.Current. parts
  12. Click the Popup box below the account number and select the first dot to show the popup
    1. Change Savings expression
    2. Change account number expression
    3. Delete SWIFT and routing numbers
    4. Delete If_EditingMode and SaveOnClick
    5. Hide popup
  13. Update transactions table to go against the correct structure
    1. Delete Posting Date
    2. Change Amount’s expression to not use OperationSign and instead use If (GetTransactionsByAccount.Transactions.Current.FromAccountId = AccountId, "-", "+")
    3. Change Amount’s style class to be If (GetTransactionsByAccount.Transactions.Current.FromAccountId = AccountId, "text-red", "text-green") + " white-space-nowrap"
  14. Move the True Container of IF_NoFilters outside and delete the If
  15. Update Accounts screen
    1. Delete NotImplemented
    2. Set OnClick to navigate to AccountDetails

1.5 Identity Switcher

  1. Copy Identity block from Web
    1. Update drop down to use DisplayName instead of PartyId
  2. Drag Identity into header content of Accounts
    1. Enclose in container
    2. Center align it
    3. Add IdentityChanged event that refreshes GetAccounts

1.6 Generate Native Builds

  1. Android
    1. Debug (apk)
    2. com.netlink.appventure.banking
  2. iOS
    1. Development
    2. com.netlink.appventure.banking
    3. development.p12
    4. Provisioning profile


2 Addons


2.1 Biometric Authentication (Fingerprint / Face ID)

  1. Dependencies
    1. TouchIdPlugin
      1. CheckBiometricType
      2. CheckTouchIdPlugin
      3. TouchID
      4. BiometricType
  2. Entities - Local Storage
    1. Add AppConfiguration
      1. Key (50), IntValue, BoolValue
  3. Change Remember Me to use TouchID
    1. Add OnReady
      1. CheckTouchIdPlugin
      2. If Available
      3. CheckBiometricType
      4. Set local BiometricTypeId to None
      5. If type is not None
      6. Get AppConfigurations
        1. Key = “Biometric”
      7. Set Remember to BoolValue
      8. If Remember, set BiometricTypeId and call BiometricLogin
    2. BiometricLogin
      1. TouchID
      2. If Success
      3. IsExecuting = True
      4. Get AppConfigurations
        1. Key = “UserId”
      5. Call DoBiometricLogin Server Action
        1. Warn that this is insecure, should use OIDC, or a signed HMAC from the server of some sort
      6. Call PostLogin
    3. DoBiometricLogin
      1. Login
    4. Login
      1. Refactor everything after FeedbackMessageClose to PostLogin
    5. PostLogin
      1. InitCloudMessaging (If doing Notifications)
      2. FeedbackMessageClose
      3. Get AppConfiguration (Key = “UserId”)
      4. Get AppConfiguration (Key = “Biometric”)
      5. If Remember
        1. True
          1. Assign Key = “UserId”, Value = GetUserId()
          2. Update Config
          3. Assign Key = “Biometric”, Value = True
          4. Update Config
        2. False
          1. If UserId config is not empty, delete it
          2. Assign Key = “Biometric”, Value = False
          3. Update Config
      6. Continue with OfflineDataSyncConfiguration and such
  4. Add DeleteAllAppConfigurations to Logout Action

2.2 Calendar Plugin

Add Bill Pay to Device Calendar

  1. Dependencies
    1. CalendarPlugin
      1. CheckCalendarPlugin
      2. CreateEvent
  2. Fetch data from other source
    1. GetBills
    2. Return list of BillResponse
  3. Add table to the screen for bills
    1. Add 4 columns - Name, Due Date, Amount, and blank
    2. In the 4th, add a link with an icon - Calendar
      1. OnClick
        1. CheckCalendarPlugin
        2. If Available
          1. False
            1. Message - Calendar is not available on this device.
            2. End
          2. True
            1. CreateEvent
              1. Title: "Bill Due: " + FormatAmount(GetBills.Bills.Current.AmountDue, 2) + " to " + GetBills.Bills.Current.BillingPayee.Party.DisplayName
              2. Start Date Time: GetBills.Bills.Current.DueDate
              3. End Date Time: GetBills.Bills.Current.DueDate

2.3 Camera Plugin for Check Image Upload

  1. Dependencies
    1. CameraPlugin
      1. CheckCameraPlugin
      2. TakePicture
  2. Create blank “Deposit Check” screen
    1. Add 2 Cards, each with an Image and a Take Picture for front and back
    2. Add FrontOfCheck and BackOfCheck Binary Data variables
    3. Assign the variables in the on clicks

2.4 Card IO Plugin for Credit Card Recognition

  1. Dependencies
    1. CardIOPlugin
      1. CheckCardIOPlugin
      2. CreditCardRead
  2. Create new Scan Card screen from blank
  3. Add a CreditCardInfo variable
  4. Add a Scan button
    1. CheckCardIOPlugin
    2. If available, CreditCardRead and assign to CreditCardInfo
  5. Drag CreditCardInfo into the Card

2.5 Key Store Plugin for Secure Local Storage

  1. Dependencies
    1. KeyStorePlugin
      1. CheckKeyStorePlugin
      2. GetValue
      3. RemoveKey
      4. SetValue
  2. Create SetIdentityId Client action
    1. CheckKeyStorePlugin
    2. Set Client.IdentityId
    3. If available, SetValue
      1. Store: "Banking"
      2. Key: "IdentityId"
      3. Value: IntegerToText(IdentityId)
    4. If not, just end
    5. Update the Identity block’s SaveOnClick to call SetIdentityId
    6. Update OnApplicationReady
      1. CheckKeyStorePlugin
      2. If available, GetValue
      3. If we get a result (GetValue.Success and GetValue.Value <> NullTextIdentifier())
        1. Set Client.IdentityId to TextToInteger(GetValue.Value)
  3. Update UserInfo’s ClientLogout
    1. Call RemoveKey

2.6 Multi-Language Support

  1. Data -> Multilingual Locales
    1. Add pt-PT
      1. Explain
      2. Then copy from PREBUILD
  2. Menu
    1. Add Container after PageLinks
      1. “app-login-info ph”
      2. LanguageOnClick
        1. SetCurrentLocale

2.7 OutSystems Maps - Office Locator

  1. Add Locator Screen from template
    1. Remove GetOffices
    2. Add GetOffices
      1. GetLocation
      2. Call GetParty and use MailingAddress
      3. On after fetch, set MapAddress to GetLocation.Address.AddressLine1 + ", " + GetLocation.Address.City + ", " + GetLocation.Address.StateCode + " " + GetLocation.Address.PostalCode + ", United States"
    3. Move Marker out of List and delete List
    4. Delete everything other than GetLocation and MapAddress
    5. Delete FloatingContent holding the Carousel
    6. API Key: ""

2.8 Push Notifications

  1. Dependencies
    1. FirebaseMobile
      1. CloudMessaging
        1. InitCloudMessaging
        2. UnregisterDevice
      2. CloudNotification
        1. FirebvaseCloudMessaging
  2. System Event - OnApplicationReady
    1. If GetUserId() not Null
      1. InitCloudMessaging
  3. Login
    1. Login
      1. Add InitCloudMessaging after DoLogin
  4. UserInfo
    1. ClientLogout
      1. Add UnregisterDevice after DoLogout
  5. Layout
    1. Add FirebaseCloudMessaging at the end of Layout
      1. Handler:
        1. Message - NotificationData.Body
        2. Mention we could then handle deep linking and such if we wanted to
        3. Show CreateTransaction in CS
  6. Add google-services.zip
    1. Target Directory: firebase.com.netlink.appventure.banking
    2. Deploy Action: Deploy to Target Directory

Support options
This asset is not supported by OutSystems. You may use the discussion forums to leave suggestions or obtain best-effort support from the community, including from  who created this asset.
Dependencies
See all 12 dependencies