chore(fastlane): prepare ios app for App Store submission with assets, metadata and screenshots (#2972)

This commit is contained in:
Hekmatullah 2025-09-13 20:00:43 +01:00 committed by GitHub
parent c8f4e0994a
commit 0cc8a020c0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
44 changed files with 321 additions and 17 deletions

View File

@ -1,5 +1,6 @@
source "https://rubygems.org"
gem "fastlane"
gem "cocoapods"
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)

View File

@ -5,8 +5,23 @@ GEM
base64
nkf
rexml
activesupport (7.2.2.1)
base64
benchmark (>= 0.3)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
logger (>= 1.4.2)
minitest (>= 5.1)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.3.0)
@ -28,17 +43,63 @@ GEM
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
benchmark (0.3.0)
bigdecimal (3.2.2)
claide (1.1.0)
cocoapods (1.16.2)
addressable (~> 2.8)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.16.2)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 2.1, < 3.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.6.0, < 2.0)
cocoapods-try (>= 1.1.0, < 2.0)
colored2 (~> 3.1)
escape (~> 0.0.4)
fourflusher (>= 2.3.0, < 3.0)
gh_inspector (~> 1.0)
molinillo (~> 0.8.0)
nap (~> 1.0)
ruby-macho (>= 2.3.0, < 3.0)
xcodeproj (>= 1.27.0, < 2.0)
cocoapods-core (1.16.2)
activesupport (>= 5.0, < 8)
addressable (~> 2.8)
algoliasearch (~> 1.0)
concurrent-ruby (~> 1.1)
fuzzy_match (~> 2.0.4)
nap (~> 1.0)
netrc (~> 0.11)
public_suffix (~> 4.0)
typhoeus (~> 1.0)
cocoapods-deintegrate (1.0.5)
cocoapods-downloader (2.1)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.1)
cocoapods-trunk (1.6.0)
nap (>= 0.8, < 2.0)
netrc (~> 0.11)
cocoapods-try (1.2.0)
colored (1.2)
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
concurrent-ruby (1.3.5)
connection_pool (2.5.0)
declarative (0.0.20)
digest-crc (0.7.0)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.6.20240107)
dotenv (2.8.1)
drb (2.2.0)
ruby2_keywords
emoji_regex (3.2.3)
escape (0.0.4)
ethon (0.16.0)
ffi (>= 1.15.0)
excon (0.112.0)
faraday (1.10.4)
faraday-em_http (~> 1.0)
@ -117,6 +178,9 @@ GEM
fastlane-plugin-increment_build_number (0.0.4)
fastlane-sirp (1.0.0)
sysrandom (~> 1.0)
ffi (1.17.1-arm64-darwin)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a)
@ -162,21 +226,28 @@ GEM
http-cookie (1.0.8)
domain_name (~> 0.5)
httpclient (2.8.3)
i18n (1.14.7)
concurrent-ruby (~> 1.0)
jmespath (1.6.2)
json (2.9.1)
jwt (2.10.1)
base64
logger (1.7.0)
mini_magick (4.13.2)
mini_mime (1.1.5)
minitest (5.20.0)
molinillo (0.8.0)
multi_json (1.15.0)
multipart-post (2.4.1)
nanaimo (0.4.0)
nap (1.1.0)
naturally (2.2.1)
netrc (0.11.0)
nkf (0.2.0)
optparse (0.6.0)
os (1.1.4)
plist (3.7.2)
public_suffix (6.0.1)
public_suffix (4.0.7)
rake (13.2.1)
representable (3.2.0)
declarative (< 0.1.0)
@ -185,8 +256,10 @@ GEM
retriable (3.1.2)
rexml (3.4.0)
rouge (3.28.0)
ruby-macho (2.5.1)
ruby2_keywords (0.0.5)
rubyzip (2.4.1)
securerandom (0.3.1)
security (0.1.5)
signet (0.19.0)
addressable (~> 2.8)
@ -205,6 +278,10 @@ GEM
tty-screen (0.8.2)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
typhoeus (1.4.1)
ethon (>= 0.9.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
uber (0.1.0)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
@ -221,10 +298,11 @@ GEM
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
arm64-darwin-24
ruby
x64-mingw-ucrt
DEPENDENCIES
cocoapods
fastlane
fastlane-plugin-firebase_app_distribution
fastlane-plugin-increment_build_number

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "7555FF7A242A565900829871"
BuildableName = "Mifos Mobile.app"
BlueprintName = "iosApp"
ReferencedContainer = "container:iosApp.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "7555FF7A242A565900829871"
BuildableName = "Mifos Mobile.app"
BlueprintName = "iosApp"
ReferencedContainer = "container:iosApp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "mifospay_logo_1024.png",
"filename" : "mifosmobile_logo_1024.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
@ -15,20 +17,19 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<string>4</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>We use the camera to scan QR codes for payments and to add beneficiaries. No images or video are stored.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Allow access to add photos to your library so you can save artworks directly to your device and view them offline.</string>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
</dict>
<string>Allow access to choose a photo or document you decide to upload (e.g., profile photo or ID).</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Allow access to choose a photo or document you decide to upload (e.g., profile photo or ID).</string>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>

View File

@ -393,7 +393,9 @@ platform :ios do
update_plist(
plist_path: ios_config[:plist_path],
block: proc do |plist|
plist["NSCameraUsageDescription"] = "We use the camera to scan QR codes to send and receive payments."
plist["ITSAppUsesNonExemptEncryption"] = false
plist["NSCameraUsageDescription"] = "We use the camera to scan QR codes for payments and to add beneficiaries. No images or video are stored."
plist["NSPhotoLibraryUsageDescription"] = "Allow access to choose a photo or document you decide to upload (e.g., profile photo or ID)."
end
)
end
@ -468,7 +470,7 @@ platform :ios do
build_signed_ios(
options.merge(
match_type: "adhoc",
provisioning_profile_name: "match AdHoc org.mifospay"
provisioning_profile_name: "match AdHoc org.mifos.mobile"
)
)
@ -513,7 +515,7 @@ platform :ios do
build_ios_project(
options.merge(
provisioning_profile_name: "match AppStore org.mifospay"
provisioning_profile_name: "match AppStore org.mifos.mobile"
)
)
@ -554,11 +556,12 @@ platform :ios do
build_ios_project(
options.merge(
provisioning_profile_name: "match AppStore org.mifospay"
provisioning_profile_name: "match AppStore org.mifos.mobile"
)
)
deliver(
screenshots_path: ios_config[:screenshots_ios_path],
metadata_path: options[:metadata_path] || ios_config[:metadata_path],
submit_for_review: false, # Set to true if you want to auto-submit for review
automatic_release: true, # Set to true if you want to auto-release once it approved

16
fastlane/age_rating.json Normal file
View File

@ -0,0 +1,16 @@
{
"violenceCartoonOrFantasy": "NONE",
"violenceRealistic": "NONE",
"violenceRealisticProlongedGraphicOrSadistic": "NONE",
"profanityOrCrudeHumor": "NONE",
"matureOrSuggestiveThemes": "NONE",
"horrorOrFearThemes": "NONE",
"sexualContentGraphicAndNudity": "NONE",
"alcoholTobaccoOrDrugUseOrReferences": "NONE",
"gamblingSimulated": "NONE",
"sexualContentOrNudity": "NONE",
"contests": "NONE",
"medicalOrTreatmentInformation": "NONE",
"unrestrictedWebAccess": false,
"gambling": false
}

View File

@ -0,0 +1,101 @@
[
{
"category": "CONTACTS",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
},
{
"category": "CREDIT_AND_FRAUD",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
},
{
"category": "DEVICE_ID",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
},
{
"category": "EMAIL_ADDRESS",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
},
{
"category": "NAME",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
},
{
"category": "OTHER_FINANCIAL_INFO",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
},
{
"category": "PAYMENT_INFORMATION",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
},
{
"category": "PHONE_NUMBER",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
},
{
"category": "PHOTOS_OR_VIDEOS",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
},
{
"category": "PHYSICAL_ADDRESS",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
},
{
"category": "USER_ID",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
}
]

View File

@ -0,0 +1,3 @@
© 2025 The Mifos Initiative
This app is licensed under the Mozilla Public License, v. 2.0.

View File

@ -0,0 +1 @@

View File

@ -0,0 +1,12 @@
Mifos Mobile is a modern, white-label mobile banking app for financial institutions running Mifos X / Apache Fineract. It gives customers a clear view of their savings and loan accounts and lets them move money, repay loans, and stay on top of activity—all from a clean, intuitive interface.
WHAT YOU CAN DO
• View a summary of all your accounts at a glance, with detailed balances and transaction history
• Download or review account statements
• Apply for new accounts (when enabled by your institution)
• Transfer funds between your own savings accounts
• Repay loans directly from linked savings accounts
• Send money to other customers of your financial institution
• Add beneficiaries quickly—scan or share a QR code to set them up
• See recent activity instantly and receive in-app notifications about important events and campaigns
• Manage profile details and change your password from Settings

View File

@ -0,0 +1,2 @@
mobilebanking,onlinebanking,savingsaccount,loanrepayment,statements,transfers,beneficiaries

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@
Mifos Mobile

View File

@ -0,0 +1 @@
https://openmf.github.io/privacy_policy_mifos_mobile.html

View File

@ -0,0 +1 @@
Manage savings and loans, view statements, transfer money, repay loans, and get in-app notifications—securely connected to your financial institution.

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@
Banking for Mifos & Fineract

View File

@ -0,0 +1 @@
https://github.com/openMF/mifos-mobile

View File

@ -0,0 +1 @@
FINANCE

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@
password

View File

@ -0,0 +1 @@
maria

View File

@ -0,0 +1 @@
info@mifos.org

View File

@ -0,0 +1 @@
Hekmatullah

View File

@ -0,0 +1 @@
Amin

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@
+44 7391462187

View File

@ -0,0 +1 @@
BUSINESS

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 960 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 KiB