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" source "https://rubygems.org"
gem "fastlane" gem "fastlane"
gem "cocoapods"
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path) eval_gemfile(plugins_path) if File.exist?(plugins_path)

View File

@ -5,8 +5,23 @@ GEM
base64 base64
nkf nkf
rexml 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) addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0) 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) artifactory (3.0.17)
atomos (0.1.3) atomos (0.1.3)
aws-eventstream (1.3.0) aws-eventstream (1.3.0)
@ -28,17 +43,63 @@ GEM
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4) babosa (1.0.4)
base64 (0.2.0) base64 (0.2.0)
benchmark (0.3.0)
bigdecimal (3.2.2)
claide (1.1.0) 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) colored (1.2)
colored2 (3.1.2) colored2 (3.1.2)
commander (4.6.0) commander (4.6.0)
highline (~> 2.0.0) highline (~> 2.0.0)
concurrent-ruby (1.3.5)
connection_pool (2.5.0)
declarative (0.0.20) declarative (0.0.20)
digest-crc (0.7.0) digest-crc (0.7.0)
rake (>= 12.0.0, < 14.0.0) rake (>= 12.0.0, < 14.0.0)
domain_name (0.6.20240107) domain_name (0.6.20240107)
dotenv (2.8.1) dotenv (2.8.1)
drb (2.2.0)
ruby2_keywords
emoji_regex (3.2.3) emoji_regex (3.2.3)
escape (0.0.4)
ethon (0.16.0)
ffi (>= 1.15.0)
excon (0.112.0) excon (0.112.0)
faraday (1.10.4) faraday (1.10.4)
faraday-em_http (~> 1.0) faraday-em_http (~> 1.0)
@ -117,6 +178,9 @@ GEM
fastlane-plugin-increment_build_number (0.0.4) fastlane-plugin-increment_build_number (0.0.4)
fastlane-sirp (1.0.0) fastlane-sirp (1.0.0)
sysrandom (~> 1.0) sysrandom (~> 1.0)
ffi (1.17.1-arm64-darwin)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3) gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.54.0) google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a) google-apis-core (>= 0.11.0, < 2.a)
@ -162,21 +226,28 @@ GEM
http-cookie (1.0.8) http-cookie (1.0.8)
domain_name (~> 0.5) domain_name (~> 0.5)
httpclient (2.8.3) httpclient (2.8.3)
i18n (1.14.7)
concurrent-ruby (~> 1.0)
jmespath (1.6.2) jmespath (1.6.2)
json (2.9.1) json (2.9.1)
jwt (2.10.1) jwt (2.10.1)
base64 base64
logger (1.7.0)
mini_magick (4.13.2) mini_magick (4.13.2)
mini_mime (1.1.5) mini_mime (1.1.5)
minitest (5.20.0)
molinillo (0.8.0)
multi_json (1.15.0) multi_json (1.15.0)
multipart-post (2.4.1) multipart-post (2.4.1)
nanaimo (0.4.0) nanaimo (0.4.0)
nap (1.1.0)
naturally (2.2.1) naturally (2.2.1)
netrc (0.11.0)
nkf (0.2.0) nkf (0.2.0)
optparse (0.6.0) optparse (0.6.0)
os (1.1.4) os (1.1.4)
plist (3.7.2) plist (3.7.2)
public_suffix (6.0.1) public_suffix (4.0.7)
rake (13.2.1) rake (13.2.1)
representable (3.2.0) representable (3.2.0)
declarative (< 0.1.0) declarative (< 0.1.0)
@ -185,8 +256,10 @@ GEM
retriable (3.1.2) retriable (3.1.2)
rexml (3.4.0) rexml (3.4.0)
rouge (3.28.0) rouge (3.28.0)
ruby-macho (2.5.1)
ruby2_keywords (0.0.5) ruby2_keywords (0.0.5)
rubyzip (2.4.1) rubyzip (2.4.1)
securerandom (0.3.1)
security (0.1.5) security (0.1.5)
signet (0.19.0) signet (0.19.0)
addressable (~> 2.8) addressable (~> 2.8)
@ -205,6 +278,10 @@ GEM
tty-screen (0.8.2) tty-screen (0.8.2)
tty-spinner (0.9.3) tty-spinner (0.9.3)
tty-cursor (~> 0.7) tty-cursor (~> 0.7)
typhoeus (1.4.1)
ethon (>= 0.9.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
uber (0.1.0) uber (0.1.0)
unicode-display_width (2.6.0) unicode-display_width (2.6.0)
word_wrap (1.0.0) word_wrap (1.0.0)
@ -221,10 +298,11 @@ GEM
xcpretty (~> 0.2, >= 0.0.7) xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS PLATFORMS
arm64-darwin-24
ruby ruby
x64-mingw-ucrt
DEPENDENCIES DEPENDENCIES
cocoapods
fastlane fastlane
fastlane-plugin-firebase_app_distribution fastlane-plugin-firebase_app_distribution
fastlane-plugin-increment_build_number 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" : [ "images" : [
{ {
"filename" : "mifospay_logo_1024.png", "filename" : "mifosmobile_logo_1024.png",
"idiom" : "universal", "idiom" : "universal",
"platform" : "ios", "platform" : "ios",
"size" : "1024x1024" "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"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
@ -15,20 +17,19 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.0</string> <string>1.0.0</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1</string> <string>4</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>CADisableMinimumFrameDurationOnPhone</key> <key>NSCameraUsageDescription</key>
<true/> <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> <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> <string>Allow access to choose a photo or document you decide to upload (e.g., profile photo or ID).</string>
<key>UIApplicationSceneManifest</key> <key>NSPhotoLibraryUsageDescription</key>
<dict> <string>Allow access to choose a photo or document you decide to upload (e.g., profile photo or ID).</string>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
</dict>
<key>UIApplicationSceneManifest</key> <key>UIApplicationSceneManifest</key>
<dict> <dict>
<key>UIApplicationSupportsMultipleScenes</key> <key>UIApplicationSupportsMultipleScenes</key>

View File

@ -393,7 +393,9 @@ platform :ios do
update_plist( update_plist(
plist_path: ios_config[:plist_path], plist_path: ios_config[:plist_path],
block: proc do |plist| 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
) )
end end
@ -468,7 +470,7 @@ platform :ios do
build_signed_ios( build_signed_ios(
options.merge( options.merge(
match_type: "adhoc", 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( build_ios_project(
options.merge( 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( build_ios_project(
options.merge( options.merge(
provisioning_profile_name: "match AppStore org.mifospay" provisioning_profile_name: "match AppStore org.mifos.mobile"
) )
) )
deliver( deliver(
screenshots_path: ios_config[:screenshots_ios_path],
metadata_path: options[:metadata_path] || ios_config[:metadata_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 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 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