ソースを参照

notif for ios is work now

master
amin 1年前
コミット
b61dda473e
37個のファイルの変更823行の追加125行の削除
  1. +2
    -2
      android/app/build.gradle
  2. +19
    -0
      android/app/google-services.json
  3. +1
    -1
      android/app/src/main/kotlin/com/nghsco/mizban/MainActivity.kt
  4. バイナリ
      assets/images/5893208387750053755.jpg
  5. バイナリ
      assets/images/iconinappbar.png
  6. バイナリ
      assets/images/logo.png
  7. バイナリ
      assets/images/logoaboutus.png
  8. バイナリ
      assets/images/logoapp.jpg
  9. バイナリ
      assets/images/logomizban.png
  10. バイナリ
      assets/images/template.png
  11. +1
    -0
      firebase.json
  12. +1
    -0
      ios/Flutter/Debug.xcconfig
  13. +1
    -0
      ios/Flutter/Release.xcconfig
  14. +30
    -0
      ios/GoogleService-Info.plist
  15. +44
    -0
      ios/Podfile
  16. +186
    -0
      ios/Podfile.lock
  17. +160
    -6
      ios/Runner.xcodeproj/project.pbxproj
  18. +123
    -0
      ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
  19. +3
    -0
      ios/Runner.xcworkspace/contents.xcworkspacedata
  20. +1
    -51
      ios/Runner/AppDelegate.swift
  21. +2
    -2
      ios/Runner/GoogleService-Info.plist
  22. +24
    -4
      ios/Runner/Info.plist
  23. +8
    -0
      ios/Runner/Runner.entitlements
  24. +8
    -0
      ios/Runner/RunnerRelease.entitlements
  25. +68
    -0
      lib/firebase_options.dart
  26. +1
    -1
      lib/l10n/app_fa.arb
  27. +44
    -29
      lib/main.dart
  28. +2
    -2
      lib/screens/auth/login_screen.dart
  29. +3
    -3
      lib/screens/auth/otp_screen.dart
  30. +2
    -2
      lib/screens/auth/state/state.dart
  31. +29
    -18
      lib/services/auth/auth.dart
  32. +5
    -3
      lib/services/home/home.dart
  33. +1
    -0
      macos/Flutter/Flutter-Debug.xcconfig
  34. +1
    -0
      macos/Flutter/Flutter-Release.xcconfig
  35. +43
    -0
      macos/Podfile
  36. +8
    -0
      pubspec.lock
  37. +2
    -1
      pubspec.yaml

+ 2
- 2
android/app/build.gradle ファイルの表示

@@ -9,7 +9,7 @@ plugins {
}

android {
namespace = "com.example.qadirneyriz"
namespace = "com.nghsco.mizban"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion

@@ -24,7 +24,7 @@ android {

defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.example.qadirneyriz"
applicationId = "com.nghsco.mizban"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion


+ 19
- 0
android/app/google-services.json ファイルの表示

@@ -23,6 +23,25 @@
"other_platform_oauth_client": []
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:392489806594:android:6944e598f4a3f5313b301b",
"android_client_info": {
"package_name": "com.nghsco.mizban"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyAuDK456j4fFdNqrzQRDYyWRcB0VkQ2bCY"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"

android/app/src/main/kotlin/com/example/qadirneyriz/MainActivity.kt → android/app/src/main/kotlin/com/nghsco/mizban/MainActivity.kt ファイルの表示

@@ -1,4 +1,4 @@
package com.example.qadirneyriz
package com.nghsco.mizban

import io.flutter.embedding.android.FlutterActivity


バイナリ
assets/images/5893208387750053755.jpg ファイルの表示

変更前 変更後
幅: 1215  |  高さ: 1097  |  サイズ: 57 KiB

バイナリ
assets/images/iconinappbar.png ファイルの表示

変更前 変更後
幅: 416  |  高さ: 388  |  サイズ: 35 KiB

バイナリ
assets/images/logo.png ファイルの表示

変更前 変更後
幅: 1656  |  高さ: 1596  |  サイズ: 624 KiB

バイナリ
assets/images/logoaboutus.png ファイルの表示

変更前 変更後
幅: 500  |  高さ: 500  |  サイズ: 83 KiB

バイナリ
assets/images/logoapp.jpg ファイルの表示

変更前 変更後
幅: 500  |  高さ: 500  |  サイズ: 27 KiB

バイナリ
assets/images/logomizban.png ファイルの表示

変更前 変更後
幅: 512  |  高さ: 512  |  サイズ: 30 KiB 幅: 512  |  高さ: 512  |  サイズ: 36 KiB

バイナリ
assets/images/template.png ファイルの表示

変更前 変更後
幅: 1656  |  高さ: 2120  |  サイズ: 499 KiB 幅: 1656  |  高さ: 2120  |  サイズ: 142 KiB

+ 1
- 0
firebase.json ファイルの表示

@@ -0,0 +1 @@
{"flutter":{"platforms":{"android":{"default":{"projectId":"folad-neiriz","appId":"1:392489806594:android:6944e598f4a3f5313b301b","fileOutput":"android/app/google-services.json"}},"ios":{"default":{"projectId":"folad-neiriz","appId":"1:392489806594:ios:b93d93374e9671ee3b301b","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"}},"dart":{"lib/firebase_options.dart":{"projectId":"folad-neiriz","configurations":{"android":"1:392489806594:android:6944e598f4a3f5313b301b","ios":"1:392489806594:ios:b93d93374e9671ee3b301b"}}}}}}

+ 1
- 0
ios/Flutter/Debug.xcconfig ファイルの表示

@@ -1 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"

+ 1
- 0
ios/Flutter/Release.xcconfig ファイルの表示

@@ -1 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"

+ 30
- 0
ios/GoogleService-Info.plist ファイルの表示

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-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>API_KEY</key>
<string>AIzaSyDmiLNq_t5wyqDE2VW1wGyt6kArchRvLAQ</string>
<key>GCM_SENDER_ID</key>
<string>392489806594</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.nghsco.mizban</string>
<key>PROJECT_ID</key>
<string>folad-neiriz</string>
<key>STORAGE_BUCKET</key>
<string>folad-neiriz.firebasestorage.app</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:392489806594:ios:b93d93374e9671ee3b301b</string>
</dict>
</plist>

+ 44
- 0
ios/Podfile ファイルの表示

@@ -0,0 +1,44 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '14.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}

def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end

File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end

require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)

flutter_ios_podfile_setup

target 'Runner' do
use_frameworks!
use_modular_headers!

flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end

post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end

+ 186
- 0
ios/Podfile.lock ファイルの表示

@@ -0,0 +1,186 @@
PODS:
- DKImagePickerController/Core (4.3.4):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
- DKImagePickerController/ImageDataManager (4.3.4)
- DKImagePickerController/PhotoGallery (4.3.4):
- DKImagePickerController/Core
- DKPhotoGallery
- DKImagePickerController/Resource (4.3.4)
- DKPhotoGallery (0.0.17):
- DKPhotoGallery/Core (= 0.0.17)
- DKPhotoGallery/Model (= 0.0.17)
- DKPhotoGallery/Preview (= 0.0.17)
- DKPhotoGallery/Resource (= 0.0.17)
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Core (0.0.17):
- DKPhotoGallery/Model
- DKPhotoGallery/Preview
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Model (0.0.17):
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Preview (0.0.17):
- DKPhotoGallery/Model
- DKPhotoGallery/Resource
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Resource (0.0.17):
- SDWebImage
- SwiftyGif
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- Firebase/CoreOnly (11.4.0):
- FirebaseCore (= 11.4.0)
- Firebase/Messaging (11.4.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 11.4.0)
- firebase_core (3.8.0):
- Firebase/CoreOnly (= 11.4.0)
- Flutter
- firebase_messaging (15.1.5):
- Firebase/Messaging (= 11.4.0)
- firebase_core
- Flutter
- FirebaseCore (11.4.0):
- FirebaseCoreInternal (~> 11.0)
- GoogleUtilities/Environment (~> 8.0)
- GoogleUtilities/Logger (~> 8.0)
- FirebaseCoreInternal (11.6.0):
- "GoogleUtilities/NSData+zlib (~> 8.0)"
- FirebaseInstallations (11.4.0):
- FirebaseCore (~> 11.0)
- GoogleUtilities/Environment (~> 8.0)
- GoogleUtilities/UserDefaults (~> 8.0)
- PromisesObjC (~> 2.4)
- FirebaseMessaging (11.4.0):
- FirebaseCore (~> 11.0)
- FirebaseInstallations (~> 11.0)
- GoogleDataTransport (~> 10.0)
- GoogleUtilities/AppDelegateSwizzler (~> 8.0)
- GoogleUtilities/Environment (~> 8.0)
- GoogleUtilities/Reachability (~> 8.0)
- GoogleUtilities/UserDefaults (~> 8.0)
- nanopb (~> 3.30910.0)
- Flutter (1.0.0)
- GoogleDataTransport (10.1.0):
- nanopb (~> 3.30910.0)
- PromisesObjC (~> 2.4)
- GoogleUtilities/AppDelegateSwizzler (8.0.2):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- GoogleUtilities/Privacy
- GoogleUtilities/Environment (8.0.2):
- GoogleUtilities/Privacy
- GoogleUtilities/Logger (8.0.2):
- GoogleUtilities/Environment
- GoogleUtilities/Privacy
- GoogleUtilities/Network (8.0.2):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Privacy
- GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (8.0.2)":
- GoogleUtilities/Privacy
- GoogleUtilities/Privacy (8.0.2)
- GoogleUtilities/Reachability (8.0.2):
- GoogleUtilities/Logger
- GoogleUtilities/Privacy
- GoogleUtilities/UserDefaults (8.0.2):
- GoogleUtilities/Logger
- GoogleUtilities/Privacy
- nanopb (3.30910.0):
- nanopb/decode (= 3.30910.0)
- nanopb/encode (= 3.30910.0)
- nanopb/decode (3.30910.0)
- nanopb/encode (3.30910.0)
- open_file_ios (0.0.1):
- Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- permission_handler_apple (9.3.0):
- Flutter
- PromisesObjC (2.4.0)
- SDWebImage (5.16.0):
- SDWebImage/Core (= 5.16.0)
- SDWebImage/Core (5.16.0)
- sqflite (0.0.3):
- Flutter
- FlutterMacOS
- SwiftyGif (5.4.4)

DEPENDENCIES:
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
- Flutter (from `Flutter`)
- open_file_ios (from `.symlinks/plugins/open_file_ios/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
- sqflite (from `.symlinks/plugins/sqflite/darwin`)

SPEC REPOS:
trunk:
- DKImagePickerController
- DKPhotoGallery
- Firebase
- FirebaseCore
- FirebaseCoreInternal
- FirebaseInstallations
- FirebaseMessaging
- GoogleDataTransport
- GoogleUtilities
- nanopb
- PromisesObjC
- SDWebImage
- SwiftyGif

EXTERNAL SOURCES:
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
firebase_core:
:path: ".symlinks/plugins/firebase_core/ios"
firebase_messaging:
:path: ".symlinks/plugins/firebase_messaging/ios"
Flutter:
:path: Flutter
open_file_ios:
:path: ".symlinks/plugins/open_file_ios/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
permission_handler_apple:
:path: ".symlinks/plugins/permission_handler_apple/ios"
sqflite:
:path: ".symlinks/plugins/sqflite/darwin"

SPEC CHECKSUMS:
DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
Firebase: cf1b19f21410b029b6786a54e9764a0cacad3c99
firebase_core: 9efc3ecf689cdbc90f13f4dc58108c83ea46b266
firebase_messaging: 6bf60adb4b33a848d135e16bc363fb4924f98fba
FirebaseCore: e0510f1523bc0eb21653cac00792e1e2bd6f1771
FirebaseCoreInternal: d98ab91e2d80a56d7b246856a8885443b302c0c2
FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414
FirebaseMessaging: f8a160d99c2c2e5babbbcc90c4a3e15db036aee2
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
open_file_ios: 461db5853723763573e140de3193656f91990d9e
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
SDWebImage: 2aea163b50bfcb569a2726b6a754c54a4506fcf6
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f

PODFILE CHECKSUM: 1b50a4280f44a231b37f858aebc2a001225decec

COCOAPODS: 1.16.2

+ 160
- 6
ios/Runner.xcodeproj/project.pbxproj ファイルの表示

@@ -8,12 +8,15 @@

/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
279E98ED2D1AC59100A23113 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 279E98EC2D1AC59100A23113 /* GoogleService-Info.plist */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
4759CDBF48BBFAA16589BB1F /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A13A62BF8523DA69A6B7DED /* Pods_RunnerTests.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
EA2352549A2FAB01A3364E55 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B283BACC72FBA5C58553DEB5 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
@@ -42,9 +45,18 @@
/* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
21E13784C9783A2D164934EC /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
25F9A4FC0F94DB50E78EFC87 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
2718AC0B2D0EFA1300C32C95 /* RunnerRelease.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RunnerRelease.entitlements; sourceTree = "<group>"; };
2726A2F72D0ED5B5000CFFF8 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
279E98EC2D1AC59100A23113 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3725BEAF3DF4B15F715B4D71 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
4A13A62BF8523DA69A6B7DED /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
57463A968D8F475ACFBD7AF9 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
74285ED74C2E6E41B754C0CE /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
@@ -55,13 +67,24 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
B283BACC72FBA5C58553DEB5 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
F5909DC65099B73BB95A6244 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
1E4C4A1290709861CA4805D3 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
4759CDBF48BBFAA16589BB1F /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
EA2352549A2FAB01A3364E55 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -90,10 +113,13 @@
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
279E98EC2D1AC59100A23113 /* GoogleService-Info.plist */,
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
F8BB147E565F68927290DB18 /* Pods */,
CDF87532872B2723CF8E0440 /* Frameworks */,
);
sourceTree = "<group>";
};
@@ -109,6 +135,8 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
2718AC0B2D0EFA1300C32C95 /* RunnerRelease.entitlements */,
2726A2F72D0ED5B5000CFFF8 /* Runner.entitlements */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@@ -121,6 +149,28 @@
path = Runner;
sourceTree = "<group>";
};
CDF87532872B2723CF8E0440 /* Frameworks */ = {
isa = PBXGroup;
children = (
B283BACC72FBA5C58553DEB5 /* Pods_Runner.framework */,
4A13A62BF8523DA69A6B7DED /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
F8BB147E565F68927290DB18 /* Pods */ = {
isa = PBXGroup;
children = (
F5909DC65099B73BB95A6244 /* Pods-Runner.debug.xcconfig */,
25F9A4FC0F94DB50E78EFC87 /* Pods-Runner.release.xcconfig */,
57463A968D8F475ACFBD7AF9 /* Pods-Runner.profile.xcconfig */,
21E13784C9783A2D164934EC /* Pods-RunnerTests.debug.xcconfig */,
74285ED74C2E6E41B754C0CE /* Pods-RunnerTests.release.xcconfig */,
3725BEAF3DF4B15F715B4D71 /* Pods-RunnerTests.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
@@ -128,8 +178,10 @@
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
67BC60F4D4382D10418A3A58 /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
1E4C4A1290709861CA4805D3 /* Frameworks */,
);
buildRules = (
);
@@ -145,12 +197,15 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
92182B7D1D93B3076E45A1F8 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
30C9A5270602859A8E6C794E /* [CP] Embed Pods Frameworks */,
226F675192C22C6623CA1FCA /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -190,6 +245,8 @@
Base,
);
mainGroup = 97C146E51CF9000F007C117D;
packageReferences = (
);
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
projectDirPath = "";
projectRoot = "";
@@ -214,6 +271,7 @@
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
279E98ED2D1AC59100A23113 /* GoogleService-Info.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
@@ -222,6 +280,40 @@
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
226F675192C22C6623CA1FCA /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
30C9A5270602859A8E6C794E /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -238,6 +330,50 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
67BC60F4D4382D10418A3A58 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
92182B7D1D93B3076E45A1F8 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -361,15 +497,20 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = FE8CDVE4RJ;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.qadirneyriz;
PRODUCT_BUNDLE_IDENTIFIER = com.nghsco.mizban;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
@@ -378,13 +519,14 @@
};
331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 21E13784C9783A2D164934EC /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.qadirneyriz.RunnerTests;
PRODUCT_BUNDLE_IDENTIFIER = com.nghsco.mizban.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -395,13 +537,14 @@
};
331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 74285ED74C2E6E41B754C0CE /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.qadirneyriz.RunnerTests;
PRODUCT_BUNDLE_IDENTIFIER = com.nghsco.mizban.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
@@ -410,13 +553,14 @@
};
331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 3725BEAF3DF4B15F715B4D71 /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.qadirneyriz.RunnerTests;
PRODUCT_BUNDLE_IDENTIFIER = com.nghsco.mizban.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
@@ -540,15 +684,20 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = FE8CDVE4RJ;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.qadirneyriz;
PRODUCT_BUNDLE_IDENTIFIER = com.nghsco.mizban;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
@@ -562,15 +711,20 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/RunnerRelease.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = FE8CDVE4RJ;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.example.qadirneyriz;
PRODUCT_BUNDLE_IDENTIFIER = com.nghsco.mizban;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";


+ 123
- 0
ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved ファイルの表示

@@ -0,0 +1,123 @@
{
"originHash" : "c63c63846d9c539229e96de38d6af51417e28c0ee9a0bc48bd0f0f19d923c329",
"pins" : [
{
"identity" : "abseil-cpp-binary",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/abseil-cpp-binary.git",
"state" : {
"revision" : "194a6706acbd25e4ef639bcaddea16e8758a3e27",
"version" : "1.2024011602.0"
}
},
{
"identity" : "app-check",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/app-check.git",
"state" : {
"revision" : "61b85103a1aeed8218f17c794687781505fbbef5",
"version" : "11.2.0"
}
},
{
"identity" : "firebase-ios-sdk",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/firebase-ios-sdk",
"state" : {
"revision" : "2e02253fd1ce99145bcbf1bb367ccf61bd0ca46b",
"version" : "11.6.0"
}
},
{
"identity" : "googleappmeasurement",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleAppMeasurement.git",
"state" : {
"revision" : "4f234bcbdae841d7015258fbbf8e7743a39b8200",
"version" : "11.4.0"
}
},
{
"identity" : "googledatatransport",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleDataTransport.git",
"state" : {
"revision" : "617af071af9aa1d6a091d59a202910ac482128f9",
"version" : "10.1.0"
}
},
{
"identity" : "googleutilities",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleUtilities.git",
"state" : {
"revision" : "53156c7ec267db846e6b64c9f4c4e31ba4cf75eb",
"version" : "8.0.2"
}
},
{
"identity" : "grpc-binary",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/grpc-binary.git",
"state" : {
"revision" : "f56d8fc3162de9a498377c7b6cea43431f4f5083",
"version" : "1.65.1"
}
},
{
"identity" : "gtm-session-fetcher",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/gtm-session-fetcher.git",
"state" : {
"revision" : "5cfe5f090c982de9c58605d2a82a4fc77b774fbd",
"version" : "4.1.0"
}
},
{
"identity" : "interop-ios-for-google-sdks",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/interop-ios-for-google-sdks.git",
"state" : {
"revision" : "2d12673670417654f08f5f90fdd62926dc3a2648",
"version" : "100.0.0"
}
},
{
"identity" : "leveldb",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/leveldb.git",
"state" : {
"revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1",
"version" : "1.22.5"
}
},
{
"identity" : "nanopb",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/nanopb.git",
"state" : {
"revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1",
"version" : "2.30910.0"
}
},
{
"identity" : "promises",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/promises.git",
"state" : {
"revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac",
"version" : "2.4.0"
}
},
{
"identity" : "swift-protobuf",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-protobuf.git",
"state" : {
"revision" : "ebc7251dd5b37f627c93698e4374084d98409633",
"version" : "1.28.2"
}
}
],
"version" : 3
}

+ 3
- 0
ios/Runner.xcworkspace/contents.xcworkspacedata ファイルの表示

@@ -4,4 +4,7 @@
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

+ 1
- 51
ios/Runner/AppDelegate.swift ファイルの表示

@@ -1,7 +1,5 @@
import Flutter
import UIKit
import Firebase
import FirebaseMessaging
import Flutter

@main
@objc class AppDelegate: FlutterAppDelegate {
@@ -9,55 +7,7 @@ import FirebaseMessaging
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// مقداردهی Firebase
FirebaseApp.configure()
// ثبت Plugin های Flutter
GeneratedPluginRegistrant.register(with: self)

// تنظیمات Notification Center
UNUserNotificationCenter.current().delegate = self
Messaging.messaging().delegate = self

// درخواست مجوز نوتیفیکیشن
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
if let error = error {
print("Error requesting notification permissions: \(error)")
}
print("Permission granted: \(granted)")
}
// ثبت دستگاه برای دریافت Remote Notifications
application.registerForRemoteNotifications()
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}

// متد دریافت APNs Token و ارسال آن به Firebase
override func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
) {
Messaging.messaging().apnsToken = deviceToken
}
}

// افزودن پروتکل‌های UNUserNotificationCenterDelegate و MessagingDelegate
extension AppDelegate: UNUserNotificationCenterDelegate, MessagingDelegate {
// مدیریت دریافت توکن Firebase
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
print("Firebase FCM Token: \(fcmToken ?? "No Token")")
// اگر نیاز به ارسال توکن به سرور دارید، اینجا انجام دهید.
}
// مدیریت پیام‌های دریافت‌شده هنگام باز بودن اپلیکیشن
func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
) {
let userInfo = notification.request.content.userInfo
print("Foreground Notification Received: \(userInfo)")
completionHandler([.banner, .sound, .badge])
}
}

+ 2
- 2
ios/Runner/GoogleService-Info.plist ファイルの表示

@@ -9,7 +9,7 @@
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.example.qadirneyriz</string>
<string>com.nghsco.mizban</string>
<key>PROJECT_ID</key>
<string>folad-neiriz</string>
<key>STORAGE_BUCKET</key>
@@ -25,6 +25,6 @@
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:392489806594:ios:feeba2107eb852ec3b301b</string>
<string>1:392489806594:ios:b93d93374e9671ee3b301b</string>
</dict>
</plist>

+ 24
- 4
ios/Runner/Info.plist ファイルの表示

@@ -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>CFBundleDisplayName</key>
@@ -24,6 +26,26 @@
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
<key>NSPhotoLibraryUsageDescription</key>
<string>We need access to your photos to allow you to upload images.</string>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UIBackgroundModes</key>
<array>
<string>remote-notification</string>
<string>processing</string>
<string>fetch</string>
</array>
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
<string>com.nghsco.mizban.refresh</string>
<string>com.nghsco.mizban.processing</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
@@ -41,9 +63,7 @@
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>FirebaseMessagingAutoInitEnabled</key>
<string>NO</string>
</dict>
</plist>

+ 8
- 0
ios/Runner/Runner.entitlements ファイルの表示

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-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>aps-environment</key>
<string>development</string>
</dict>
</plist>

+ 8
- 0
ios/Runner/RunnerRelease.entitlements ファイルの表示

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-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>aps-environment</key>
<string>development</string>
</dict>
</plist>

+ 68
- 0
lib/firebase_options.dart ファイルの表示

@@ -0,0 +1,68 @@
// File generated by FlutterFire CLI.
// ignore_for_file: type=lint
import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
import 'package:flutter/foundation.dart'
show defaultTargetPlatform, kIsWeb, TargetPlatform;

/// Default [FirebaseOptions] for use with your Firebase apps.
///
/// Example:
/// ```dart
/// import 'firebase_options.dart';
/// // ...
/// await Firebase.initializeApp(
/// options: DefaultFirebaseOptions.currentPlatform,
/// );
/// ```
class DefaultFirebaseOptions {
static FirebaseOptions get currentPlatform {
if (kIsWeb) {
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for web - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
}
switch (defaultTargetPlatform) {
case TargetPlatform.android:
return android;
case TargetPlatform.iOS:
return ios;
case TargetPlatform.macOS:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for macos - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
case TargetPlatform.windows:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for windows - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
case TargetPlatform.linux:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for linux - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
default:
throw UnsupportedError(
'DefaultFirebaseOptions are not supported for this platform.',
);
}
}

static const FirebaseOptions android = FirebaseOptions(
apiKey: 'AIzaSyAuDK456j4fFdNqrzQRDYyWRcB0VkQ2bCY',
appId: '1:392489806594:android:6944e598f4a3f5313b301b',
messagingSenderId: '392489806594',
projectId: 'folad-neiriz',
storageBucket: 'folad-neiriz.firebasestorage.app',
);

static const FirebaseOptions ios = FirebaseOptions(
apiKey: 'AIzaSyDmiLNq_t5wyqDE2VW1wGyt6kArchRvLAQ',
appId: '1:392489806594:ios:b93d93374e9671ee3b301b',
messagingSenderId: '392489806594',
projectId: 'folad-neiriz',
storageBucket: 'folad-neiriz.firebasestorage.app',
iosBundleId: 'com.nghsco.mizban',
);
}

+ 1
- 1
lib/l10n/app_fa.arb ファイルの表示

@@ -122,5 +122,5 @@
"suretodelelteaccount": "آیا اطمینان دارید که می‌خواهید حساب کاربری خود را حذف کنید؟",
"actioncantundo": "این عمل قابل بازگشت نیست!",
"areusuretodeletfile":"آیا اطمینان دارید که میخواهید این فایل را حذف کنید؟",
"textaboutus":"نرم‌افزار مدیریت جلسات و ملاقات‌های “میزبان” با هدف تسهیل و بهینه‌سازی فرآیندهای برگزاری جلسات سازمانی و شخصی جناب آقای دکتر محسن مصطفی پور طراحی و توسعه یافته تا ابزاری کارآمد و نوآورانه برای تحقق بیشتر اسم رمز همدلی در مجموعه معظم فولاد غدیر نی ریز باشد . این نرم افزار با حمایت ، همت و پشتیبانی بی‌دریغ مدیریت محترم عامل ( دکتر محسن مصطفی پور ) ایجاد ، توسعه و راه اندازی شده است."
"textaboutus":"نرم‌افزار مدیریت جلسات و ملاقات‌های “میزبان” با هدف تسهیل و بهینه‌سازی فرآیندهای برگزاری جلسات شخصی جناب آقای دکتر محسن مصطفی پور طراحی و توسعه یافته تا ابزاری کارآمد و نوآورانه باشد. این نرم افزار با حمایت ، همت و پشتیبانی بی‌دریغ دکتر محسن مصطفی پور ایجاد ، توسعه و راه اندازی شده است."
}

+ 44
- 29
lib/main.dart ファイルの表示

@@ -5,6 +5,7 @@ import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'package:provider/provider.dart';
import 'package:qadirneyriz/config/config.dart';
import 'package:qadirneyriz/firebase_options.dart';
import 'package:qadirneyriz/global/global_state/global_state.dart';
import 'package:qadirneyriz/router/router.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@@ -18,9 +19,14 @@ import 'package:qadirneyriz/setting/setting.dart';
final FirebaseMessaging messaging = FirebaseMessaging.instance;

Future<void> initializeApp() async {
await Firebase.initializeApp();
await Hive.initFlutter();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
await setting.userLocalDb.openBox();

// اجرای Firebase و تنظیمات نوتیفیکیشن فقط در اندروید

await requestNotificationPermission();
await getToken();
setupMessageListener();
@@ -45,15 +51,13 @@ Future<void> requestNotificationPermission() async {
}

Future<void> getToken() async {
String? token = await messaging.getToken();
print("Device Token: $token");
// You can send the token to your server here if needed
await messaging.getToken();
}

void setupMessageListener() {
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('Message received: ${message.notification?.title}');
print('Message body: ${message.notification?.body}');
// print('Message received: ${message.notification?.title}');
// print('Message body: ${message.notification?.body}');
// You can use a Dialog or Toast to display the message here
});
}
@@ -102,31 +106,42 @@ class _MyAppState extends State<MyApp> {
Widget build(BuildContext context) {
return Consumer<AuthState>(
builder: (context, value, child) {
return MaterialApp.router(
theme: ThemeData(
colorScheme: ColorScheme.light(primary: config.ui.mainGreen),
buttonTheme: ButtonThemeData(
colorScheme: ColorScheme.light(primary: Colors.green),
return GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);

if (!currentFocus.hasPrimaryFocus &&
currentFocus.focusedChild != null) {
FocusManager.instance.primaryFocus?.unfocus();
}
},
child: MaterialApp.router(
theme: ThemeData(
colorScheme: ColorScheme.light(primary: config.ui.mainGreen),
buttonTheme: ButtonThemeData(
colorScheme: ColorScheme.light(primary: Colors.green),
),
useMaterial3: true,
fontFamily: 'Font',
scaffoldBackgroundColor: Colors.white,
),
useMaterial3: true,
fontFamily: 'Font',
scaffoldBackgroundColor: Colors.white,
debugShowCheckedModeBanner: false,
routerDelegate: router.routerDelegate,
routeInformationParser: router.routeInformationParser,
routeInformationProvider: router.routeInformationProvider,
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
locale: Locale(value.language),
supportedLocales: const [
Locale('en'),
Locale('fa'),
],
),
debugShowCheckedModeBanner: false,
routerDelegate: router.routerDelegate,
routeInformationParser: router.routeInformationParser,
routeInformationProvider: router.routeInformationProvider,
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
locale: Locale(value.language),
supportedLocales: const [
Locale('en'),
Locale('fa'),
],
);
},
);


+ 2
- 2
lib/screens/auth/login_screen.dart ファイルの表示

@@ -152,9 +152,9 @@ class _LoginScreenState extends State<LoginScreen> {
isError: true,
context,
);
} else { String? token = await messaging.getToken();
} else {
final status = await state.login(
fcm_token: token??'',
mobile: phoneController.text,
password: passwordController.text);
if (status == Status.ready) {


+ 3
- 3
lib/screens/auth/otp_screen.dart ファイルの表示

@@ -132,6 +132,7 @@ class _OtpScreenState extends State<OtpScreen> {
},
),
),
],
),
],
@@ -183,10 +184,9 @@ class _OtpScreenState extends State<OtpScreen> {
}

void otpCheckCode(onSubmitted, AuthState value) async {
String? token = await messaging.getToken();
if (onSubmitted.length == 4) {
final status = await value.login(
mobile: widget.phoneNumber, otp: onSubmitted, fcm_token: token ?? '');
final status =
await value.login(mobile: widget.phoneNumber, otp: onSubmitted);
if (status == Status.ready) {
context.goNamed('navigate', pathParameters: {'tab': '0'});
} else if (status == Status.error) {


+ 2
- 2
lib/screens/auth/state/state.dart ファイルの表示

@@ -25,13 +25,13 @@ class AuthState extends ChangeNotifier {
{required String mobile,
String? password,
String? otp,
required String fcm_token}) async {
}) async {
assert(password != null || otp != null);
statusLogin = Status.loading;
notifyListeners();
try {
final result = await authServises.loginApi(
mobile: mobile, password: password, otp: otp, fcm_token: fcm_token);
mobile: mobile, password: password, otp: otp, );
if (result == null) {
statusLogin = Status.error;
} else {


+ 29
- 18
lib/services/auth/auth.dart ファイルの表示

@@ -1,26 +1,36 @@
import 'package:flutter/foundation.dart'; // برای شناسایی پلتفرم
import 'package:dio/dio.dart';
import 'package:qadirneyriz/config/config.dart';
import 'package:qadirneyriz/main.dart';
import 'package:qadirneyriz/setting/setting.dart';
import 'package:qadirneyriz/utils/result/result.dart';

class AuthServices {
Future<Result?> loginApi(
{required String mobile,
String? password,
String? otp,
required String fcm_token}) async {
Future<Result?> loginApi({
required String mobile,
String? password,
String? otp,
}) async {
String? token;

token = await messaging.getToken();

assert(password != null || otp != null);

try {
Map<String, String> headers = {"Accept": "application/json"};
FormData? formData;
FormData formData;
formData = password != null
? FormData.fromMap(
{"mobile": mobile, "password": password, "device_id": fcm_token})
{"mobile": mobile, "password": password, "device_id": token})
: FormData.fromMap(
{"mobile": mobile, "otp": otp, "device_id": fcm_token});
{"mobile": mobile, "otp": otp, "device_id": token});

print('${formData.fields} resData');
final res = await Dio().post("${config.network.baseUrl}login",
data: formData, options: Options(headers: headers));
final res = await Dio().post(
"${config.network.baseUrl}login?lang=${setting.userLocalDb.getUser().language}",
data: formData,
options: Options(headers: headers));

if (res.statusCode == 200 || res.statusCode == 201) {
setting.userLocalDb.saveUserField('token', res.data['token']);
@@ -34,8 +44,8 @@ class AuthServices {
print(e);
return Result(
isOk: false,
errors: e.response!.data['errors'],
message: e.response!.data['msg']);
errors: e.response?.data['errors'],
message: e.response?.data['msg']);
}
return const Result(isOk: false);
}
@@ -43,11 +53,12 @@ class AuthServices {
Future<Result?> sendOtpApi({required String mobile}) async {
try {
Map<String, String> headers = {"Accept": "application/json"};
FormData? formData;
formData = FormData.fromMap({"mobile": mobile});
FormData formData = FormData.fromMap({"mobile": mobile});

final res = await Dio().post("${config.network.baseUrl}sendOtp",
data: formData, options: Options(headers: headers));
final res = await Dio().post(
"${config.network.baseUrl}sendOtp?lang=${setting.userLocalDb.getUser().language}",
data: formData,
options: Options(headers: headers));

if (res.statusCode == 200 || res.statusCode == 201) {
return Result(isOk: true, message: res.data['msg']);
@@ -55,8 +66,8 @@ class AuthServices {
} on DioException catch (e) {
return Result(
isOk: false,
errors: e.response!.data['errors'],
message: e.response!.data['msg']);
errors: e.response?.data['errors'],
message: e.response?.data['msg']);
}
return const Result(isOk: false);
}


+ 5
- 3
lib/services/home/home.dart ファイルの表示

@@ -35,7 +35,8 @@ class HomeApi {
headers['Authorization'] = "Bearer $dataToken";
}

final res = await Dio().post("${config.network.baseUrl}admin/logout",
final res = await Dio().post(
"${config.network.baseUrl}admin/logout?lang=${setting.userLocalDb.getUser().language}",
options: Options(headers: headers));

if (res.statusCode == 200 || res.statusCode == 201) {
@@ -64,7 +65,7 @@ class HomeApi {
}

final res = await Dio().post(
"${config.network.baseUrl}user/deleteaccount",
"${config.network.baseUrl}user/deleteaccount?lang=${setting.userLocalDb.getUser().language}",
options: Options(headers: headers));

if (res.statusCode == 200 || res.statusCode == 201) {
@@ -93,7 +94,8 @@ class HomeApi {
headers['Authorization'] = "Bearer $dataToken";
}

final res = await Dio().post("${config.network.baseUrl}edit-profile",
final res = await Dio().post(
"${config.network.baseUrl}edit-profile?lang=${setting.userLocalDb.getUser().language}",
options: Options(
headers: headers,
),


+ 1
- 0
macos/Flutter/Flutter-Debug.xcconfig ファイルの表示

@@ -1 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "ephemeral/Flutter-Generated.xcconfig"

+ 1
- 0
macos/Flutter/Flutter-Release.xcconfig ファイルの表示

@@ -1 +1,2 @@
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "ephemeral/Flutter-Generated.xcconfig"

+ 43
- 0
macos/Podfile ファイルの表示

@@ -0,0 +1,43 @@
platform :osx, '10.14'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}

def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first"
end

File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\""
end

require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)

flutter_macos_podfile_setup

target 'Runner' do
use_frameworks!
use_modular_headers!

flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end

post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_macos_build_settings(target)
end
end

+ 8
- 0
pubspec.lock ファイルの表示

@@ -142,6 +142,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.3.1"
change_app_package_name:
dependency: "direct dev"
description:
name: change_app_package_name
sha256: "1d6ca5fbaba7264f70857941543337b2efe48f19ae2eef29b89927541b52a787"
url: "https://pub.dev"
source: hosted
version: "1.4.0"
characters:
dependency: transitive
description:


+ 2
- 1
pubspec.yaml ファイルの表示

@@ -3,7 +3,7 @@ description: "A new Flutter project."

publish_to: 'none'

version: 1.0.0+1
version: 1.0.3+3

environment:
sdk: ^3.5.3
@@ -43,6 +43,7 @@ dev_dependencies:
sdk: flutter
# flutter_lints: ^4.0.0
build_runner: ^2.4.9
change_app_package_name: ^1.4.0


flutter:


読み込み中…
キャンセル
保存