From 4665f08ad36fcf736a65f899c58654e9d6aea23a Mon Sep 17 00:00:00 2001 From: Oscar Mira Date: Wed, 16 Oct 2024 11:53:28 +0200 Subject: [PATCH] Improve UI for FCM service alerts --- .../securesms/ApplicationContext.java | 18 +++++-------- .../securesms/banner/banners/DozeBanner.kt | 26 +++++-------------- .../NotificationsSettingsFragment.kt | 7 +++-- .../NotificationsSettingsViewModel.kt | 4 ++- .../securesms/jobs/FcmRefreshJob.java | 19 +++++++++----- .../securesms/jobs/RefreshAttributesJob.java | 3 ++- .../securesms/keyvalue/AccountValues.kt | 3 +-- .../securesms/keyvalue/InternalValues.java | 4 +++ .../securesms/keyvalue/SettingsValues.java | 9 ++++++- .../messages/IncomingMessageObserver.kt | 6 ++--- app/src/main/res/values-ar/strings2.xml | 3 --- app/src/main/res/values-bs/strings2.xml | 3 --- app/src/main/res/values-ca/strings2.xml | 3 --- app/src/main/res/values-cs/strings2.xml | 3 --- app/src/main/res/values-de/strings2.xml | 3 --- app/src/main/res/values-es/strings2.xml | 3 --- app/src/main/res/values-eu/strings2.xml | 2 -- app/src/main/res/values-fi/strings2.xml | 1 - app/src/main/res/values-fr/strings2.xml | 3 --- app/src/main/res/values-ga/strings2.xml | 3 --- app/src/main/res/values-gl/strings2.xml | 3 --- app/src/main/res/values-hr/strings2.xml | 3 --- app/src/main/res/values-hu/strings2.xml | 3 --- app/src/main/res/values-in/strings2.xml | 1 - app/src/main/res/values-it/strings2.xml | 3 --- app/src/main/res/values-iw/strings2.xml | 3 --- app/src/main/res/values-ja/strings2.xml | 3 --- app/src/main/res/values-ko/strings2.xml | 3 --- app/src/main/res/values-lt/strings2.xml | 2 -- app/src/main/res/values-nb/strings2.xml | 2 -- app/src/main/res/values-nl/strings2.xml | 3 --- app/src/main/res/values-pl/strings2.xml | 3 --- app/src/main/res/values-pt/strings2.xml | 3 --- app/src/main/res/values-ro/strings2.xml | 3 --- app/src/main/res/values-ru/strings2.xml | 3 --- app/src/main/res/values-tr/strings2.xml | 3 --- app/src/main/res/values-uk/strings2.xml | 3 --- app/src/main/res/values-zh-rCN/strings2.xml | 3 --- app/src/main/res/values/strings.xml | 4 +-- app/src/main/res/values/strings2.xml | 13 +++++----- 40 files changed, 57 insertions(+), 136 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 9e91b053ee..e51facf174 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -27,7 +27,6 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.annotation.WorkerThread; -import androidx.core.app.NotificationManagerCompat; import androidx.core.content.ContextCompat; import com.bumptech.glide.Glide; @@ -91,7 +90,6 @@ import org.thoughtcrime.securesms.mms.SignalGlideModule; import org.thoughtcrime.securesms.net.NetworkManager; import org.thoughtcrime.securesms.notifications.MessageNotifier; -import org.thoughtcrime.securesms.notifications.NotificationIds; import org.thoughtcrime.securesms.providers.BlobProvider; import org.thoughtcrime.securesms.ratelimit.RateLimitUtil; import org.thoughtcrime.securesms.recipients.Recipient; @@ -113,7 +111,6 @@ import org.thoughtcrime.securesms.util.DynamicTheme; import org.thoughtcrime.securesms.util.RemoteConfig; import org.thoughtcrime.securesms.util.FileUtils; -import org.thoughtcrime.securesms.util.PlayServicesUtil; import org.thoughtcrime.securesms.util.SignalLocalMetrics; import org.thoughtcrime.securesms.util.SignalUncaughtExceptionHandler; import org.thoughtcrime.securesms.util.StorageUtil; @@ -504,22 +501,19 @@ public void updatePushNotificationServices() { return; } - PlayServicesUtil.PlayServicesStatus fcmStatus = PlayServicesUtil.getPlayServicesStatus(this); - boolean fcmEnabled = SignalStore.account().isFcmEnabled(); boolean forceWebSocket = SignalStore.internal().isWebsocketModeForced(); + boolean forceFcm = SignalStore.internal().isFcmModeForced(); - if (forceWebSocket || fcmStatus == PlayServicesUtil.PlayServicesStatus.DISABLED) { + if (forceWebSocket || !BuildConfig.USE_PLAY_SERVICES) { if (fcmEnabled) { - Log.i(TAG, "Play Services are disabled. Disabling FCM."); + Log.i(TAG, "Play Services not allowed. Disabling FCM."); updateFcmStatus(false); } else { Log.d(TAG, "FCM is disabled."); - SignalStore.account().setFcmTokenLastSetTime(-1); } - } else if (fcmStatus == PlayServicesUtil.PlayServicesStatus.SUCCESS && !fcmEnabled && - SignalStore.account().getFcmTokenLastSetTime() < 0) { - Log.i(TAG, "Play Services are newly-available. Updating to use FCM."); + } else if (forceFcm && !fcmEnabled && BuildConfig.USE_PLAY_SERVICES) { + Log.i(TAG, "FCM preferred. Updating to use FCM."); updateFcmStatus(true); } else { long lastSetTime = SignalStore.account().getFcmTokenLastSetTime(); @@ -541,7 +535,7 @@ public void updatePushNotificationServices() { private void updateFcmStatus(boolean fcmEnabled) { SignalStore.account().setFcmEnabled(fcmEnabled); if (!fcmEnabled) { - NotificationManagerCompat.from(this).cancel(NotificationIds.FCM_FAILURE); + FcmRefreshJob.cancelFcmFailureNotification(this); } AppDependencies.getJobManager().startChain(new FcmRefreshJob()) .then(new RefreshAttributesJob()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/banner/banners/DozeBanner.kt b/app/src/main/java/org/thoughtcrime/securesms/banner/banners/DozeBanner.kt index 71eec49854..7ec43d60af 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/banner/banners/DozeBanner.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/banner/banners/DozeBanner.kt @@ -6,7 +6,6 @@ package org.thoughtcrime.securesms.banner.banners import android.content.Context -import androidx.annotation.StringRes import androidx.compose.foundation.layout.PaddingValues import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource @@ -15,11 +14,11 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf import org.signal.core.ui.Previews import org.signal.core.ui.SignalPreview -import org.thoughtcrime.securesms.BuildConfig import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.banner.Banner import org.thoughtcrime.securesms.banner.ui.compose.Action import org.thoughtcrime.securesms.banner.ui.compose.DefaultBanner +import org.thoughtcrime.securesms.banner.ui.compose.Importance import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.util.PowerManagerCompat import org.thoughtcrime.securesms.util.ServiceUtil @@ -28,7 +27,7 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences class DozeBanner(private val context: Context) : Banner() { override val enabled: Boolean - get() = !SignalStore.account.pushAvailable && !TextSecurePreferences.hasPromptedOptimizeDoze(context) && !ServiceUtil.getPowerManager(context).isIgnoringBatteryOptimizations(context.packageName) + get() = !SignalStore.account.fcmEnabled && !TextSecurePreferences.hasPromptedOptimizeDoze(context) && !ServiceUtil.getPowerManager(context).isIgnoringBatteryOptimizations(context.packageName) override val dataFlow: Flow get() = flowOf(Unit) @@ -51,11 +50,12 @@ class DozeBanner(private val context: Context) : Banner() { @Composable private fun Banner(contentPadding: PaddingValues, onDismissListener: () -> Unit = {}, onOkListener: () -> Unit = {}) { DefaultBanner( - title = stringResource(id = dozeTitle), - body = stringResource(id = dozeBody), + title = null, + body = stringResource(id = R.string.DozeReminder_allow_molly_to_deliver_timely_notifications), + importance = Importance.ERROR, onDismissListener = onDismissListener, actions = listOf( - Action(android.R.string.ok) { + Action(R.string.DozeReminder_disable_battery_restrictions) { onOkListener() } ), @@ -63,20 +63,6 @@ private fun Banner(contentPadding: PaddingValues, onDismissListener: () -> Unit ) } -@StringRes -private val dozeTitle: Int = if (BuildConfig.USE_PLAY_SERVICES) { - R.string.DozeReminder_optimize_for_missing_play_services -} else { - R.string.DozeReminder_optimize_for_timely_notifications -} - -@StringRes -private val dozeBody: Int = if (BuildConfig.USE_PLAY_SERVICES) { - R.string.DozeReminder_this_device_does_not_support_play_services_tap_to_disable_system_battery -} else { - R.string.DozeReminder_tap_to_allow_molly_to_retrieve_messages_while_the_device_is_in_standby -} - @SignalPreview @Composable private fun BannerPreview() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt index 0dd3e7b4c3..20e88da5cb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsFragment.kt @@ -316,7 +316,6 @@ class NotificationsSettingsFragment : DSLSettingsFragment(R.string.preferences__ onToggle = { isChecked -> if (isChecked && !state.canEnableNotifyWhileLocked) { MaterialAlertDialogBuilder(requireContext()) - .setTitle(R.string.NotificationsSettingsFragment__push_notifications_unavailable) .setMessage(R.string.NotificationsSettingsFragment__sorry_this_feature_requires_push_notifications_delivered_via_fcm_or_unifiedpush) .setPositiveButton(android.R.string.ok, null) .show() @@ -341,7 +340,7 @@ class NotificationsSettingsFragment : DSLSettingsFragment(R.string.preferences__ sectionHeaderPref(R.string.NotificationsSettingsFragment__push_notifications) textPref( - summary = DSLSettingsText.from(R.string.NotificationsSettingsFragment__preferred_method_for_receiving_notifications_from_the_signal_service) + summary = DSLSettingsText.from(R.string.NotificationsSettingsFragment__select_your_preferred_service_for_push_notifications) ) val showAlertIcon = when (state.preferredNotificationMethod) { @@ -349,11 +348,11 @@ class NotificationsSettingsFragment : DSLSettingsFragment(R.string.preferences__ NotificationDeliveryMethod.WEBSOCKET -> false } radioListPref( - title = DSLSettingsText.from(R.string.NotificationsSettingsFragment__delivery_method), + title = DSLSettingsText.from(R.string.NotificationsSettingsFragment__delivery_service), listItems = notificationMethodLabels, selected = notificationMethodValues.indexOf(state.preferredNotificationMethod), isEnabled = !state.isLinkedDevice, // MOLLY: TODO - iconEnd = if (showAlertIcon) DSLSettingsIcon.from(R.drawable.ic_alert) else null, + iconEnd = if (showAlertIcon) DSLSettingsIcon.from(R.drawable.ic_alert, R.color.signal_alert_primary) else null, onSelected = { onNotificationMethodChanged(notificationMethodValues[it], state.preferredNotificationMethod) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt index 7c7996a281..563cb63ef5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/NotificationsSettingsViewModel.kt @@ -116,7 +116,9 @@ class NotificationsSettingsViewModel(private val sharedPreferences: SharedPrefer SignalStore.settings.preferredNotificationMethod = method ApplicationContext.getInstance().updatePushNotificationServices() AppDependencies.resetNetwork(true) - refresh() + // Avoid calling refresh() here to prevent updating canReceiveFcm + // while the FCM token is still being refreshed. + store.update { it.copy(preferredNotificationMethod = method) } } val fcmState get() = PlayServicesUtil.getPlayServicesStatus(AppDependencies.application) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/FcmRefreshJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/FcmRefreshJob.java index 8c69c6a4dc..ce17f84aa9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/FcmRefreshJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/FcmRefreshJob.java @@ -25,6 +25,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.app.NotificationCompat; +import androidx.core.app.NotificationManagerCompat; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GoogleApiAvailability; @@ -86,10 +87,9 @@ public void onRun() throws Exception { if (!SignalStore.account().isFcmEnabled()) { if (oldToken != null) { - Log.i(TAG, "FCM not allowed: clearing existing token..."); + Log.i(TAG, "FCM is disabled: clearing existing token..."); AppDependencies.getSignalServiceAccountManager().setGcmId(Optional.empty()); SignalStore.account().setFcmToken(null); - SignalStore.account().setFcmTokenLastSetTime(-1); } return; } @@ -104,6 +104,8 @@ public void onRun() throws Exception { Optional token = FcmUtil.getToken(context); if (token.isPresent()) { + cancelFcmFailureNotification(context); + if (!token.get().equals(oldToken)) { int oldLength = oldToken != null ? oldToken.length() : -1; Log.i(TAG, "Token changed. oldLength: " + oldLength + " newLength: " + token.get().length()); @@ -116,11 +118,12 @@ public void onRun() throws Exception { if (oldToken == null) { AppDependencies.resetNetwork(true); } - EventBus.getDefault().post(PushServiceEvent.INSTANCE); } else { throw new RetryLaterException(new IOException("Failed to retrieve a token.")); } } + + EventBus.getDefault().post(PushServiceEvent.INSTANCE); } @Override @@ -142,9 +145,9 @@ private void notifyFcmFailure() { builder.setSmallIcon(R.drawable.ic_notification); builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.symbol_error_triangle_fill_32)); - builder.setContentTitle(context.getString(R.string.GcmRefreshJob_Permanent_Signal_communication_failure)); - builder.setContentText(context.getString(R.string.GcmRefreshJob_Signal_was_unable_to_register_with_Google_Play_Services)); - builder.setTicker(context.getString(R.string.GcmRefreshJob_Permanent_Signal_communication_failure)); + builder.setContentTitle(context.getString(R.string.GcmRefreshJob_unable_to_register_with_Google_Play_Services)); + builder.setContentText(context.getString(R.string.GcmRefreshJob_switch_to_an_alternative_push_service_in_settings_notifications)); + builder.setTicker(context.getString(R.string.GcmRefreshJob_unable_to_register_with_Google_Play_Services)); builder.setVibrate(new long[] {0, 1000}); builder.setContentIntent(pendingIntent); @@ -152,6 +155,10 @@ private void notifyFcmFailure() { .notify(NotificationIds.FCM_FAILURE, builder.build()); } + static public void cancelFcmFailureNotification(@NonNull Context context) { + NotificationManagerCompat.from(context).cancel(NotificationIds.FCM_FAILURE); + } + public static final class Factory implements Job.Factory { @Override public @NonNull FcmRefreshJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshAttributesJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshAttributesJob.java index 3079ccdcdf..da9bb041d5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshAttributesJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshAttributesJob.java @@ -86,7 +86,7 @@ public void onRun() throws IOException { } int registrationId = SignalStore.account().getRegistrationId(); - boolean fetchesMessages = !SignalStore.account().isFcmEnabled() || SignalStore.internal().isWebsocketModeForced(); + boolean fetchesMessages = !SignalStore.account().isFcmEnabled(); byte[] unidentifiedAccessKey = UnidentifiedAccess.deriveAccessKeyFrom(ProfileKeyUtil.getSelfProfileKey()); boolean universalUnidentifiedAccess = TextSecurePreferences.isUniversalUnidentifiedAccess(context); String registrationLockV2 = null; @@ -105,6 +105,7 @@ public void onRun() throws IOException { AccountAttributes.Capabilities capabilities = AppCapabilities.getCapabilities((svrValues.hasPin() && !svrValues.hasOptedOut()) || SignalStore.storageService().hasStorageKeyFromPrimary()); Log.i(TAG, "Calling setAccountAttributes() reglockV2? " + !TextUtils.isEmpty(registrationLockV2) + ", pin? " + svrValues.hasPin() + + ", fetchesMessages? " + fetchesMessages + "\n Recovery password? " + !TextUtils.isEmpty(recoveryPassword) + "\n Phone number discoverable : " + phoneNumberDiscoverable + "\n Device Name : " + (encryptedDeviceName != null) + diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt index 83013d578f..7ebf35fcf2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt @@ -338,9 +338,8 @@ class AccountValues internal constructor(store: KeyValueStore, context: Context) } /** When we last set the [fcmToken] */ - var fcmTokenLastSetTime: Long + val fcmTokenLastSetTime: Long get() = getLong(KEY_FCM_TOKEN_LAST_SET_TIME, 0) - set(value) = putLong(KEY_FCM_TOKEN_LAST_SET_TIME, value) /** Whether or not the user is registered with the Signal service. */ val isRegistered: Boolean diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/InternalValues.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/InternalValues.java index 10b5807183..540f744385 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/InternalValues.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/InternalValues.java @@ -172,6 +172,10 @@ public boolean isWebsocketModeForced() { return SignalStore.settings().getPreferredNotificationMethod() == SettingsValues.NotificationDeliveryMethod.WEBSOCKET; } + public boolean isFcmModeForced() { + return SignalStore.settings().getPreferredNotificationMethod() == SettingsValues.NotificationDeliveryMethod.FCM; + } + public void setHevcEncoding(boolean enabled) { putBoolean(ENCODE_HEVC, enabled); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SettingsValues.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SettingsValues.java index 993915d4dc..c4f8ef66a4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SettingsValues.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SettingsValues.java @@ -11,6 +11,7 @@ import androidx.lifecycle.LiveData; import org.signal.core.util.logging.Log; +import org.thoughtcrime.securesms.BuildConfig; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.dependencies.AppDependencies; import org.thoughtcrime.securesms.mms.SentMediaQuality; @@ -479,7 +480,13 @@ public boolean getUseCompactNavigationBar() { } public NotificationDeliveryMethod getPreferredNotificationMethod() { - return NotificationDeliveryMethod.deserialize(getString(MOLLY_NOTIFICATION_METHOD, NotificationDeliveryMethod.FCM.serialize())); + final NotificationDeliveryMethod method = NotificationDeliveryMethod.deserialize( + getString(MOLLY_NOTIFICATION_METHOD, NotificationDeliveryMethod.FCM.serialize()) + ); + if (!BuildConfig.USE_PLAY_SERVICES && method == NotificationDeliveryMethod.FCM) { + return NotificationDeliveryMethod.WEBSOCKET; + } + return method; } public void setPreferredNotificationMethod(NotificationDeliveryMethod method) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageObserver.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageObserver.kt index fd6fc74342..67d26d4123 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageObserver.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageObserver.kt @@ -110,7 +110,8 @@ class IncomingMessageObserver(private val context: Application) { init { MessageRetrievalThread().start() - // MOLLY: Foreground service startup is handled inside the connection loop + // MOLLY: Ensure the foreground service is stopped, it will be started if needed in the connection loop + ForegroundService.stop(context) AppForegroundObserver.addListener(object : AppForegroundObserver.Listener { override fun onForeground() { @@ -458,9 +459,6 @@ class IncomingMessageObserver(private val context: Application) { Log.i(TAG, "Looping...") } Log.w(TAG, "Terminated! (${this.hashCode()})") - - // MOLLY: Stop foreground service, it will be restarted if needed - ForegroundService.stop(context) } override fun uncaughtException(t: Thread, e: Throwable) { diff --git a/app/src/main/res/values-ar/strings2.xml b/app/src/main/res/values-ar/strings2.xml index ed5541d2b4..831d2a15ed 100644 --- a/app/src/main/res/values-ar/strings2.xml +++ b/app/src/main/res/values-ar/strings2.xml @@ -52,7 +52,6 @@ احظر المستخدمين الذين لم تتواصل معهم مطلقًا والذين لم يتم حفظهم كجهات اتصال. مولي هو برنامج مجاني تغيير الجدولة - انقر للسماح لمولي باسترداد الرسائل عندما يكون الجهاز في وضع الاستعداد. أعد محاولة الربط الجهاز #%d الرئيسي @@ -70,9 +69,7 @@ يمسح البيانات غير المُعمَّاة من ذاكرة الوصول العشوائي لا توجد أجهزة مرتبطة نشاط جديد أثناء القفل - إشعارات Push غير متوفرة عذرًا، تتطلب هذه الميزة إرسال إشعارات Push عبر FCM أو UnifiedPush، وهي غير متوفرة حاليًا. - تحسين الإشعارات في الوقت المناسب أسبوعيًا جاهز لتلقي الرسائل موقع Molly.im diff --git a/app/src/main/res/values-bs/strings2.xml b/app/src/main/res/values-bs/strings2.xml index ff55f0fad0..2139913e3b 100644 --- a/app/src/main/res/values-bs/strings2.xml +++ b/app/src/main/res/values-bs/strings2.xml @@ -21,8 +21,6 @@ Molly.im internet-stranica Poveži bez skeniranja Izbrisati i deaktivirati izvještaj o greškama\? - Pritisnite kako biste dopustili Molly da preuzme poruke dok je uređaj u pripravnom stanju. - Optimiziraj za pravovremena obavještenja Tor preko Orbota Konekcija Satelitska @@ -104,7 +102,6 @@ Isteklo je vrijeme čekanja za primarni uređaj. Pripremi uređaj za snimanje QR koda, zatim pokušaj ponovo Ponovi povezivanje Nova aktivnost dok je aplikacija zaljučana - Push obavještenja nisu dostupna Žao nam je, ova funkcija zahtijeva push obavještenja koja se isporučuju putem FCM ili UnifiedPush usluga koje trenutno nisu dostupne. Pružatelj usluge je odbio poslati kod za verifikaciju, vjerovatno zbog pravila za sprječavanje prijevara. Primaj obavještenja o porukama ili propuštenim pozivima kada je aplikacija zaključana. diff --git a/app/src/main/res/values-ca/strings2.xml b/app/src/main/res/values-ca/strings2.xml index 987b080ab2..f9845f5bfc 100644 --- a/app/src/main/res/values-ca/strings2.xml +++ b/app/src/main/res/values-ca/strings2.xml @@ -24,7 +24,6 @@ Molly no es connectarà sense Orbot, que no està instal·lat en aquest dispositiu. Configuració de la xarxa Enllaçar sense escanejar - Optimitza per a notificacions puntuals Actualitza Molly automàticament Híbrid Satèl·lit @@ -74,7 +73,6 @@ Requerir contrasenya per a desbloquejar Molly? S\'eliminarà el xat amb %1$s i s\'eliminarà %1$s dels contactes del teu dispositiu. Molly necessita accés als contactes per ajudar-te a trobar els teus amics. Els teus contactes es carreguen utilitzant el descobriment de contactes privats de Signal, el que significa que estan encriptats d\'extrem a extrem i mai són visibles per al servei de Signal. - Prem per permetre a Molly recuperar missatges mentre el dispositiu està en espera. La configuració del PIN no es pot canviar des d\'un dispositiu enllaçat Aquest dispositiu Enllaçar amb un dispositiu existent @@ -111,7 +109,6 @@ Primari Nom del dispositiu El proveïdor s\'ha negat a enviar-te un codi de verificació, probablement a causa de les normes de prevenció del frau. - Notificacions no disponibles Última comprovació: %s Molly està blocat diff --git a/app/src/main/res/values-cs/strings2.xml b/app/src/main/res/values-cs/strings2.xml index 5f4f6f597d..88628712ee 100644 --- a/app/src/main/res/values-cs/strings2.xml +++ b/app/src/main/res/values-cs/strings2.xml @@ -25,7 +25,6 @@ Molly je svobodný software Spravujeme Molly s vaší pomocí! Zvažte darování na Open Collectivu. Změnit rozvrh - Optimalizace pro včasná upozornění Automaticky aktualizovat Molly Pravidelně hledat nové aktualizace a požádat vás o jejich instalaci Hostitel @@ -65,7 +64,6 @@ Odkaz bez skenování Pokud vaše zařízení nemůže skenovat QR kód, můžete manuálně vložit odkaz zakódovaný v QR kódu. Počet záloh které se mají udržet - Klikněte pro povolení Molly získávat zprávy zatím co se zařízení nepoužívá. Prosíme, potvrďte že jste to opravdu vy kdo používá Molly Uzamknout přistup k Molly pomocí otisku prstu nebo rozeznání obličeje Na tomto zařízení nejsou dostupné biometrické funkce @@ -98,7 +96,6 @@ Toto zařízení Název zařízení Při propojování nastala chyba. Zkontrolujte připojení a zkuste to znovu - Oznámení nejsou dostupná Nová aktivita během uzamknutí Nastavení PINu nelze měnit z propojeného zařízení Propojit s existujícím zařízením diff --git a/app/src/main/res/values-de/strings2.xml b/app/src/main/res/values-de/strings2.xml index dc36ea1b85..4a21ad7124 100644 --- a/app/src/main/res/values-de/strings2.xml +++ b/app/src/main/res/values-de/strings2.xml @@ -68,8 +68,6 @@ Verlinken ohne zu scannen Molly benötigt die Erlaubnis der Kontakte, um dir zu helfen, deine Freunde zu finden. Deine Kontakte werden über die private Kontaktsuche von Signal hochgeladen, d.h. sie sind Ende-zu-Ende verschlüsselt und niemals für den Signal-Dienst sichtbar. Molly benötigt die Kontakte und Medienberechtigungen, damit du deine Freunde finden und Nachrichten senden kannst. Deine Kontakte werden über die private Kontaktsuche von Signal hochgeladen, d. h. sie sind Ende-zu-Ende verschlüsselt und für den Signal-Dienst nicht sichtbar. - Für rechtzeitige Benachrichtigungen optimieren - Tippen Sie auf, um Molly das Abrufen von Nachrichten zu ermöglichen, während sich das Gerät im Standby-Modus befindet. Beta-Aktualisierungen einbeziehen Beta-Versionen sind für Testzwecke bestimmt und können Fehler enthalten Sperren Sie den Molly-Zugang mit Fingerabdruck oder Gesichtserkennung @@ -107,7 +105,6 @@ Leider erfordert diese Funktion Push-Benachrichtigungen über FCM oder UnifiedPush, die derzeit nicht verfügbar sind. Neue Aktivität während der Sperrung Empfangen Sie Benachrichtigungen für Nachrichten oder verpasste Anrufe, wenn die Anwendung gesperrt ist. - Push-Benachrichtigungen nicht verfügbar Navigationsleiste Anrufe anzeigen Umschalten, ob das Symbol in der Navigationsleiste angezeigt oder versteckt wird diff --git a/app/src/main/res/values-es/strings2.xml b/app/src/main/res/values-es/strings2.xml index 301db8eea4..d0ad167227 100644 --- a/app/src/main/res/values-es/strings2.xml +++ b/app/src/main/res/values-es/strings2.xml @@ -70,8 +70,6 @@ Enlazar sin escanear Molly necesita el permiso de los contactos para ayudarte a encontrar a tus amigos. Tus contactos se cargan utilizando el descubrimiento de contactos privados de Signal, lo que significa que están cifrados de extremo a extremo y nunca son visibles para el servicio de Signal. Molly necesita los permisos de contactos y almacenamiento para ayudarte a encontrar a tus amigos y enviar mensajes. Tus contactos se cargan utilizando el descubrimiento de contactos privados de Signal, lo que significa que están cifrados de extremo a extremo y nunca son visibles para el servicio de Signal. - Optimizar para notificaciones oportunas - Pulse para permitir que Molly recupere mensajes mientras el dispositivo está en espera. Verificación biométrica Bloquear el acceso de Molly con huella dactilar o reconocimiento facial No hay funciones biométricas disponibles en este dispositivo @@ -108,7 +106,6 @@ Lo sentimos, esta función requiere notificaciones push enviadas a través de FCM o UnifiedPush, que actualmente no están disponibles. Nueva actividad mientras está bloqueado Recibe notificaciones de mensajes o llamadas perdidas cuando la aplicación esté bloqueada. - Notificaciones push no disponibles Mostrar las llamadas Barra de navegación Alternar para mostrar u ocultar el ícono en la barra de navegación diff --git a/app/src/main/res/values-eu/strings2.xml b/app/src/main/res/values-eu/strings2.xml index 3b5b5af4a4..5be53f27fd 100644 --- a/app/src/main/res/values-eu/strings2.xml +++ b/app/src/main/res/values-eu/strings2.xml @@ -70,8 +70,6 @@ Mollyk kontaktu eta media baimenak behar ditu zure lagunak aurkitzeko eta mezuak bidaltzen laguntzeko. Zure kontaktuak Signal-en kontaktu pribatuen aurkikuntza erabiliz kargatzen dira, eta horrek esan nahi du muturretik muturrera zifratuta daudela eta inoiz ez direla ikusten Signal-en zerbitzurako. Mollyk kontaktuen baimena behar du zure lagunak aurkitzeko. Zure kontaktuak Signal-en kontaktu pribatuen aurkikuntza erabiliz kargatzen dira, eta horrek esan nahi du muturretik muturrera zifratuta daudela eta inoiz ez direla ikusten Signal-en zerbitzurako. Lotu eskaneatu gabe - Jakinarazpenak garaiz optimizatu - Sakatu Mollyk mezuak berreskura ditzan gailua zain dagoen bitartean. Ez dago lotutako gailurik %d gailu lotuta diff --git a/app/src/main/res/values-fi/strings2.xml b/app/src/main/res/values-fi/strings2.xml index 4146a579f4..812b24268c 100644 --- a/app/src/main/res/values-fi/strings2.xml +++ b/app/src/main/res/values-fi/strings2.xml @@ -53,7 +53,6 @@ Viikoittain Muuta aikataulua Valmiina vastaanottamaan viestejä - Napauttamalla voit sallia Mollyn hakea viestejä laitteen ollessa valmiustilassa. Molly.im-verkkosivusto Ota tarinat käyttöön Tarkista päivitykset automaattisesti\? diff --git a/app/src/main/res/values-fr/strings2.xml b/app/src/main/res/values-fr/strings2.xml index a483f17c1d..6c4a3007ca 100644 --- a/app/src/main/res/values-fr/strings2.xml +++ b/app/src/main/res/values-fr/strings2.xml @@ -68,8 +68,6 @@ Relier sans scanner Molly a besoin des autorisations relatives aux contacts et aux médias pour vous aider à trouver vos amis et à envoyer des messages. Vos contacts sont téléversés en utilisant la découverte de contacts privés de Signal, ce qui signifie qu\'ils sont chiffrés de bout en bout et ne sont jamais visibles pour le service Signal. Molly a besoin de l\'autorisation des contacts pour vous aider à trouver vos amis. Vos contacts sont téléversés en utilisant la découverte de contacts privés de Signal, ce qui signifie qu\'ils sont chiffrés de bout en bout et ne sont jamais visibles pour le service Signal. - Optimiser pour des notifications en temps opportun - Appuyez pour permettre à Molly de récupérer des messages quand l\'appareil est en veille. Les versions bêta sont destinées à des fins de test et peuvent contenir des erreurs Inclure les mises à jour bêta Vérification biométrique @@ -108,7 +106,6 @@ Désolé, cette fonctionnalité nécessite des notifications poussées livrées via FCM ou UnifiedPush, qui sont actuellement indisponibles. Nouvelle activité pendant le verrouillage Recevoir des notifications pour des messages ou des appels interrompus quand l\'application est verrouillée. - Notifications poussées indisponibles Barre de navigation Afficher les appels Afficher ou masquer l\'icône dans la barre de navigation diff --git a/app/src/main/res/values-ga/strings2.xml b/app/src/main/res/values-ga/strings2.xml index 667c849a13..7da82316b2 100644 --- a/app/src/main/res/values-ga/strings2.xml +++ b/app/src/main/res/values-ga/strings2.xml @@ -6,7 +6,6 @@ Má théann tú am áirithe gan do ghléas a dhíghlasáil Cuir nuashonruithe béite san áireamh Cuir bac ar úsáideoirí nach raibh tú i dteagmháil leo riamh agus iad siúd nach bhfuil sábháilte mar theagmhálaithe. - Tapáil chun ligean do Molly teachtaireachtaí a aisghabháil agus an gléas ar fuireachas. Dada Gléas #%d Bunscoile @@ -47,7 +46,6 @@ Coimeádaimid Molly le do thacaíocht! Smaoinigh ar bhronnadh ag Open Collective. Bloc agus Scrios Teastaíonn cead teagmhála ó Molly chun cabhrú leat do chairde a aimsiú. Uaslódáltar do theagmhálaithe trí úsáid a bhaint as fionnachtain teagmhála phríobháideach Signal, rud a chiallaíonn go bhfuil siad criptithe ó cheann ceann go ceann agus nach bhfeiceann an tseirbhís Signal iad riamh. - Optamaigh le haghaidh fógraí tráthúla %d gléas nasctha %d gléasanna nasctha @@ -113,7 +111,6 @@ Cóipeáladh chuig an ngearrthaisce Dhiúltaigh an soláthraí cód fíorúcháin a sheoladh chugat, is dócha de bharr rialacha um chosc calaoise. Gníomhaíocht nua agus é faoi ghlas - Níl fógraí brúigh ar fáil Seiceáilte go deireanach: %s Tá Molly faoi ghlas Le haghaidh gléasanna Android: Tabhair cuairt ar %s chun Molly a shuiteáil. diff --git a/app/src/main/res/values-gl/strings2.xml b/app/src/main/res/values-gl/strings2.xml index c2bc13b224..2fa78956b0 100644 --- a/app/src/main/res/values-gl/strings2.xml +++ b/app/src/main/res/values-gl/strings2.xml @@ -42,8 +42,6 @@ Bloquear usuarias coas que nunca tiveches contacto nin están na libreta de enderezos. Proxy Frase de paso - Optimizar para notificacións máis prontas - Toca para permitir a Molly recibir mensaxes cando o dispositivo está en repouso. Ligar Ligar a dispositivo existente Nome do dispositivo @@ -73,7 +71,6 @@ O provedor rexeitou enviarche un código de verificación, probablemente debido ás regras antifraude. Copiado ao portapapeis Recibir notificacións de mensaxes ou chamadas perdidas cando a app está bloqueada. - Non están dispoñibles notificacións Push Nova actividade mentras en repouso Datos protexidos Eliminar o contacto? diff --git a/app/src/main/res/values-hr/strings2.xml b/app/src/main/res/values-hr/strings2.xml index 17a70f2ff3..fbdb8663de 100644 --- a/app/src/main/res/values-hr/strings2.xml +++ b/app/src/main/res/values-hr/strings2.xml @@ -67,9 +67,7 @@ Izbrisati i deaktivirati dnevnik otklanjanja grešaka\? Uključi beta verzije Beta verzije su namijenjene za testiranje i mogu sadržavati greške - Optimiraj za pravovremene obavijesti Poveži bez snimanja - Dodirni, kako bi Molly smio dohvaćati poruke dok je uređaj u pripravnom stanju. Molly treba dozvole za pristup kontaktima i medijima kako ti bi pomogao pronaći prijatelje i slati poruke. Kontakti se prenose pomoću Signalovog privatnog otkrivanja kontakata, što znači da su obostrano šifrirani i da ih usluga Signal nikada neće vidjeti. Molly treba dozvole za pristup kontaktima kako bi pomogao pronaći prijatelje. Kontakti se prenose pomoću Signalovog privatnog otkrivanja kontakata, što znači da su obostrano šifrirani i da ih usluga Signal nikada neće vidjeti. Biometrijska potvrda @@ -106,7 +104,6 @@ Kopirano u međuspremnik Ovaj uređaj Nova aktivnost tijekom zaključane aplikacije - Automatska primanja obavijesti nisu dostupne Žao nam je, ova funkcija zahtijeva automatska primanja obavijesti putem usluga FCM ili UnifiedPush koje trenutačno nisu dostupne. Primaj obavijesti o porukama ili propuštenim pozivima kada je aplikacija zaključana. Pokaži pozive diff --git a/app/src/main/res/values-hu/strings2.xml b/app/src/main/res/values-hu/strings2.xml index d6391d4594..23390eb0ec 100644 --- a/app/src/main/res/values-hu/strings2.xml +++ b/app/src/main/res/values-hu/strings2.xml @@ -59,7 +59,6 @@ Ütemezés mp Ütemezés változtatása - Optimalizálás időközönkénti értesítésekre Védje meg a Molly adatbázisát egy jelmondattal Orbot-os Tor Jelmondat legyen szükséges a Molly feloldására\? @@ -75,7 +74,6 @@ Proxy Kérem adjon meg jelmondatot a helyi adatok titkosítására.\n\nEnnek egy erős jelmondatnak kell lennie. Hiányzó Orbot app - Nyomja meg ahhoz, hogy Molly fogadja az értesítéseket készenléti üzemmódban is. Naponta Beleértve a béta frissítéseket is Kapcsolat törlése\? @@ -106,7 +104,6 @@ Értesítések üzenetekről és nem fogadott hívásokról, amíg az app le volt zárva. Ehhez a funkcióhoz push értesítések kellenek FCM vagy UnifiedPush-on keresztül. Ezek sajnos nem elérhetőek. Új aktivitás míg le volt zárva - Push értesítések nem elérhetőek Navigációs csík Hívások mutatása A navigációs csíkon levő ikon mutatásának ki/be kapcsolása diff --git a/app/src/main/res/values-in/strings2.xml b/app/src/main/res/values-in/strings2.xml index c262c13672..afc3864c4b 100644 --- a/app/src/main/res/values-in/strings2.xml +++ b/app/src/main/res/values-in/strings2.xml @@ -72,6 +72,5 @@ Periksa pembaruan Perihal data Hapus dan menonaktifkan log debug? - Optimalkan untuk pemberitahuan tepat waktu Molly terkunci diff --git a/app/src/main/res/values-it/strings2.xml b/app/src/main/res/values-it/strings2.xml index 6ae0690f93..740c368c4a 100644 --- a/app/src/main/res/values-it/strings2.xml +++ b/app/src/main/res/values-it/strings2.xml @@ -68,8 +68,6 @@ Associa senza scansione Molly ha bisogno delle autorizzazioni per i contatti e i media per aiutarti a trovare i tuoi amici e inviare messaggi. I contatti vengono caricati utilizzando la funzione di scoperta privata dei contatti di Signal, il che significa che sono crittografati dall\'inizio alla fine e non sono mai visibili al servizio Signal. Molly ha bisogno dell\'autorizzazione dei contatti per aiutarti a trovare gli amici. I tuoi contatti sono caricati utilizzando Signal\'individuazione dei contatti privati, il che significa che sono crittografati dall\'inizio alla fine e mai visibili al servizio Signal. - Ottimizza per notifiche tempestive - Tocca per permettere a Molly di recuperare i messaggi mentre il dispositivo è in standby. Includi gli aggiornamenti beta Le versioni beta sono destinate a scopi di test e possono contenere errori Verifica biometrica @@ -108,7 +106,6 @@ Spiacenti, questa funzione richiede notifiche fornite tramite FCM o UnifiedPush, che attualmente non sono disponibili. Nuova attività quando bloccata Ricevi notifiche per messaggi o chiamate perse quando l\'applicazione è bloccata. - Notifiche non disponibili Barra di navigazione Mostra chiamate Commutatore per mostrare o nascondere l\'icona sulla barra di navigazione diff --git a/app/src/main/res/values-iw/strings2.xml b/app/src/main/res/values-iw/strings2.xml index 252548e480..a845c117d9 100644 --- a/app/src/main/res/values-iw/strings2.xml +++ b/app/src/main/res/values-iw/strings2.xml @@ -68,8 +68,6 @@ קישור ללא סריקה ל־Molly דרושות הרשאות לאנשי הקשר ולמדיה כדי לסייע לך לאתר את החברים שלך ולשלוח הודעות. אנשי הקשר שלך נשלחים באמצעות גילוי אנשי קשר פרטי של Signal, משמעות הדבר היא שהם מוצפנים מקצה לקצה ואף פעם לא ייחשפו בפני שירות Signal. ל־Molly דרושות הרשאות לאנשי הקשר ולמדיה כדי לסייע לך לאתר את החברים שלך. אנשי הקשר שלך נשלחים באמצעות גילוי אנשי קשר פרטי של Signal, משמעות הדבר היא שהם מוצפנים מקצה לקצה ואף פעם לא ייחשפו בפני שירות Signal. - מיטוב להתראות מדי פעם בפעם - יש לגעת כדי לאפשר ל־Molly לקבל הודעות בזמן שהמכשיר בהמתנה. כולל גרסאות לבדיקה גרסאות לבדיקה מיועדות לניסוי ועשויות להציג תקלות ניתן לנעול את הגישה ל־Molly בטביעת אצבע או זיהוי פנים @@ -107,7 +105,6 @@ המכשיר הזה הספק סירב לשלוח לך קוד אימות, כנראה עקב כללי מניעת הונאות. פעילות חדשה בזמן נעילה - הודעות בדחיפה לא זמינות קבלת התראות להודעות או לשיחות שלא נענו כאשר היישומון נעול. היכולת הזאת צריכה להעביר הודעות בדחיפה דרך FCM או דרך UnifiedPush שאינן זמינות כרגע, עמך סליחה. Molly נעול diff --git a/app/src/main/res/values-ja/strings2.xml b/app/src/main/res/values-ja/strings2.xml index 4d4d16e14c..e5d8fa3902 100644 --- a/app/src/main/res/values-ja/strings2.xml +++ b/app/src/main/res/values-ja/strings2.xml @@ -67,8 +67,6 @@ ベータ版の更新も含める Molly は、友達を見つけてメッセージを送信するために、連絡先へのアクセス権限が必要です。あなたの連絡先は、Signal のプライベートな連絡先の検出機能を使用してアップロードされます。連絡先の情報はエンドツーエンドで暗号化され、Signal サービスに表示されることはありません。 スキャンせずにリンク - 通知を適切なタイミングで受信するよう最適化 - タップすると、デバイスがスタンバイ状態のときに Molly がメッセージを取得できるようになります。 ベータ版はテスト用のため、バグがある可能性があります Molly は、友達を見つけてメッセージを送信するために、連絡先とメディアのアクセス権限が必要です。あなたの連絡先は、Signal のプライベートな連絡先の検出機能を使用してアップロードされます。連絡先の情報はエンドツーエンドで暗号化され、Signal サービスに表示されることはありません。 生体認証 @@ -114,7 +112,6 @@ 優先デバイスの待機中にタイムアウトになりました。デバイスで QR コードの読み取りを待機して、再度お試しください アプリがロックされている際にメッセージまたは着信に関する通知を受信。 リンクを再試行 - プッシュ通知が利用できません この機能には FCM または UnifiedPush によるプッシュ通知が必要ですが、現在プッシュ通知は利用できません。 最終更新日:%s プロバイダーが通知コードの送信を拒否しました。おそらく詐欺防止のルールによるものです。 diff --git a/app/src/main/res/values-ko/strings2.xml b/app/src/main/res/values-ko/strings2.xml index 539007a807..52e3f00c54 100644 --- a/app/src/main/res/values-ko/strings2.xml +++ b/app/src/main/res/values-ko/strings2.xml @@ -19,7 +19,6 @@ 베타 버전은 테스트용이며 버그가 있을 수 있습니다 연결 확인하기 연결 중… - 적시 알림을 위한 최적화 네트워크 연결 Molly 자동 업데이트 @@ -69,7 +68,6 @@ 잠겨 있는 동안의 새로운 활동 죄송합니다. 이 기능을 사용하려면 현재 사용할 수 없는 FCM 또는 UnifiedPush를 통해 푸시 알림을 전달해야 합니다. 앱이 잠겨있을 때 온 메시지나 부재중 전화의 알림을 받습니다. - 푸시 알림 이용 불가 RAM에서 암호화되지 않은 데이터를 제거하는 중 휴면 데이터 암호 @@ -109,7 +107,6 @@ 유효한 포트 번호는 0과 65535 사이입니다 업데이트를 위해, 앱 스토어를 확인해주세요. 이 버전은 인앱 업데이터를 포함하지 않습니다. Molly는 친구를 찾고 메시지 전송을 돕기 위해 연락처와 미디어 권한이 필요합니다. 연락처는 Signal의 비공개 연락처 검색을 이용하여 업로드되므로, 종단간 암호화 되어 Signal 서비스에서 절대 볼 수 없습니다. - 기기가 대기 상태일 때 Molly가 메시지를 수신할 수 있도록 하려면 누릅니다. 연결된 기기 없음 기기 연결 중 오류가 발생했습니다. 네트워크 연결을 확인하고 재시도하세요 모든 연결된 기기의 메시지는 비공개됩니다. diff --git a/app/src/main/res/values-lt/strings2.xml b/app/src/main/res/values-lt/strings2.xml index 26e9e730db..fa38039a50 100644 --- a/app/src/main/res/values-lt/strings2.xml +++ b/app/src/main/res/values-lt/strings2.xml @@ -65,13 +65,11 @@ Jei tam tikrą laiką neatrakinate prietaiso Jei jūsų įrenginys negali nuskaityti QR kodo, QR kode užkoduotą nuorodą galite įvesti rankiniu būdu. Ištrinti ir išjungti derinimo žurnalą\? - Paspauskite, kad leistumėte Molly gauti pranešimus, kai įrenginys veikia budėjimo režimu. Įtraukti beta versijos atnaujinimus Beta versijos skirtos testavimo tikslams ir gali turėti klaidų Molly reikia kontaktų ir medijos leidimų, kad padėtų jums rasti draugus ir siųsti žinutes. Jūsų kontaktai įkeliami naudojant „Signal“ privačių kontaktų aptikimo funkciją, o tai reiškia, kad jie yra visiškai užšifruoti ir niekada nematomi „Signal“ paslaugai. Biometrinė autentifikacija Molly reikia kontaktų leidimo, kad padėtų jums rasti draugus. Jūsų kontaktai įkeliami naudojant „Signal“ privačių kontaktų aptikimo funkciją, o tai reiškia, kad jie yra visiškai užšifruoti ir niekada nematomi „Signal“ paslaugai. - Optimizuokite, kad pranešimai būtų gaunami laiku Prašome patvirtinti, kad tai tikrai jūs, kad galėtumėte naudoti Molly Šiame įrenginyje nėra biometrinių funkcijų Pirmiausia nustatykite biometrinius duomenis Android nustatymuose diff --git a/app/src/main/res/values-nb/strings2.xml b/app/src/main/res/values-nb/strings2.xml index 166a29902b..f89f047f20 100644 --- a/app/src/main/res/values-nb/strings2.xml +++ b/app/src/main/res/values-nb/strings2.xml @@ -70,8 +70,6 @@ Hvis enheten din ikke kan skanne QR-koden, kan du skrive inn lenken i QR-koden manuelt. Lenk uten å skanne Molly trenger kontakttilgang for å hjelpe deg å finne venner. Kontaktene dine lastes opp med Signals private kontaktoppdagelse, som betyr at de er ende-til-ende -kryptert og aldri synlige for Signal-tjenesten. - Optimaliser for hurtig levering - Trykk for å tillate Molly å ente meldinger mens enheten er i hvilemodus. Biometrisk identitetsbekreftelse Bekreft at det faktisk er deg for å bruke Molly Lås Molly-tilgang med fingeravtrykk og ansiktsgjenkjennelse diff --git a/app/src/main/res/values-nl/strings2.xml b/app/src/main/res/values-nl/strings2.xml index e7b6caa802..5761ac1fab 100644 --- a/app/src/main/res/values-nl/strings2.xml +++ b/app/src/main/res/values-nl/strings2.xml @@ -70,8 +70,6 @@ Molly heeft toestemming nodig om de contacten te benaderen om te helpen je vrienden te vinden. Je contacten worden naar Signal\'s prive contact service geupload, dit houdt in dat ze eind tot eind versleuteld zijn en de service ze zelf niet kan inzien. Molly heeft toestemming nodig om de contacten en media te benaderen om te helpen je vrienden te vinden. Je contacten worden naar Signal\'s prive contact service geupload, dit houdt in dat ze eind tot eind versleuteld zijn en de service ze zelf niet kan inzien. Link zonder te scannen - Optimaliseren voor snelle notificaties - Tik om Molly toe te staan berichten te ontvangen wanneer de telefoon op standby staat. Biometrische verificatie Bevestig dat jij het echt bent om Molly te gebruiken Vergrendel Molly met vingerafdruk of gezichtsherkenning @@ -107,7 +105,6 @@ Sorry, deze functie vereist pushberichten via FCM of UnifiedPush en deze zijn momenteel niet beschikbaar. Nieuwe activiteit tijdens lock Ontvang notificaties voor berichten en oproepen als de app gelockt is. - Pushberichten niet beschikbaar Navigatiebalk Toon oproepen Toon of verberg het icon op de navigatiebalk diff --git a/app/src/main/res/values-pl/strings2.xml b/app/src/main/res/values-pl/strings2.xml index 639d744205..7c2263dcdc 100644 --- a/app/src/main/res/values-pl/strings2.xml +++ b/app/src/main/res/values-pl/strings2.xml @@ -94,11 +94,9 @@ Zeskanuj ten kod QR za pomocą głównego urządzenia Łączenie s - Optymalizacja pod kątem terminowych powiadomień Sprawdź aktualizacje Otrzymuj powiadomienia o wiadomościach i nieodebranych połączeniach, nawet gdy aplikacja jest zablokowana. Dostawca odmówił wysłania kodu weryfikacyjnego, prawdopodobnie ze względu na zasady zapobiegania oszustwom. - Stuknij, aby umożliwić Molly pobieranie wiadomości, gdy urządzenie jest w trybie gotowości. Ponowna próba połączenia Najpierw skonfiguruj dane biometryczne w ustawieniach Androida Weryfikacja biometryczna @@ -109,7 +107,6 @@ Skopiowane do schowka %1$s nie jest zarejestrowany w usłudze Signal To urządzenie - Powiadomienia push niedostępne Pasek nawigacji Pokaż połączenia Przełącz, aby pokazać lub ukryć ikonę na pasku nawigacyjnym diff --git a/app/src/main/res/values-pt/strings2.xml b/app/src/main/res/values-pt/strings2.xml index fb088f8a76..f10b5a0771 100644 --- a/app/src/main/res/values-pt/strings2.xml +++ b/app/src/main/res/values-pt/strings2.xml @@ -68,14 +68,12 @@ Verificação biométrica Por favor confirme se é você mesmo que quer usar o Molly O Molly precisa dos contactos e das permissões de media para o ajudar a encontrar os seus amigos e a enviar mensagens. Os seus contactos são carregados utilizando a descoberta de contactos privados do Signal, o que significa que são encriptados de ponta a ponta e nunca visíveis para o serviço Signal. - Toque para permitir ao Molly recuperar mensagens enquanto o dispositivo está em modo de espera. Nenhum dispositivo vinculado %d dispositivo vinculado %d dispositivos vinculados %d dispositivos vinculados - Otimizar para notificações atempadas Vincular sem digitalizar Se o seu dispositivo não puder digitalizar o código QR, pode introduzir manualmente a hiperligação codificada no código QR. O Molly precisa da permissão dos contactos para o ajudar a encontrar os seus amigos. Os seus contactos são carregados utilizando a descoberta de contactos privados do Signal, o que significa que são encriptados de ponta a ponta e nunca visíveis para o serviço Signal. @@ -108,7 +106,6 @@ Tempo esgotado à espera do dispositivo principal. Prepare o seu dispositivo para ler o código QR e tente novamente Voltar a tentar vincular Receber notificações de mensagens ou chamadas não atendidas quando a aplicação está bloqueada. - Notificações push não disponíveis Lamentamos, mas esta funcionalidade requer notificações push entregues através de FCM ou UnifiedPush, que não estão atualmente disponíveis. Nova atividade durante o bloqueio O fornecedor recusou-se a enviar-lhe um código de verificação, provavelmente devido a regras de prevenção de fraudes. diff --git a/app/src/main/res/values-ro/strings2.xml b/app/src/main/res/values-ro/strings2.xml index 69a0366917..baa95c8782 100644 --- a/app/src/main/res/values-ro/strings2.xml +++ b/app/src/main/res/values-ro/strings2.xml @@ -69,8 +69,6 @@ Asociază fără scanare Molly are nevoie de permisiuni pentru contacte și media pentru a te ajuta să îți găsești prietenii și să trimiți mesaje. Contactele tale sunt încărcate folosind descoperirea privată a contactelor de la Signal, ceea ce înseamnă că sunt cifrate de la un capăt la altul și nu sunt niciodată vizibile pentru serviciul Signal. Molly are nevoie de permisiunea pentru contacte pentru a te ajuta să-ți găsești prietenii. Contactele tale sunt încărcate folosind descoperirea privată a contactelor de la Signal, ceea ce înseamnă că sunt cifrate de la un capăt la altul și nu sunt niciodată vizibile pentru serviciul Signal. - Optimizare pentru notificări în timp util - Atinge pentru a permite lui Molly să preia mesaje în timp ce aparatul este în așteptare. Versiunile beta sunt versiuni de test și pot conține erori Include versiuni beta Blochează accesul la Molly cu amprentă sau recunoaștere facială @@ -110,7 +108,6 @@ Activitate nouă pe durata blocării Primește notificări pentru mesaje sau apeluri pierdute dacă aplicația este blocată. Această caracteristică necesită notificări transmise prin FCM sau UnifiedPush, care nu sunt disponibile în prezent. - Notificări indisponibile Bara de navigare Arată apeluri Întrerupător pentru a arăta sau ascunde simbolul de pe bara de navigare diff --git a/app/src/main/res/values-ru/strings2.xml b/app/src/main/res/values-ru/strings2.xml index c726a1ddbe..cd23ee1921 100644 --- a/app/src/main/res/values-ru/strings2.xml +++ b/app/src/main/res/values-ru/strings2.xml @@ -68,8 +68,6 @@ Связать без сканирования Для того чтобы помочь вам находить друзей и отправлять сообщения, Molly необходимы разрешения на доступ к контактам и медиафайлам. Ваши контакты загружаются с помощью приватного обнаружения контактов Signal, что означает, что они зашифрованы сквозным шифрованием и никогда не видны сервисам Signal. Чтобы помочь вам находить друзей, Molly необходимо разрешение на доступ к контактам. Ваши контакты загружаются с помощью приватного обнаружения контактов Signal, что означает, что они зашифрованы сквозным шифрованием и никогда не видны сервисам Signal. - Нажмите, чтобы разрешить Molly получать сообщения, когда устройство находится в режиме ожидания. - Оптимизация для своевременных уведомлений Включить бета-версии обновлений Бета-версии предназначены для тестирования и могут содержать ошибки Биометрическая верификация @@ -107,7 +105,6 @@ Это устройство Провайдер отказался отправить вам проверочный код, вероятно, из-за правил предотвращения мошенничества. Получайте уведомления о сообщениях или пропущенных вызовах, когда приложение заблокировано. - Push-уведомления недоступны К сожалению, для этой функции требуются push-уведомления, доставляемые через FCM или UnifiedPush, которые в настоящее время недоступны. Панель навигации Показать звонки diff --git a/app/src/main/res/values-tr/strings2.xml b/app/src/main/res/values-tr/strings2.xml index 482db24112..06343da659 100644 --- a/app/src/main/res/values-tr/strings2.xml +++ b/app/src/main/res/values-tr/strings2.xml @@ -67,9 +67,7 @@ Hata ayıklama günlüğü silinsin ve devre dışı bırakılsın mı\? Tarama olmadan bağla Molly\'nin arkadaşlarınızı bulmanıza yardımcı olması için kişiler iznine ihtiyacı var. Kişileriniz Signal\'in özel kişi keşfi kullanılarak karşıya yüklenir, bu da onların uçtan uca şifrelendiği ve Signal hizmeti tarafından hiçbir zaman görülemeyeceği anlamına gelir. - Zamanında bildirimler için iyileştir Molly\'nin arkadaşlarınızı bulmanıza ve mesaj göndermenize yardımcı olması için kişiler ve ortam izinlerine ihtiyacı var. Kişileriniz Signal\'in özel kişi keşfi kullanılarak karşıya yüklenir, bu da onların uçtan uca şifrelendiği ve Signal hizmeti tarafından hiçbir zaman görülemeyeceği anlamına gelir. - Aygıt bekleme modundayken Molly\'nin mesajları almasına izin vermek için dokunun. Beta güncellemelerini dahil et Beta sürümleri test amaçlıdır ve hatalar içerebilir Lütfen önce Android ayarlarında biyometrik özelliklerinizi ayarlayın @@ -107,7 +105,6 @@ Üzgünüz, bu özellik FCM veya UnifiedPush aracılığıyla gönderilen anlık bildirimler gerektirir ve şu anda kullanılamıyor. Kilitliyken yeni etkinlik Uygulama kilitliyken mesajlar veya cevapsız aramalar için bildirimler alın. - Anlık bildirimler kullanılamıyor Gezinme çubuğu Aramaları göster Gezinme çubuğundaki simgeyi göstermek veya gizlemek için değiştirin diff --git a/app/src/main/res/values-uk/strings2.xml b/app/src/main/res/values-uk/strings2.xml index 11fa7032cc..8830b07e21 100644 --- a/app/src/main/res/values-uk/strings2.xml +++ b/app/src/main/res/values-uk/strings2.xml @@ -73,8 +73,6 @@ Видалити й вимкнути ведення журналу налагодження? Molly потрібен доступ до контактів і медіа, щоб допомагати вам знаходити ваших друзів та надсилати повідомлення. Ваші контакти завантажуються за допомогою приватного виявлення контактів Signal, що означає наскрізьне їх шифрування, а також невидимість для сервісу Signal. Molly потрібен доступ до контактів, щоб допомагати вам знаходити ваших друзів. Ваші контакти завантажуються за допомогою приватного виявлення контактів Signal, що означає наскрізьне їх шифрування, а також невидимість для сервісу Signal. - Оптимізація для своєчасних сповіщень - Торкніться, щоб дозволити Molly отримувати повідомлення, коли пристрій перебуває в режимі очікування. Біометрична верифікація Будь ласка, підтвердьте, що це справді ви використовуєте Моллі Заблокувати доступ до Моллі за допомогою відбитка пальця або розпізнавання обличчя @@ -116,7 +114,6 @@ Виникла помилка під час спроби підʼєднати пристрій. Перевірте підключення до мережі та повторіть спробу Повторити спробу привʼязки Вибачте, ця функція вимагає push-сповіщень через FCM або UnifiedPush, які наразі недоступні. - Push-сповіщення недоступні Остання перевірка: %s Molly заблоковано Для пристроїв на Android: Відвідайте %s, щоб встановити Molly. diff --git a/app/src/main/res/values-zh-rCN/strings2.xml b/app/src/main/res/values-zh-rCN/strings2.xml index 56199430aa..c085395185 100644 --- a/app/src/main/res/values-zh-rCN/strings2.xml +++ b/app/src/main/res/values-zh-rCN/strings2.xml @@ -68,8 +68,6 @@ 未扫描的链接 Molly 需要联系人和媒体权限来帮助你寻找好友和发送信息。你的联系人使用 Signal 的“私人联系人发现”上传,这意味着它们是端到端加密的,对 Signal 服务永远不可见。 Molly 需要联系人和媒体权限来帮助你寻找好友和发送信息。你的联系人使用 Signal 的“私人联系人发现”上传,这意味着它们是端到端加密的,对 Signal 服务永远不可见。 - 优化以及时获取通知 - 轻按允许 Molly 当设备处于待机状态时获取信息。 包括测试版更新 Beta 版本用于测试目的,可能包含 bug 请确认确实是你本人要用 Molly @@ -106,7 +104,6 @@ 抱歉,此功能需要通过 FCM 或 UnifiedPush 传送推送通知,而 FCM 和 UnifiedPush 目前均不可用。 锁定期间有新活动 在应用锁定时接收消息或未接来电的通知。 - 推送通知不可用 切换导航栏图标状态(显示/隐藏) 导航栏 显示通话 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7e33d96c54..af92afdfcc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1043,8 +1043,8 @@ View - Permanent Molly communication failure! - Molly was unable to register with Google Play Services. Molly messages and calls have been disabled, please try re-registering in Settings > Advanced. + Permanent Signal communication failure! + Signal was unable to register with Google Play Services. Signal messages and calls have been disabled, please try re-registering in Settings > Advanced. diff --git a/app/src/main/res/values/strings2.xml b/app/src/main/res/values/strings2.xml index 1a5532b8d8..6b96c2b88a 100644 --- a/app/src/main/res/values/strings2.xml +++ b/app/src/main/res/values/strings2.xml @@ -78,8 +78,8 @@ For updates, please check your app store. This version does not include an in-app updater. Molly needs the contacts and media permissions to help you find your friends and send messages. Your contacts are uploaded using Signal\'s private contact discovery, which means they are end-to-end encrypted and never visible to the Signal service. Molly needs the contacts permission to help you find your friends. Your contacts are uploaded using Signal\'s private contact discovery, which means they are end-to-end encrypted and never visible to the Signal service. - Optimize for timely notifications - Tap to allow Molly to retrieve messages while the device is in standby. + Allow Molly to deliver timely notifications, even when your device is in standby. + Disable battery restrictions Biometric verification Please confirm it is really you to use Molly Lock Molly access with fingerprint or face recognition @@ -114,7 +114,6 @@ The provider has declined to send you a verification code, likely due to fraud prevention rules. New activity while locked Receive notifications for messages or missed calls when the app is locked. - Push notifications unavailable Sorry, this feature requires push notifications delivered via FCM or UnifiedPush, which are currently unavailable. Last checked: %s Molly is locked @@ -124,10 +123,12 @@ Once linked, new messages sync across devices, but previous message history will not be transferred. Molly supports linking to other Android devices running Molly, as well as desktops and iPads running Signal. For Android devices: Visit %s to install Molly. + "Unable to register with Play Services + Switch to an alternative push service in Settings > Notifications or fix the issue with Play Services. Push notifications - Preferred method for receiving notifications from the Signal service. If your selected method is unavailable, the app will automatically switch to WebSocket. - Delivery method - Google Services (FCM) + Select your preferred service for push notifications. If unavailable, the app will automatically use WebSocket. + Delivery service + FCM (Google Play Services) WebSocket WebSocket Service