other: merge develop

This commit is contained in:
Liuyf 2025-03-27 16:43:59 +08:00
commit 250624daef
55 changed files with 566 additions and 250 deletions

View File

@ -151,8 +151,8 @@ create-release:
${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/StarLock-${StarLock_VERSION}-*" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/StarLock-${StarLock_VERSION}-*"
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-xhj-release-${CI_COMMIT_TAG}.apk - 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-xhj-release-${CI_COMMIT_TAG}.apk
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj-release-${CI_COMMIT_TAG}.apk"' "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj-release-${CI_COMMIT_TAG}.apk"'
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-xhj-release-${CI_COMMIT_TAG}.aab - 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-xhj_bundle-release-${CI_COMMIT_TAG}.aab
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj-release-${CI_COMMIT_TAG}.aab"' "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj_bundle-release-${CI_COMMIT_TAG}.aab"'
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.apk - 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.apk
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-sky-release-${CI_COMMIT_TAG}.apk"' "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-sky-release-${CI_COMMIT_TAG}.apk"'
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.aab - 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.aab

View File

@ -33,7 +33,7 @@
<!--相机--> <!--相机-->
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />

View File

@ -74,8 +74,6 @@ PODS:
- SDWebImage - SDWebImage
- SwiftyGif - SwiftyGif
- EMASRest (11.1.1.2) - EMASRest (11.1.1.2)
- fast_rsa (0.6.0):
- Flutter
- file_picker (0.0.1): - file_picker (0.0.1):
- DKImagePickerController/PhotoGallery - DKImagePickerController/PhotoGallery
- Flutter - Flutter
@ -215,6 +213,12 @@ PODS:
- JPush (= 5.3.0) - JPush (= 5.3.0)
- just_audio (0.0.1): - just_audio (0.0.1):
- Flutter - Flutter
- JVerification (3.2.4):
- JCore (>= 2.1.6)
- jverify (0.0.1):
- Flutter
- JCore (>= 4.6.2)
- JVerification (= 3.2.4)
- nanopb (3.30910.0): - nanopb (3.30910.0):
- nanopb/decode (= 3.30910.0) - nanopb/decode (= 3.30910.0)
- nanopb/encode (= 3.30910.0) - nanopb/encode (= 3.30910.0)
@ -274,7 +278,6 @@ DEPENDENCIES:
- camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`) - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`)
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`) - connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- fast_rsa (from `.symlinks/plugins/fast_rsa/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`)
- firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) - firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`)
- firebase_core (from `.symlinks/plugins/firebase_core/ios`) - firebase_core (from `.symlinks/plugins/firebase_core/ios`)
@ -293,6 +296,7 @@ DEPENDENCIES:
- JPush - JPush
- jpush_flutter (from `.symlinks/plugins/jpush_flutter/ios`) - jpush_flutter (from `.symlinks/plugins/jpush_flutter/ios`)
- just_audio (from `.symlinks/plugins/just_audio/ios`) - just_audio (from `.symlinks/plugins/just_audio/ios`)
- jverify (from `.symlinks/plugins/jverify/ios`)
- network_info_plus (from `.symlinks/plugins/network_info_plus/ios`) - network_info_plus (from `.symlinks/plugins/network_info_plus/ios`)
- open_filex (from `.symlinks/plugins/open_filex/ios`) - open_filex (from `.symlinks/plugins/open_filex/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
@ -334,6 +338,7 @@ SPEC REPOS:
- ios-voice-processor - ios-voice-processor
- JCore - JCore
- JPush - JPush
- JVerification
- nanopb - nanopb
- PromisesObjC - PromisesObjC
- SDWebImage - SDWebImage
@ -366,8 +371,6 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/connectivity_plus/darwin" :path: ".symlinks/plugins/connectivity_plus/darwin"
device_info_plus: device_info_plus:
:path: ".symlinks/plugins/device_info_plus/ios" :path: ".symlinks/plugins/device_info_plus/ios"
fast_rsa:
:path: ".symlinks/plugins/fast_rsa/ios"
file_picker: file_picker:
:path: ".symlinks/plugins/file_picker/ios" :path: ".symlinks/plugins/file_picker/ios"
firebase_analytics: firebase_analytics:
@ -402,6 +405,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/jpush_flutter/ios" :path: ".symlinks/plugins/jpush_flutter/ios"
just_audio: just_audio:
:path: ".symlinks/plugins/just_audio/ios" :path: ".symlinks/plugins/just_audio/ios"
jverify:
:path: ".symlinks/plugins/jverify/ios"
network_info_plus: network_info_plus:
:path: ".symlinks/plugins/network_info_plus/ios" :path: ".symlinks/plugins/network_info_plus/ios"
open_filex: open_filex:
@ -451,7 +456,6 @@ SPEC CHECKSUMS:
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
EMASRest: 8df6f87836767a9415ad5cc4af739bc9d215b475 EMASRest: 8df6f87836767a9415ad5cc4af739bc9d215b475
fast_rsa: a1fed69b074093d2e2e3fefae6b821a071649d4c
file_picker: ce3938a0df3cc1ef404671531facef740d03f920 file_picker: ce3938a0df3cc1ef404671531facef740d03f920
Firebase: 9f574c08c2396885b5e7e100ed4293d956218af9 Firebase: 9f574c08c2396885b5e7e100ed4293d956218af9
firebase_analytics: 1a66fe8d4375eccff44671ea37897683a78b2675 firebase_analytics: 1a66fe8d4375eccff44671ea37897683a78b2675
@ -468,7 +472,7 @@ SPEC CHECKSUMS:
flutter_pcm_sound: de0572ca4f99091cc2abfcc31601b8a4ddd33c0e flutter_pcm_sound: de0572ca4f99091cc2abfcc31601b8a4ddd33c0e
flutter_voice_processor: 2b89b93d69b02227ae3fd58589ee0bcfa3ca2a82 flutter_voice_processor: 2b89b93d69b02227ae3fd58589ee0bcfa3ca2a82
fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c
fluwx: c18fd6c16b03a2187cd07d6e48e32a7801962849 fluwx: daa284756ce53442b3d0417ceeda66e981906811
google_maps_flutter_ios: f135b968a67c05679e0a53538e900b5c174b0d99 google_maps_flutter_ios: f135b968a67c05679e0a53538e900b5c174b0d99
GoogleAppMeasurement: 6e49ffac7d3f2c3ded9cc663f912a13b67bbd0de GoogleAppMeasurement: 6e49ffac7d3f2c3ded9cc663f912a13b67bbd0de
GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4 GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4
@ -480,6 +484,8 @@ SPEC CHECKSUMS:
JPush: b71f497a3c1b825c7843fd97f290b05d5cd75f2e JPush: b71f497a3c1b825c7843fd97f290b05d5cd75f2e
jpush_flutter: c87be254790933c0363684169ef9d3d279a5adc5 jpush_flutter: c87be254790933c0363684169ef9d3d279a5adc5
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
JVerification: 0774807f44dd788c78d50303a14e133735807856
jverify: 337ea43ac1e16f9484f4195abe787d1b6241163c
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
network_info_plus: 6d0c3eb8367b8164fa3fb0c19875e3f59d49697f network_info_plus: 6d0c3eb8367b8164fa3fb0c19875e3f59d49697f
open_filex: 6e26e659846ec990262224a12ef1c528bb4edbe4 open_filex: 6e26e659846ec990262224a12ef1c528bb4edbe4
@ -503,4 +509,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 728f9c851a19709391c77c54ed3556e484b54db6 PODFILE CHECKSUM: 728f9c851a19709391c77c54ed3556e484b54db6
COCOAPODS: 1.16.2 COCOAPODS: 1.14.3

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف بصمات القفل. هل أنت متأكد أنك تريد إعادة ضبطه ؟", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف بصمات القفل. هل أنت متأكد أنك تريد إعادة ضبطه ؟",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف جهاز التحكم عن بعد للقفل. هل تريد إعادة ضبطه ؟", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "بعد إعادة الضبط ، سيتم حذف جهاز التحكم عن بعد للقفل. هل تريد إعادة ضبطه ؟",
"版本说明": "تعليمات الإصدار", "版本说明": "تعليمات الإصدار",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "بعد تشغيل البوابة ، اضغط مع الاستمرار على زر إعادة الضبط لمدة 5 ثوانٍ. انقر فوق التالي عندما يومض ضوء المؤشر الأزرق", "一键登录": "تسجيل الدخول بنقرة واحدة"
"网关添加成功": "تم إضافة البوابة بنجاح"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "След нулиране, пръстовите отпечатъци на заключването ще бъдат изтрити. Сигурен ли сте, че искате да го нулирате?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "След нулиране, пръстовите отпечатъци на заключването ще бъдат изтрити. Сигурен ли сте, че искате да го нулирате?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "След нулиране, дистанционното управление на ключалката ще бъде изтрито. Искате ли да го нулирате?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "След нулиране, дистанционното управление на ключалката ще бъде изтрито. Искате ли да го нулирате?",
"版本说明": "Обяснение на версията", "版本说明": "Обяснение на версията",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "След като шлюзът е включен, натиснете и задръжте бутона reset за 5 секунди. Щракнете върху следващия, когато синята индикаторна светлина мига", "一键登录": "Вход с едно кликване"
"网关添加成功": "Gateway added successfully"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "ব্যান্ডোটারট্রাসেট, thelock'sferprinতা?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "ব্যান্ডোটারট্রাসেট, thelock'sferprinতা?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "ব্যান্ডোটারপ্রাসেট, নিয়ন্ত্রণের নিয়ন্ত্রণ। ডোডো ডাইভান্টটুরে?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "ব্যান্ডোটারপ্রাসেট, নিয়ন্ত্রণের নিয়ন্ত্রণ। ডোডো ডাইভান্টটুরে?",
"版本说明": "ভার্সনপরিচিতি", "版本说明": "ভার্সনপরিচিতি",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "ব্যাস্টোকার্টারটিইসপোভেরোর্ডন, প্রেস এবং প্রেসিটিসেট গানটেটনফোর্র 5 সইভিক ds। বিকশিক", "一键登录": "এক-সিক্লিক্লোগিন"
"网关添加成功": "রুপেডডড্রোজেন্টজেক্যালি"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po resetování budou otisky prstů zámku odstraněny. Opravdu ho chcete obnovit?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po resetování budou otisky prstů zámku odstraněny. Opravdu ho chcete obnovit?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po resetu bude dálkové ovládání zámku odstraněno. Chcete ho obnovit?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po resetu bude dálkové ovládání zámku odstraněno. Chcete ho obnovit?",
"版本说明": "Verze", "版本说明": "Verze",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Po zapnutí brány stiskněte a podržte tlačítko reset po dobu 5 sekund. Klepněte na tlačítko další, když modré světlo ukazatele bliká", "一键登录": "Přihlášení s jedním kliknutím"
"网关添加成功": "Úspěšně přidaná brána"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Efter nulstilling vil låsens fingeraftryk blive slettet. Er du sikker på at du vil nulstille den?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Efter nulstilling vil låsens fingeraftryk blive slettet. Er du sikker på at du vil nulstille den?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Efter nulstilling, fjernbetjeningen af låsen vil blive slettet. Vil du nulstille den?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Efter nulstilling, fjernbetjeningen af låsen vil blive slettet. Vil du nulstille den?",
"版本说明": "Versionsbeskrivelse", "版本说明": "Versionsbeskrivelse",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Når gateway er tændt, tryk på og hold nulstillingsknappen i 5 sekunder. Klik på Næste, når den blå indikator lys blinker", "一键登录": "Login med et enkelt klik"
"网关添加成功": "Gateway tilføjet med succet"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Nach dem Zurücksetzen werden die Finger abdrücke des Schlosses gelöscht. Sind Sie sicher, dass Sie es zurücksetzen wollen?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Nach dem Zurücksetzen werden die Finger abdrücke des Schlosses gelöscht. Sind Sie sicher, dass Sie es zurücksetzen wollen?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nach dem Zurücksetzen wird die Fernbedienung des Schlosses gelöscht. Willst du es zurücksetzen?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nach dem Zurücksetzen wird die Fernbedienung des Schlosses gelöscht. Willst du es zurücksetzen?",
"版本说明": "Versionsbeschreibung", "版本说明": "Versionsbeschreibung",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Nachdem das Gateway eingesc haltet ist, drücken und halten Sie die Reset-Taste für 5 Sekunden. Klicken Sie auf Weiter, wenn die blaue Anzeige leuchte blinkt", "一键登录": "Ein-Klick-Login"
"网关添加成功": "Gateway erfolgreich hinzugefügt"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, τα αποτυπώματα της κλειδαριάς θα διαγραφούν. Είστε σίγουροι ότι θέλετε να το επαναφέρετε;", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, τα αποτυπώματα της κλειδαριάς θα διαγραφούν. Είστε σίγουροι ότι θέλετε να το επαναφέρετε;",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, το τηλεχειριστήριο της κλειδαριάς θα διαγραφεί. Θέλεις να το επαναφέρεις;", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Μετά την επαναφορά, το τηλεχειριστήριο της κλειδαριάς θα διαγραφεί. Θέλεις να το επαναφέρεις;",
"版本说明": "Περιγραφή έκδοσης", "版本说明": "Περιγραφή έκδοσης",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Αφού ενεργοποιηθεί η πύλη, πιέστε και κρατήστε το κουμπί επαναφοράς για 5 δευτερόλεπτα. Κάντε κλικ Επόμενο όταν το μπλε φως δείκτη αναβοσβήνει", "一键登录": "Σύνδεση ενός κλικ"
"网关添加成功": "Η πύλη προστέθηκε με επιτυχία"
} }

View File

@ -62,7 +62,6 @@
"批量授权锁": "Grant multiple locks", "批量授权锁": "Grant multiple locks",
"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "The authorized administrator will have majority permission to operate this lock.", "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "The authorized administrator will have majority permission to operate this lock.",
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。":"This feature allows you to Unlock the Smart Lock Remotely via a Gateway.This Feature can ONLY be Turned ON or OFF via Bluetooth.", "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。":"This feature allows you to Unlock the Smart Lock Remotely via a Gateway.This Feature can ONLY be Turned ON or OFF via Bluetooth.",
"功能开启后,你将可以通过网关远程开锁。": "After the function is enabled, you will be able to remotely unlock through the gateway。",
"排列方式": "List Type", "排列方式": "List Type",
"早到榜": "Early List", "早到榜": "Early List",
"迟到榜": "Late List", "迟到榜": "Late List",
@ -1010,7 +1009,6 @@
"请在锁设置中开启远程开锁": "Please enable remote unlocking in the lock settings", "请在锁设置中开启远程开锁": "Please enable remote unlocking in the lock settings",
"接听": "Answer", "接听": "Answer",
"截图已保存到相册": "Screenshot saved to album", "截图已保存到相册": "Screenshot saved to album",
"录屏已保存到相册": "Screen recording file saved to album",
"添加遥控": "Add remote control", "添加遥控": "Add remote control",
"已连接到锁,请按遥控": "Connected to the lock, please press the remote control", "已连接到锁,请按遥控": "Connected to the lock, please press the remote control",
"遥控号": "Remote control number", "遥控号": "Remote control number",
@ -1121,20 +1119,8 @@
"分简称": "M", "分简称": "M",
"跟随系统": "Follow system", "跟随系统": "Follow system",
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "After reset, the lock's fingerprints will be deleted. Are you sure you want to reset it?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "After reset, the lock's fingerprints will be deleted. Are you sure you want to reset it?",
"通话未接通,已挂断": "Call not connected, hung up",
"通话异常中断": "Abnormal call interruption",
"通话连接失败": "Call connection failed",
"已挂断": "Hanging up",
"正在说话...": "Talking now...",
"设备不在线": "The device is not online",
"设备未配网": "The device is not connected to the network",
"已静音": "The sound has been turned off",
"该锁的远程开锁功能未启用": "The remote unlocking function of this lock is not enabled",
"下载完成,请到相册查看": "Download completed, please go to the album to view",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "When Cat Eye is set to power-saving mode, monitoring cannot be performed. Please switch to other modes in Cat Eye settings",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "Remote unlocking is not possible when Cat Eye is set to power-saving mode. Please switch to another mode in Cat Eye settings",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "After reset, the remote control of the lock will be deleted. Do you want to reset it?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "After reset, the remote control of the lock will be deleted. Do you want to reset it?",
"版本说明": "Version description", "版本说明": "Version description",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "After the gateway is powered on, press and hold the reset button for 5 seconds. Click Next when the blue indicator light flashes", "网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "After the gateway is powered on, press and hold the reset button for 5 seconds. Click Next when the blue indicator light flashes",
"网关添加成功": "Gateway added successfully" "一键登录": "One-click login"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Después de restablecer, se eliminarán las huellas dactilares del bloqueo. ¿Está seguro de que desea restablecerlo?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Después de restablecer, se eliminarán las huellas dactilares del bloqueo. ¿Está seguro de que desea restablecerlo?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Después del reinicio, se eliminará el control remoto de la cerradura. ¿Quieres resetearlo?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Después del reinicio, se eliminará el control remoto de la cerradura. ¿Quieres resetearlo?",
"版本说明": "Instrucciones de versión", "版本说明": "Instrucciones de versión",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Después de encender la puerta de enlace, mantenga presionado el botón de reinicio durante 5 segundos. Haga clic en Siguiente cuando la luz indicadora azul parpadee", "一键登录": "Inicio de sesión con un solo clic"
"网关添加成功": "Gateway añadido con éxito"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku sõrmejäljed. Kas tõesti soovid see lähtestada?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku sõrmejäljed. Kas tõesti soovid see lähtestada?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku kaugjuhtimine. Kas sa tahad seda lähtestada?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Pärast lähtestamist kustutatakse luku kaugjuhtimine. Kas sa tahad seda lähtestada?",
"版本说明": "Versiooniteave", "版本说明": "Versiooniteave",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Kui värav on sisse lülitatud, vajutage nuppu ja hoidke nuppu 5 sekundit. Klõpsa Järgmine, kui sinine indikaator valgus vilgub", "一键登录": "Üheklõpsu sisselogimine"
"网关添加成功": "Gateway lisati edukalt"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Lukon sormenjäljet poistetaan. Haluatko varmasti nollataa sen?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Lukon sormenjäljet poistetaan. Haluatko varmasti nollataa sen?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nollauksen jälkeen lukon kaukosäädin poistetaan. Haluatko palauttaa sen?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nollauksen jälkeen lukon kaukosäädin poistetaan. Haluatko palauttaa sen?",
"版本说明": "Versio", "版本说明": "Versio",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Kun portti on käytössä, paina ja pidä nollauspainiketta 5 sekunnin ajan. Napsauta Seuraava kun sininen ilmaisin valo vilkkuu", "一键登录": "Yhden napsautuksen kirjautuminen"
"网关添加成功": "Gateway lisättiin onnistuneesti"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Après réinitialisation, les empreintes digitales de la serrure seront supprimées. Êtes-vous sûr de vouloir le réinitialiser?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Après réinitialisation, les empreintes digitales de la serrure seront supprimées. Êtes-vous sûr de vouloir le réinitialiser?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Après réinitialisation, la télécommande du verrou sera supprimée. Voulez-vous le réinitialiser?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Après réinitialisation, la télécommande du verrou sera supprimée. Voulez-vous le réinitialiser?",
"版本说明": "Explication de la version", "版本说明": "Explication de la version",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Après la mise sous tension de la passerelle, appuyez sur le bouton de réinitialisation et maintenez-le enfoncé pendant 5 secondes. Cliquez sur Suivant lorsque le voyant bleu clignote", "一键登录": "Connexion en un clic"
"网关添加成功": "Gateway ajouté avec succès"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "לאחר איפוס, טביעות האצבעות של המנעול יימחקו. אתה בטוח שברצונך לאפס את זה?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "לאחר איפוס, טביעות האצבעות של המנעול יימחקו. אתה בטוח שברצונך לאפס את זה?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "לאחר איפוס, השליטה מרחוק של המנעול יימחק. אתה רוצה לאפס את זה?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "לאחר איפוס, השליטה מרחוק של המנעול יימחק. אתה רוצה לאפס את זה?",
"版本说明": "המידע על גרסה", "版本说明": "המידע על גרסה",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "לאחר שהשער מופעל, לחץ והחזק את כפתור האיפוס למשך 5 שניות. לחץ על הבא כאשר האור מחוון כחול מהבהב", "一键登录": "התחברות בלחיצה אחת"
"网关添加成功": "שער הוסיף בהצלחה"
} }

View File

@ -603,7 +603,7 @@
"开门方式": "開門方法", "开门方式": "開門方法",
"请选择": "請選擇", "请选择": "請選擇",
"家人": "家人", "家人": "家人",
"保存": "保存", "保存": "",
"APP推送": "APP推送", "APP推送": "APP推送",
"管理员": "管理", "管理员": "管理",
"未启用": "未啟用", "未启用": "未啟用",
@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置之後,鎖嘅指紋將被刪除。 你確定要重置它啊?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置之後,鎖嘅指紋將被刪除。 你確定要重置它啊?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置之後,鎖嘅遙控器將被刪除。 是否要重置它?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置之後,鎖嘅遙控器將被刪除。 是否要重置它?",
"版本说明": "版本說明", "版本说明": "版本說明",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "網關上電之後長按重置掣5秒鐘。 單擊藍色指示燈閃爍時嘅下一步", "一键登录": "一键登录"
"网关添加成功": "已成功添加網關"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Nakon resetovanja, otisci brave će biti izbrisani. Jeste li sigurni da ga želite resetirati?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Nakon resetovanja, otisci brave će biti izbrisani. Jeste li sigurni da ga želite resetirati?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nakon resetovanja, daljinski upravljač brave će biti izbrisan. Hoæeš da ga resetuješ?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Nakon resetovanja, daljinski upravljač brave će biti izbrisan. Hoæeš da ga resetuješ?",
"版本说明": "Informacije o verziji", "版本说明": "Informacije o verziji",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Nakon što se uključi prolaz, pritisnite i zadržite dugme za reset 5 sekundi. Kliknite slijedeći kada svjetlo plavog indikatora bljeska", "一键登录": "Prijavljivanje jednog klika"
"网关添加成功": "Gateway je uspješno dodano"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "A reset után a zár ujjlenyomatai törlődnek. Biztos vagy benne, hogy vissza szeretné állítani?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "A reset után a zár ujjlenyomatai törlődnek. Biztos vagy benne, hogy vissza szeretné állítani?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "A reset után a zár távirányítója törlődik. Szeretné visszaállítani?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "A reset után a zár távirányítója törlődik. Szeretné visszaállítani?",
"版本说明": "Versió leírás", "版本说明": "Versió leírás",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Az átjáró bekapcsolása után 5 másodpercig nyomja meg a reset gombot. Kattintson a következő gombra, amikor a kék jelző fény villog", "一键登录": "Egykattintásos bejelentkezés"
"网关添加成功": "Átjáró sikeresen hozzáadott"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Setelah mengulang, sidik jari kunci akan dihapus. Yakin ingin meresetnya?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Setelah mengulang, sidik jari kunci akan dihapus. Yakin ingin meresetnya?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Setelah reset, remote control kunci akan dihapus. Ingin mengatur ulang?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Setelah reset, remote control kunci akan dihapus. Ingin mengatur ulang?",
"版本说明": "Catatan versi", "版本说明": "Catatan versi",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Setelah gateway dinyalakan, tekan dan tahan tombol Atur ulang selama 5 detik. Klik berikutnya ketika lampu indikator biru berkedip", "一键登录": "Masuk satu klik"
"网关添加成功": "Gateway berhasil ditambahkan"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Dopo il reset, le impronte digitali del lucchetto verranno cancellate. Sei sicuro di volerlo resettare?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Dopo il reset, le impronte digitali del lucchetto verranno cancellate. Sei sicuro di volerlo resettare?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Dopo il reset, il telecomando del lucchetto verrà eliminato. Vuoi resettarlo?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Dopo il reset, il telecomando del lucchetto verrà eliminato. Vuoi resettarlo?",
"版本说明": "Versione", "版本说明": "Versione",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Dopo che il gateway è acceso, premere e tenere premuto il pulsante di reset per 5 secondi. Fai clic su Avanti quando la spia blu lampeggia", "一键登录": "Accesso con un clic"
"网关添加成功": "Gateway aggiunto correttamente"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "リセット後、ロックの指紋は削除されます。リセットしてもよろしいですか。", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "リセット後、ロックの指紋は削除されます。リセットしてもよろしいですか。",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "リセット後、ロックのリモコンが削除されます。リセットしますか?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "リセット後、ロックのリモコンが削除されます。リセットしますか?",
"版本说明": "バージョン説明", "版本说明": "バージョン説明",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "ゲートウェイの電源がオンになった後、リセットボタンを5秒間押し続けます。青いインジケータライトが点滅したら、 [Next] をクリックします", "一键登录": "ワンクリックログイン"
"网关添加成功": "ゲートウェイの追加に成功"
} }

View File

@ -62,7 +62,6 @@
"批量授权锁": "批量授权锁", "批量授权锁": "批量授权锁",
"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人", "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人",
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。", "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。",
"功能开启后,你将可以通过网关远程开锁。": "功能开启后,你将可以通过网关远程开锁。",
"排列方式": "排列方式", "排列方式": "排列方式",
"早到榜": "早到榜", "早到榜": "早到榜",
"迟到榜": "迟到榜", "迟到榜": "迟到榜",
@ -1013,7 +1012,6 @@
"请在锁设置中开启远程开锁": "请在锁设置中开启远程开锁", "请在锁设置中开启远程开锁": "请在锁设置中开启远程开锁",
"接听": "接听", "接听": "接听",
"截图已保存到相册": "截图已保存到相册", "截图已保存到相册": "截图已保存到相册",
"录屏已保存到相册": "录屏已保存到相册",
"添加遥控": "添加遥控", "添加遥控": "添加遥控",
"已连接到锁,请按遥控": "已连接到锁,请按遥控", "已连接到锁,请按遥控": "已连接到锁,请按遥控",
"遥控号": "遥控号", "遥控号": "遥控号",
@ -1122,19 +1120,7 @@
"分简称": "分简称", "分简称": "分简称",
"跟随系统": "跟随系统", "跟随系统": "跟随系统",
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置后,该锁的指纹都将被删除哦,确认要重置吗?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置后,该锁的指纹都将被删除哦,确认要重置吗?",
"通话未接通,已挂断": "通话未接通,已挂断",
"通话异常中断": "通话异常中断",
"通话连接失败": "通话连接失败",
"已挂断": "已挂断",
"正在说话...": "正在说话...",
"设备不在线": "设备不在线",
"设备未配网": "设备未配网",
"已静音": "已静音",
"该锁的远程开锁功能未启用": "该锁的远程开锁功能未启用",
"下载完成,请到相册查看": "下载完成,请到相册查看",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置后,该锁的遥控都将被删除哦,确认要重置吗?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置后,该锁的遥控都将被删除哦,确认要重置吗?",
"版本说明": "版本说明", "版本说明": "版本说明",
"网关添加成功": "网关添加成功" "一键登录": "一键登录"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Қайта ысырып тастау Шынымен ысырып тастауды қалайсыз ба?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Қайта ысырып тастау Шынымен ысырып тастауды қалайсыз ба?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Қайта ысырып ысырып тасымалдауын өшіріледі. Оны ысырып тастауды қалайсыз ба?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Қайта ысырып ысырып тасымалдауын өшіріледі. Оны ысырып тастауды қалайсыз ба?",
"版本说明": "Версиятын көрсету", "版本说明": "Версиятын көрсету",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Шығыс жегілді соң, ысырып тасымалдау батырмасын басып 5 секунд басыңыз. Көк белгісін жарыялды, келесі басыңыз", "一键登录": "Бір шертті кіру"
"网关添加成功": "Шлюз сәтті қосылды"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 지문이 삭제됩니다. 당신은 그것을 재설정 하시겠습니까?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 지문이 삭제됩니다. 당신은 그것을 재설정 하시겠습니까?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 리모컨이 삭제됩니다. 당신은 그것을 재설정 하시겠습니까?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "재설정 후 잠금 장치의 리모컨이 삭제됩니다. 당신은 그것을 재설정 하시겠습니까?",
"版本说明": "버전 설명", "版本说明": "버전 설명",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "게이트웨이의 전원이 켜지면 재설정 버튼을 5 초 동안 누르고 있습니다. 파란색 표시등이 깜박일 때 다음을 클릭하십시오.", "一键登录": "원 클릭 로그인"
"网关添加成功": "게이트웨이가 성공적으로 추가되었습니다."
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po reset užrakto pirštų atspaudai bus ištrinti. Ar tikrai norite jį atkurti?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po reset užrakto pirštų atspaudai bus ištrinti. Ar tikrai norite jį atkurti?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po reset, nuotolinis valdymo pultas užraktas bus ištrintas. Ar norite jį atkurti?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po reset, nuotolinis valdymo pultas užraktas bus ištrintas. Ar norite jį atkurti?",
"版本说明": "Versijos aprašymas", "版本说明": "Versijos aprašymas",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Įjungus vartus, 5 sekundes paspauskite ir palaikykite mygtuką \"reset\". Spustelėkite toliau, kai mėlyna indikatoriaus šviesa mirksi", "一键登录": "Vieno paspaudimo prisijungimas"
"网关添加成功": "Vartai sėkmingai pridėta"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, cap jari kunci akan dipadamkan. Adakah anda pasti anda mahu menetapkan semula?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, cap jari kunci akan dipadamkan. Adakah anda pasti anda mahu menetapkan semula?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, kawalan jauh kunci akan dipadamkan. Adakah anda mahu menetapkan semula?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Selepas menetapkan semula, kawalan jauh kunci akan dipadamkan. Adakah anda mahu menetapkan semula?",
"版本说明": "Penerangan versi", "版本说明": "Penerangan versi",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Selepas pintu masuk dihidupkan, tekan dan tahan butang reset selama 5 saat. Klik seterusnya apabila lampu penunjuk biru berkelip", "一键登录": "Log masuk satu klik"
"网关添加成功": "Get laluan ditambah berjaya"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Na het resetten worden de vingerafdrukken van het slot verwijderd. Weet je zeker dat je het wilt resetten?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Na het resetten worden de vingerafdrukken van het slot verwijderd. Weet je zeker dat je het wilt resetten?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Na het resetten wordt de afstandsbediening van het slot verwijderd. Wilt u het resetten?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Na het resetten wordt de afstandsbediening van het slot verwijderd. Wilt u het resetten?",
"版本说明": "Versieomschrijving", "版本说明": "Versieomschrijving",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Nadat de gateway is ingeschakeld, houdt u de resetknop 5 seconden ingedrukt. Klik op Volgende wanneer het blauwe lampje knippert", "跟随系统": "Systeem volgen",
"网关添加成功": "Gateway met succes toegevoegd"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po zresetowaniu odciski palców zamka zostaną usunięte. Czy na pewno chcesz go zresetować?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po zresetowaniu odciski palców zamka zostaną usunięte. Czy na pewno chcesz go zresetować?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po zresetowaniu zdalne sterowanie zamkiem zostanie usunięte. Czy chcesz go zresetować?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po zresetowaniu zdalne sterowanie zamkiem zostanie usunięte. Czy chcesz go zresetować?",
"版本说明": "Wersja", "版本说明": "Wersja",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Po włączeniu bramy naciśnij i przytrzymaj przycisk resetowania przez 5 sekund. Kliknij przycisk Dalej, gdy miga niebieska lampka kontrolna", "一键登录": "Login jednym kliknięciem"
"网关添加成功": "Gateway dodany pomyślnie"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Após a redefinição, as impressões digitais do bloqueio serão apagadas. Tens a certeza que queres redefini-lo?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Após a redefinição, as impressões digitais do bloqueio serão apagadas. Tens a certeza que queres redefini-lo?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Após a reinicialização, o controle remoto do bloqueio será excluído. Você quer redefini-lo?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Após a reinicialização, o controle remoto do bloqueio será excluído. Você quer redefini-lo?",
"版本说明": "Descrição da versão", "版本说明": "Descrição da versão",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Depois que o gateway estiver ligado, pressione e segure o botão de reset por 5 segundos. Clique Próximo quando a luz indicadora azul pisca", "一键登录": "Login com um clique"
"网关添加成功": "Gateway adicionado com sucesso"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "După resetare, amprentele încuietorii vor fi şterse. Sigur doriți să-l resetați?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "După resetare, amprentele încuietorii vor fi şterse. Sigur doriți să-l resetați?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "După resetare, telecomanda de blocare va fi ştersă. Vrei să-l resetezi?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "După resetare, telecomanda de blocare va fi ştersă. Vrei să-l resetezi?",
"版本说明": "Descrierea versiunii", "版本说明": "Descrierea versiunii",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "După pornirea poarta, apăsați și țineți butonul de resetare timp de 5 secunde. Click Next atunci când lumina indicator albastru lăturare", "一键登录": "Autentificare cu un singur clicName"
"网关添加成功": "Gateway adăugat cu succes"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "После сброса отпечатки пальцев замка будут удалены. Вы уверены, что хотите его перезагрузить?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "После сброса отпечатки пальцев замка будут удалены. Вы уверены, что хотите его перезагрузить?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "После сброса пульт дистанционного управления замком будет удален. А вы хотите его сбросить?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "После сброса пульт дистанционного управления замком будет удален. А вы хотите его сбросить?",
"版本说明": "Объяснение версии", "版本说明": "Объяснение версии",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "После включения шлюза нажмите и удерживайте кнопку сброса в течение 5 секунд. Нажмите Далее, когда синий индикатор мигает", "一键登录": "Вход в один клик"
"网关添加成功": "Шлюз успешно добавлен"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po resetovaní budú prstové odtlačky zámku vymazané. Ste si istí, že chcete obnoviť?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Po resetovaní budú prstové odtlačky zámku vymazané. Ste si istí, že chcete obnoviť?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po resetovaní bude diaľkové ovládanie zámku vymazané. Chcete ho obnoviť?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Po resetovaní bude diaľkové ovládanie zámku vymazané. Chcete ho obnoviť?",
"版本说明": "Popis verzie", "版本说明": "Popis verzie",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Po zapnutí brány stlačte a podržte tlačidlo reset 5 sekúnd. Kliknite na ďalšie, keď modrý indikátor svetlo bliká", "一键登录": "Prihlásenie jedným kliknutím"
"网关添加成功": "Brána úspešne pridaná"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Након ресетовања, отисци прстију браве ће бити избрисани. Да ли сте сигурни да желите да га ресетујете?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Након ресетовања, отисци прстију браве ће бити избрисани. Да ли сте сигурни да желите да га ресетујете?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Након ресетовања, даљински управљач браве ће бити избрисан. Да ли желите да га ресетујете?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Након ресетовања, даљински управљач браве ће бити избрисан. Да ли желите да га ресетујете?",
"版本说明": "Опис верзије", "版本说明": "Опис верзије",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Након што је гатеваи укључен, притисните и држите дугме за ресетовање за 5 секунди. Кликните Следећи када плава лампица трепери", "一键登录": "Пријава једним кликом"
"网关添加成功": "Гатеваи је успешно додао"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Efter återställd, kommer låsets fingeravtryck tas bort. Är du säker på att du vill återställa den?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Efter återställd, kommer låsets fingeravtryck tas bort. Är du säker på att du vill återställa den?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Efter återställd, fjärrkontrollen på låset tas bort. Vill du återställa den?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Efter återställd, fjärrkontrollen på låset tas bort. Vill du återställa den?",
"版本说明": "Versionsbeskrivning", "版本说明": "Versionsbeskrivning",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "När gateway är aktiverad, tryck på och håll återställningsknappen i 5 sekunder. Klicka Nästa när den blå indikator ljus blinkar", "一键登录": "Ett klick inloggning"
"网关添加成功": "Gateway lagt till med lyckad"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วลายนิ้วมือของล็อคจะถูกลบออกคุณแน่ใจว่าอยากจะรีเซ็ต?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วลายนิ้วมือของล็อคจะถูกลบออกคุณแน่ใจว่าอยากจะรีเซ็ต?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วรีโมทคอนโทรลของล็อคจะถูกลบออกคุณต้องการรีเซ็ตไหม", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "หลังจากรีเซ็ตแล้วรีโมทคอนโทรลของล็อคจะถูกลบออกคุณต้องการรีเซ็ตไหม",
"版本说明": "คำอธิบายรุ่น", "版本说明": "คำอธิบายรุ่น",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "หลังจากเปิดเกตเวย์แล้วให้กดปุ่มรีเซ็ตค้างไว้5วินาทีคลิกถัดไปเมื่อไฟแสดงสถานะสีน้ำเงินกะพริบ", "一键登录": "เข้าสู่ระบบด้วยคลิกเดียว"
"网关添加成功": "เพิ่มเกตเวย์เรียบร้อยแล้ว"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Sıfırlamadan sonra, kilidin parmak izleri silinecektir. Sıfırlamak istediğine emin misin?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Sıfırlamadan sonra, kilidin parmak izleri silinecektir. Sıfırlamak istediğine emin misin?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Sıfırladıktan sonra, kilidin uzaktan kumandası silinecektir. Sıfırlamak ister misin?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Sıfırladıktan sonra, kilidin uzaktan kumandası silinecektir. Sıfırlamak ister misin?",
"版本说明": "Sürüm açıklaması", "版本说明": "Sürüm açıklaması",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Ağ geçidi açıldıktan sonra sıfırlama düğmesine 5 saniye basılı tutun. Mavi gösterge ışığı yanıp söndüğünde İleri'ye tıklayın", "一键登录": "Tek tıklama giriş"
"网关添加成功": "Ağ geçidi başarıyla eklendi"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置後,鎖的指紋將被刪除。 是否確實要重置它?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置後,鎖的指紋將被刪除。 是否確實要重置它?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置後,鎖的遙控器將被刪除。 是否要重置它?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置後,鎖的遙控器將被刪除。 是否要重置它?",
"版本说明": "版本說明", "版本说明": "版本說明",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "網關通電後,按住reset按鈕5秒鐘。 當藍色指示燈閃爍時,單擊 「下一步」", "一键登录": "一鍵登錄"
"网关添加成功": "已成功添加網關"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Після скидання відбитки пальців замка будуть видалені. Ви впевнені, що хочете скинути налаштування?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Після скидання відбитки пальців замка будуть видалені. Ви впевнені, що хочете скинути налаштування?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Після скидання пульт дистанційного керування замком буде видалено. Хочете його скинути?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Після скидання пульт дистанційного керування замком буде видалено. Хочете його скинути?",
"版本说明": "Опис версії", "版本说明": "Опис версії",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Після ввімкнення шлюзу натисніть і утримуйте кнопку скидання протягом 5 секунд. Натисніть «Далі», коли синій індикатор почне блимати", "一键登录": "Вхід в один клік"
"网关添加成功": "Шлюз успішно додано"
} }

View File

@ -1121,6 +1121,5 @@
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Sau khi đặt lại, dấu vân tay của khóa sẽ bị xóa. Bạn có chắc chắn muốn thiết lập lại nó?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "Sau khi đặt lại, dấu vân tay của khóa sẽ bị xóa. Bạn có chắc chắn muốn thiết lập lại nó?",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Sau khi đặt lại, điều khiển từ xa của khóa sẽ bị xóa. Bạn có muốn đặt lại không?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "Sau khi đặt lại, điều khiển từ xa của khóa sẽ bị xóa. Bạn có muốn đặt lại không?",
"版本说明": "Thông tin phiên bản", "版本说明": "Thông tin phiên bản",
"网关通电后长按重置按钮5秒蓝色指示灯闪烁时点击下一步": "Sau khi cổng được bật, Nhấn và giữ nút Reset trong 5 giây. Nhấp vào tiếp theo khi đèn báo màu xanh lam nhấp nháy", "一键登录": "Đăng nhập bằng một cú nhấp chuột"
"网关添加成功": "Gateway đã thêm thành công"
} }

View File

@ -62,7 +62,6 @@
"批量授权锁": "批量授权锁", "批量授权锁": "批量授权锁",
"授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人", "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人": "授权管理员拥有操作这把锁的重要权限,请确保只发给我你信任的人",
"功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。", "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。": "功能开启后,你将可以通过网关远程开锁。此功能的开启和关闭只能在锁附近通过手机蓝牙进行。",
"功能开启后,你将可以通过网关远程开锁。": "功能开启后,你将可以通过网关远程开锁。",
"排列方式": "排列方式", "排列方式": "排列方式",
"早到榜": "早到榜", "早到榜": "早到榜",
"迟到榜": "迟到榜", "迟到榜": "迟到榜",
@ -1011,7 +1010,6 @@
"请在锁设置中开启远程开锁": "请在锁设置中开启远程开锁", "请在锁设置中开启远程开锁": "请在锁设置中开启远程开锁",
"接听": "接听", "接听": "接听",
"截图已保存到相册": "截图已保存到相册", "截图已保存到相册": "截图已保存到相册",
"录屏已保存到相册": "录屏已保存到相册",
"添加遥控": "添加遥控", "添加遥控": "添加遥控",
"已连接到锁,请按遥控": "已连接到锁,请按遥控", "已连接到锁,请按遥控": "已连接到锁,请按遥控",
"遥控号": "遥控号", "遥控号": "遥控号",
@ -1122,19 +1120,7 @@
"分简称": "分", "分简称": "分",
"跟随系统": "跟随系统", "跟随系统": "跟随系统",
"重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置后,该锁的指纹都将被删除哦,确认要重置吗?", "重置后,该锁的指纹都将被删除哦,确认要重置吗?": "重置后,该锁的指纹都将被删除哦,确认要重置吗?",
"通话未接通,已挂断": "通话未接通,已挂断",
"通话异常中断": "通话异常中断",
"通话连接失败": "通话连接失败",
"已挂断": "已挂断",
"正在说话...": "正在说话...",
"设备不在线": "设备不在线",
"设备未配网": "设备未配网",
"已静音": "已静音",
"该锁的远程开锁功能未启用": "该锁的远程开锁功能未启用",
"下载完成,请到相册查看": "下载完成,请到相册查看",
"猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式": "猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式",
"猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式": "猫眼设置为省电模式时无法进行远程开锁,请在猫眼设置中切换为其他模式",
"重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置后,该锁的遥控都将被删除哦,确认要重置吗?", "重置后,该锁的遥控都将被删除哦,确认要重置吗?": "重置后,该锁的遥控都将被删除哦,确认要重置吗?",
"版本说明": "版本说明", "版本说明": "版本说明",
"网关添加成功": "网关添加成功" "一键登录": "一键登录"
} }

View File

@ -1,6 +1,9 @@
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/apm/apm_helper.dart'; import 'package:star_lock/apm/apm_helper.dart';
import 'package:jverify/jverify.dart';
import 'package:star_lock/appRouters.dart'; import 'package:star_lock/appRouters.dart';
import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/blue/blue_manage.dart'; import 'package:star_lock/blue/blue_manage.dart';
@ -17,6 +20,7 @@ import '../../mine/mine/starLockMine_logic.dart';
import '../../network/api_repository.dart'; import '../../network/api_repository.dart';
import '../../tools/dateTool.dart'; import '../../tools/dateTool.dart';
import '../../tools/eventBusEventManage.dart'; import '../../tools/eventBusEventManage.dart';
import '../../tools/jverify_one_click_login.dart';
import '../../tools/showTipView.dart'; import '../../tools/showTipView.dart';
import '../../tools/storage.dart'; import '../../tools/storage.dart';
import '../register/entity/checkIP_entity.dart'; import '../register/entity/checkIP_entity.dart';
@ -97,6 +101,43 @@ class StarLockLoginLogic extends BaseGetXController {
} }
} }
Future<void> oneClickLoginAction() async {
await JverifyOneClickLoginManage().loginAuth((e) async {
final int? code = e.code;
final String? content = e.message;
// final String operator = map['operator'];
AppLog.log('1111code:$code content:$content');
if (code == 6000) {
final LoginEntity entity = await ApiRepository.to.oneClickLogin(
loginType: '3',
loginToken: content ?? '',
deviceInfo: state.deviceInfoMap);
if (entity.errorCode!.codeIsSuccessful) {
ApmHelper.instance.trackEvent('login_result', {
'account': state.emailOrPhone.value,
'date': DateTool().getNowDateWithType(1),
'login_res': '成功',
});
Storage.saveLoginData(entity.data);
Storage.setBool(saveIsVip, entity.data!.isVip == 1);
eventBus.fire(MineInfoChangeRefreshUI());
if (Get.isRegistered<LockMainLogic>()) {
Get.find<LockMainLogic>().getStarLockInfo(isUnShowLoading: true);
}
Get.offNamedUntil(Routers.starLockMain, (Route route) => false);
BlueManage().scanDevices.clear(); //
} else {
ApmHelper.instance.trackEvent('login_result', {
'account': state.emailOrPhone.value,
'date': DateTool().getNowDateWithType(1),
'login_res': '${entity.errorCode}--${entity.errorMsg}',
});
}
}
});
}
Future<void> checkIpAction() async { Future<void> checkIpAction() async {
final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: ''); final CheckIPEntity entity = await ApiRepository.to.checkIpAction(ip: '');
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
@ -134,6 +175,16 @@ class StarLockLoginLogic extends BaseGetXController {
state.canNext.value = state.pwdIsOK && state.isEmailOrPhone; state.canNext.value = state.pwdIsOK && state.isEmailOrPhone;
} }
@override
Future<void> onInit() async {
super.onInit();
JverifyOneClickLoginManage();
oneClickLoginAction();
state.isCheckVerifyEnable.value =
await JverifyOneClickLoginManage().checkVerifyEnable();
}
@override @override
void onClose() { void onClose() {
state.onClose(); state.onClose();

View File

@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -14,6 +15,7 @@ import '../../appRouters.dart';
import '../../app_settings/app_colors.dart'; import '../../app_settings/app_colors.dart';
import '../../common/XSConstantMacro/XSConstantMacro.dart'; import '../../common/XSConstantMacro/XSConstantMacro.dart';
import '../../tools/commonItem.dart'; import '../../tools/commonItem.dart';
import '../../tools/jverify_one_click_login.dart';
import '../../tools/submitBtn.dart'; import '../../tools/submitBtn.dart';
import '../../tools/tf_loginInput.dart'; import '../../tools/tf_loginInput.dart';
import '../../tools/titleAppBar.dart'; import '../../tools/titleAppBar.dart';
@ -237,6 +239,24 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
} }
} }
: null)), : null)),
// SizedBox(height: 20.w),
// Obx(() => Visibility(
// visible: state.isCheckVerifyEnable.value,
// child: SubmitBtn(
// btnName: '一键登录',
// fontSize: 28.sp,
// borderRadius: 20.w,
// padding: EdgeInsets.only(top: 25.w, bottom: 25.w),
// // isDisabled: state.canNext.value,
// onClick: () {
// if (state.agree.value == false) {
// logic.showToast('请先同意用户协议及隐私政策'.tr);
// return;
// } else {
// logic.oneClickLoginAction();
// }
// }),
// )),
SizedBox(height: 50.w), SizedBox(height: 50.w),
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
@ -261,24 +281,23 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
child: SizedBox( child: SizedBox(
width: 10.sp, width: 10.sp,
)), )),
if (F.isLite) Obx(() => Visibility(
Container() visible: state.isCheckVerifyEnable.value,
else child: GestureDetector(
GestureDetector(
child: SizedBox( child: SizedBox(
// width: 150.w, // width: 150.w,
height: 50.h, height: 50.h,
// color: Colors.red, // color: Colors.red,
child: Center( child: Center(
child: Text('演示模式'.tr, child: Text('一键登录'.tr,
style: TextStyle( style: TextStyle(
fontSize: 22.sp, color: AppColors.mainColor)), fontSize: 22.sp,
color: AppColors.mainColor)),
), ),
), ),
onTap: () { onTap: logic.oneClickLoginAction,
Get.toNamed(Routers.demoModeLockDetailPage); ),
}, ))
)
], ],
), ),
], ],

View File

@ -45,6 +45,8 @@ class StarLockLoginState {
'deviceType': 0 'deviceType': 0
}.obs; }.obs;
RxBool isCheckVerifyEnable = false.obs;
void onClose() { void onClose() {
// emailOrPhoneController.dispose(); // emailOrPhoneController.dispose();
// pwdController.dispose(); // pwdController.dispose();

View File

@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -186,14 +187,12 @@ class _StarLockLoginPageState extends State<StarLockLoginXHJPage> {
onPressed: () async { onPressed: () async {
final dynamic data = final dynamic data =
await Get.toNamed(Routers.starLockRegisterPage); await Get.toNamed(Routers.starLockRegisterPage);
if (data != null) {
state.emailOrPhoneController.text = state.emailOrPhoneController.text =
data['phoneOrEmailStr']; data['phoneOrEmailStr'];
logic.checkNext(state.emailOrPhoneController); logic.checkNext(state.emailOrPhoneController);
state.pwdController.text = data['pwd']; state.pwdController.text = data['pwd'];
logic.checkNext(state.pwdController); logic.checkNext(state.pwdController);
setState(() {}); setState(() {});
}
}, },
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
backgroundColor: AppColors.mainColor), backgroundColor: AppColors.mainColor),
@ -229,25 +228,25 @@ class _StarLockLoginPageState extends State<StarLockLoginXHJPage> {
child: SizedBox( child: SizedBox(
width: 10.sp, width: 10.sp,
)), )),
if (F.isLite) Obx(() => Visibility(
Container() visible: state.isCheckVerifyEnable.value,
else child: GestureDetector(
GestureDetector(
child: SizedBox( child: SizedBox(
// width: 150.w, // width: 150.w,
height: 50.h, height: 50.h,
// color: Colors.red, // color: Colors.red,
child: Center( child: Center(
child: Text('演示模式'.tr, child: Text('一键登录'.tr,
style: TextStyle( style: TextStyle(
fontSize: 22.sp, fontSize: 22.sp,
color: AppColors.mainColor)), color: AppColors.mainColor)),
), ),
), ),
onTap: () { onTap: () async {
Get.toNamed(Routers.demoModeLockDetailPage); logic.oneClickLoginAction();
}, },
) ),
))
], ],
), ),
], ],

View File

@ -3,6 +3,7 @@ import 'dart:async';
import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/apm/apm_helper.dart'; import 'package:star_lock/apm/apm_helper.dart';
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart';
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_state.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_state.dart';
@ -68,6 +69,7 @@ class DoorLockLogLogic extends BaseGetXController {
final List uploadList = []; final List uploadList = [];
for (int i = 0; i < getList.length; i++) { for (int i = 0; i < getList.length; i++) {
final List<int> indexList = getList[i]; final List<int> indexList = getList[i];
try {
// AppLog.log("indexList:$indexList"); // AppLog.log("indexList:$indexList");
final Map indexMap = {}; final Map indexMap = {};
indexMap['type'] = indexList[0].toString(); indexMap['type'] = indexList[0].toString();
@ -96,6 +98,9 @@ class DoorLockLogLogic extends BaseGetXController {
} }
indexMap['date'] = '$operateDate'; indexMap['date'] = '$operateDate';
uploadList.add(indexMap); uploadList.add(indexMap);
} catch (e) {
AppLog.log('操作记录:$indexList,解析失败,跳过该跳记录,进行下一条记录解析。');
}
} }
if (dataLength == state.logCountPage) { if (dataLength == state.logCountPage) {
state.ifHaveNext = true; state.ifHaveNext = true;

View File

@ -344,6 +344,7 @@ class LockDetailLogic extends BaseGetXController {
final List uploadList = []; final List uploadList = [];
for (int i = 0; i < getList.length; i++) { for (int i = 0; i < getList.length; i++) {
final List<int> indexList = getList[i]; final List<int> indexList = getList[i];
try {
AppLog.log('indexList:$indexList'); AppLog.log('indexList:$indexList');
final Map indexMap = {}; final Map indexMap = {};
indexMap['type'] = indexList[0].toString(); indexMap['type'] = indexList[0].toString();
@ -365,7 +366,8 @@ class LockDetailLogic extends BaseGetXController {
(0xFF & indexList[6]); (0xFF & indexList[6]);
int operateDate = time * 1000; int operateDate = time * 1000;
if (DateTime.fromMillisecondsSinceEpoch(operateDate).isAfter( if (DateTime.fromMillisecondsSinceEpoch(operateDate).isAfter(
DateTime.fromMillisecondsSinceEpoch(getUTCNetTime() * 1000))) { DateTime.fromMillisecondsSinceEpoch(
getUTCNetTime() * 1000))) {
continue; continue;
} }
@ -377,6 +379,9 @@ class LockDetailLogic extends BaseGetXController {
state.operateDate = operateDate; state.operateDate = operateDate;
} }
} catch (e) {
AppLog.log('操作记录:$indexList,解析失败,跳过该跳记录,进行下一条记录解析。');
}
} }
lockRecordUploadData(uploadList); lockRecordUploadData(uploadList);

View File

@ -4,7 +4,7 @@ import 'flavors.dart';
import 'main.dart' as runner; import 'main.dart' as runner;
Future<void> main() async { Future<void> main() async {
F.appFlavor = Flavor.pre; F.appFlavor = Flavor.xhj;
// AppLog.log('local调用了main函数'); // AppLog.log('local调用了main函数');
await runner.main(); await runner.main();
} }

View File

@ -5,6 +5,7 @@ abstract class Api {
final String getSliderVerifyImgUrl = '/user/getSliderVerifyImg'; final String getSliderVerifyImgUrl = '/user/getSliderVerifyImg';
final String checkImgUrl = '/user/isSliderValid'; final String checkImgUrl = '/user/isSliderValid';
final String loginUrl = '/user/login'; final String loginUrl = '/user/login';
final String oneClickLoginUrl = '/user/quickLogin'; //
final String resetPasswordURL = '/user/resetPassword'; // final String resetPasswordURL = '/user/resetPassword'; //
final String getCountryRegionURL = '/system/listCountry'; // final String getCountryRegionURL = '/system/listCountry'; //
final String electronicKeyListURL = '/key/listUser'; // final String electronicKeyListURL = '/key/listUser'; //

View File

@ -80,6 +80,17 @@ class ApiProvider extends BaseProvider {
'deviceInfo': deviceInfo, 'deviceInfo': deviceInfo,
})); }));
Future<Response> oneClickLogin(
String loginType, String loginToken, Map deviceInfo) =>
post(
oneClickLoginUrl.toUrl,
jsonEncode({
'loginType': loginType,
'platId': '2',
'loginToken': loginToken,
'deviceInfo': deviceInfo,
}));
Future<Response> resetPassword( Future<Response> resetPassword(
String countryCode, String countryCode,
String account, String account,

View File

@ -146,6 +146,16 @@ class ApiRepository {
return LoginEntity.fromJson(res.body); return LoginEntity.fromJson(res.body);
} }
//
Future<LoginEntity> oneClickLogin(
{required String loginType,
required String loginToken,
required Map deviceInfo}) async {
final res =
await apiProvider.oneClickLogin(loginType, loginToken, deviceInfo);
return LoginEntity.fromJson(res.body);
}
// //
Future<LoginEntity> resetPassword( Future<LoginEntity> resetPassword(
String countryCode, String countryCode,

View File

@ -0,0 +1,272 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:jverify/jverify.dart';
import 'package:star_lock/app_settings/app_colors.dart';
import '../app_settings/app_settings.dart';
import '../common/XSConstantMacro/XSConstantMacro.dart';
import '../flavors.dart';
class JverifyOneClickLoginManage {
factory JverifyOneClickLoginManage() => shareManager()!;
JverifyOneClickLoginManage._init() {
_initSDK();
}
static JverifyOneClickLoginManage? _manager;
static JverifyOneClickLoginManage? shareManager() {
_manager ??= JverifyOneClickLoginManage._init();
return _manager;
}
JverifyOneClickLoginManage? get manager => shareManager();
Jverify jverify = Jverify();
/// key
String f_result_key = 'result';
///
String f_code_key = 'code';
/// flutter message
String f_msg_key = 'message';
///
String f_opr_key = 'operator';
Future<void> _initSDK() async {
try {
await initPlatformState();
isInitSuccess();
getToken();
preLogin();
} catch (e) {
AppLog.log('SDK 初始化错误: $e');
}
}
Future<void> initPlatformState() async {
// SDK
jverify.addSDKSetupCallBackListener((JVSDKSetupEvent event) {
print('receive sdk setup call back event :${event.toMap()}');
});
jverify.setDebugMode(true); //
jverify.setCollectionAuth(true);
String appKey;
if (F.isSKY) {
appKey = '7ff37d174c1a568a89e98dad';
AppLog.log('appKey:7ff37d174c1a568a89e98dad');
} else {
appKey = '251fc8074820d122b6de58d2';
AppLog.log('appKey:251fc8074820d122b6de58d2');
}
jverify.setup(
appKey: appKey, //"你自己应用的 AppKey",
channel: 'devloper');
///
jverify.addAuthPageEventListener((JVAuthPageEvent event) {
print('receive auth page event :${event.toMap()}');
});
}
/// sdk
void isInitSuccess() {
jverify.isInitSuccess().then((map) {
final bool result = map[f_result_key];
AppLog.log('sdk 初始化结果:$map');
if (result) {
AppLog.log('sdk 初始化成功');
} else {
AppLog.log('sdk 初始化失败');
}
});
}
///
Future<bool> checkVerifyEnable() async {
final Map map = await jverify.checkVerifyEnable();
final bool result = map[f_result_key];
return result;
// state.jverify.checkVerifyEnable().then((map) {
// final bool result = map[f_result_key];
// if (result) {
// AppLog.log('当前网络环境【支持认证】!');
// } else {
// AppLog.log('当前网络环境【不支持认证】!');
// }
// return result;
// });
}
void getToken() {
jverify.checkVerifyEnable().then((map) {
final bool result = map[f_result_key];
if (result) {
jverify.getToken().then((map) {
final int code = map[f_code_key];
final String token = map[f_msg_key];
final String operator = map[f_opr_key];
AppLog.log('getToken code:$code token:$token operator:$operator');
});
} else {
AppLog.log('[2016],msg = 当前网络环境不支持认证');
}
});
}
///
void preLogin() {
jverify.checkVerifyEnable().then((map) {
final bool result = map[f_result_key];
if (result) {
jverify.preLogin().then((map) {
AppLog.log('预取号接口回调:${map.toString()}');
final int code = map[f_code_key];
final String message = map[f_msg_key];
});
} else {
AppLog.log('[2016],msg = 当前网络环境不支持认证');
}
});
}
/// SDK
Future<void> loginAuth(
Function(JVListenerEvent jvListenerEvent) action) async {
Map map = await jverify.checkVerifyEnable();
final bool result = map[f_result_key];
print('checkVerifyEnable $map');
//使sms的时候不检查result
// if (result) {
// return await jverify.loginAuth(true);
// }
// return null;
if (result) {
bool isiOS = Platform.isIOS;
/// UI
/// android项目将图片存放至drawable文件夹下使,btn_login.xml,"btn_login"
/// ios项目存放在 Assets.xcassets
JVUIConfig uiConfig = JVUIConfig();
// uiConfig.authBGGifPath = "main_gif";
// uiConfig.authBGVideoPath="main_vi";
// uiConfig.authBGVideoPath = 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4';
uiConfig.authBackgroundImage = 'images/icon_left_grey.png';
// uiConfig.navHidden = !isiOS;
uiConfig.navColor = AppColors.mainColor.value;
uiConfig.navText = '一键登录'.tr;
uiConfig.navTextColor = Colors.white.value;
uiConfig.navReturnImgPath = 'return_bg'; //
uiConfig.logoWidth = 100;
uiConfig.logoHeight = 100;
//uiConfig.logoOffsetX = isiOS ? 0 : null;//(screenWidth/2 - uiConfig.logoWidth/2).toInt();
uiConfig.logoOffsetY = 100;
uiConfig.logoVerticalLayoutItem = JVIOSLayoutItem.ItemSuper;
uiConfig.logoHidden = false;
uiConfig.logoImgPath = 'logo';
uiConfig.numberFieldWidth = 200;
uiConfig.numberFieldHeight = 40;
//uiConfig.numFieldOffsetX = isiOS ? 0 : null;//(screenWidth/2 - uiConfig.numberFieldWidth/2).toInt();
uiConfig.numFieldOffsetY = isiOS ? 120 : 220;
uiConfig.numberVerticalLayoutItem = JVIOSLayoutItem.ItemLogo;
uiConfig.numberColor = AppColors.mainColor.value;
uiConfig.numberSize = 18;
uiConfig.sloganOffsetY = isiOS ? 120 : 260;
uiConfig.sloganVerticalLayoutItem = JVIOSLayoutItem.ItemNumber;
uiConfig.sloganTextColor = Colors.black.value;
uiConfig.sloganTextSize = 15;
// uiConfig.slogan
//uiConfig.sloganHidden = 0;
uiConfig.logBtnOffsetX = 20;
uiConfig.logBtnWidth = double.parse('${1.sw - 20 * 2}').toInt();
uiConfig.logBtnHeight = 50;
//uiConfig.logBtnOffsetX = isiOS ? 0 : null;//(screenWidth/2 - uiConfig.logBtnWidth/2).toInt();
uiConfig.logBtnOffsetY = isiOS ? 120 : 330;
uiConfig.logBtnVerticalLayoutItem = JVIOSLayoutItem.ItemNumber;
uiConfig.logBtnText = '一键登录'.tr;
uiConfig.logBtnTextColor = Colors.white.value;
uiConfig.logBtnTextSize = 16;
uiConfig.logBtnBackgroundPath = '';
// uiConfig.logBtnTextBold = true;
// uiConfig.loginBtnNormalImage = 'login_btn_normal'; //
// uiConfig.loginBtnPressedImage = 'login_btn_press'; //
// uiConfig.loginBtnUnableImage = 'login_btn_unable'; //
uiConfig.privacyHintToast =
true; //only android toast
uiConfig.privacyState = false; //
uiConfig.privacyCheckboxSize = 20;
uiConfig.checkedImgPath = 'check_image'; //
uiConfig.uncheckedImgPath = 'uncheck_image'; //
uiConfig.privacyCheckboxInCenter = true;
uiConfig.privacyCheckboxHidden = false;
uiConfig.isAlertPrivacyVc = true;
//uiConfig.privacyOffsetX = isiOS ? (20 + uiConfig.privacyCheckboxSize) : null;
uiConfig.privacyOffsetY = 30; //
uiConfig.privacyOffsetX = 15; //
uiConfig.privacyVerticalLayoutItem = JVIOSLayoutItem.ItemSuper;
uiConfig.clauseName = '协议1';
uiConfig.clauseUrl = 'http://www.baidu.com';
uiConfig.clauseBaseColor = Colors.black.value;
uiConfig.clauseNameTwo = '协议二';
uiConfig.clauseUrlTwo = 'http://www.hao123.com';
uiConfig.clauseColor = AppColors.mainColor.value;
uiConfig.privacyText = ['我已阅读并同意'.tr];
uiConfig.privacyTextSize = 13;
uiConfig.privacyItem = [
JVPrivacy('用户协议'.tr, XSConstantMacro.userAgreementURL,
beforeName: '', afterName: '', separator: ''),
JVPrivacy('隐私政策'.tr, XSConstantMacro.privacyPolicyURL, separator: '')
];
uiConfig.textVerAlignment = 1;
//uiConfig.privacyWithBookTitleMark = true;
//uiConfig.privacyTextCenterGravity = false;
uiConfig.authStatusBarStyle = JVIOSBarStyle.StatusBarStyleDarkContent;
uiConfig.privacyStatusBarStyle = JVIOSBarStyle.StatusBarStyleDefault;
uiConfig.modelTransitionStyle = JVIOSUIModalTransitionStyle.CrossDissolve;
uiConfig.statusBarColorWithNav = true;
// uiConfig.virtualButtonTransparent = true;
uiConfig.privacyStatusBarColorWithNav = true;
uiConfig.privacyVirtualButtonTransparent = true;
uiConfig.needStartAnim = true;
uiConfig.needCloseAnim = true;
uiConfig.enterAnim = 'activity_slide_enter_bottom';
uiConfig.exitAnim = 'activity_slide_exit_bottom';
uiConfig.privacyNavColor = AppColors.mainColor.value;
uiConfig.privacyNavTitleTextColor = Colors.white.value;
uiConfig.privacyNavTitleTextSize = 16;
/// UI
jverify.setCustomAuthorizationView(true, uiConfig,
landscapeConfig: uiConfig);
jverify.loginAuthSyncApi2(
autoDismiss: true,
loginAuthcallback: (event) {
action(event);
// AppLog.log('获取到 loginAuthSyncApi 接口返回数据code=${event.code},message = ${event.message},operator = ${event.operator}');
});
}
}
}

View File

@ -1,3 +1,4 @@
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
@ -109,8 +110,9 @@ class PermissionDialog {
if (Get.context == null) { if (Get.context == null) {
return false; return false;
} }
final AndroidDeviceInfo androidInfo = await DeviceInfoPlugin().androidInfo;
final bool isAndroid33 = final bool isAndroid33 =
AppPlatform.isAndroid && AppPlatform.getSdkIntValue() >= 33; AppPlatform.isAndroid && androidInfo.version.sdkInt >= 33;
// //
List<Permission> requestPermission() { List<Permission> requestPermission() {
@ -197,8 +199,9 @@ class PermissionDialog {
if (Get.context == null) { if (Get.context == null) {
return false; return false;
} }
final AndroidDeviceInfo androidInfo = await DeviceInfoPlugin().androidInfo;
final bool isAndroid33 = final bool isAndroid33 =
AppPlatform.isAndroid && AppPlatform.getSdkIntValue() >= 33; AppPlatform.isAndroid && androidInfo.version.sdkInt >= 33;
// //
List<Permission> requestPermission() { List<Permission> requestPermission() {

View File

@ -1045,6 +1045,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.4.13" version: "0.4.13"
jverify:
dependency: "direct main"
description:
name: jverify
sha256: "26d1667d8c71403b77a2620a8c618625f8b4bfc950dac285b8f35ebc5e60fa5a"
url: "https://pub.dev"
source: hosted
version: "3.0.0"
leak_tracker: leak_tracker:
dependency: transitive dependency: transitive
description: description:

View File

@ -253,6 +253,7 @@ dependencies:
flutter_bugly: ^1.0.2 flutter_bugly: ^1.0.2
open_filex: ^4.4.0 open_filex: ^4.4.0
jverify: 3.0.0
#<cn> #<cn>
umeng_common_sdk: 1.2.8 umeng_common_sdk: 1.2.8
#</cn> #</cn>