Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ef949c0c authored by Philipp Heckel's avatar Philipp Heckel
Browse files

Merge branch 'main' into md3-migration

parents d7123bd4 c15efff7
Loading
Loading
Loading
Loading
+2 −26
Original line number Diff line number Diff line
@@ -2,32 +2,8 @@
This is the Android app for [ntfy](https://github.com/binwiederhier/ntfy) ([ntfy.sh](https://ntfy.sh)). You can find the app in [F-Droid](https://f-droid.org/packages/io.heckel.ntfy/) or the [Play Store](https://play.google.com/store/apps/details?id=io.heckel.ntfy), 
or as .apk files on the [releases page](https://github.com/binwiederhier/ntfy-android/releases).

# Build

## Building without Firebase (F-Droid flavor)
Without Firebase, you may want to still change the default `app_base_url` in [strings.xml](https://github.com/binwiederhier/ntfy-android/blob/main/app/src/main/res/values/strings.xml)
if you're self-hosting the server. Then run:
```
# To build an unsigned .apk (app/build/outputs/apk/fdroid/*.apk)
./gradlew assembleFdroidRelease

# To build a bundle .aab (app/fdroid/release/*.aab)
./gradlew bundleFdroidRelease
```

## Building with Firebase (FCM, Google Play flavor)
To build your own version with Firebase, you must:
* Create a Firebase/FCM account
* Place your account file at `app/google-services.json` 
* And change `app_base_url` in [strings.xml](https://github.com/binwiederhier/ntfy-android/blob/main/app/src/main/res/values/strings.xml)
* Then run:
```
# To build an unsigned .apk (app/build/outputs/apk/play/*.apk)
./gradlew assemblePlayRelease

# To build a bundle .aab (app/play/release/*.aab)
./gradlew bundlePlayRelease
```
## Build
For up-to-date building instructions, please see the [official docs](https://docs.ntfy.sh/develop/#android-app).

## Translations
We're using [Weblate](https://hosted.weblate.org/projects/ntfy/) to translate the ntfy Android app. We'd love your participation.
+10 −11
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ android {
        debug {
            minifyEnabled false
            debuggable true
            applicationIdSuffix '.debug'
        }
    }

@@ -92,19 +91,19 @@ android.applicationVariants.all { variant ->

dependencies {
    // AndroidX, The Basics
    implementation "androidx.appcompat:appcompat:1.5.1"
    implementation "androidx.core:core-ktx:1.9.0"
    implementation "androidx.appcompat:appcompat:1.6.1"
    implementation "androidx.core:core-ktx:1.10.1"
    implementation "androidx.constraintlayout:constraintlayout:2.1.4"
    implementation "androidx.activity:activity-ktx:1.6.1"
    implementation "androidx.fragment:fragment-ktx:1.5.4"
    implementation "androidx.work:work-runtime-ktx:2.7.1"
    implementation "androidx.activity:activity-ktx:1.7.1"
    implementation "androidx.fragment:fragment-ktx:1.5.7"
    implementation "androidx.work:work-runtime-ktx:2.8.1"
    implementation 'androidx.preference:preference-ktx:1.2.0'

    // JSON serialization
    implementation 'com.google.code.gson:gson:2.10'

    // Room (SQLite)
    def room_version = "2.4.3"
    def room_version = "2.5.1"
    implementation "androidx.room:room-ktx:$room_version"
    kapt "androidx.room:room-compiler:$room_version"

@@ -112,19 +111,19 @@ dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.10.0'

    // Firebase, sigh ... (only Google Play)
    playImplementation 'com.google.firebase:firebase-messaging:23.1.0'
    playImplementation 'com.google.firebase:firebase-messaging:23.1.2'

    // RecyclerView
    implementation "androidx.recyclerview:recyclerview:1.3.0-rc01"
    implementation "androidx.recyclerview:recyclerview:1.3.0"

    // Swipe down to refresh
    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

    // Material design
    implementation "com.google.android.material:material:1.8.0"
    implementation "com.google.android.material:material:1.9.0"

    // LiveData
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.1"
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'

    // Image viewer
+136 −0
Original line number Diff line number Diff line
@@ -207,4 +207,140 @@
    <string name="settings_notifications_priority_default">por defecto</string>
    <string name="settings_notifications_priority_high">alta</string>
    <string name="settings_notifications_priority_max">máxima</string>
    <string name="settings_notifications_channel_prefs_summary">Obviar Non Molestar (DND), sons, etc.</string>
    <string name="settings_notifications_auto_download_title">Descargar adxuntos</string>
    <string name="settings_notifications_auto_download_summary_always">Descarga automática dos adxuntos</string>
    <string name="settings_notifications_auto_download_summary_never">Non descargar automaticamente os adxuntos</string>
    <string name="settings_notifications_auto_download_summary_smaller_than_x">Descarga automática dos adxuntos ata %1$s</string>
    <string name="settings_notifications_auto_download_never">Non descargar nunca automaticamente</string>
    <string name="settings_notifications_auto_delete_summary_one_week">Eliminar automaticamene as notificacións após unha semana</string>
    <string name="settings_notifications_auto_delete_summary_one_month">Eliminar automaticamente as notificacións após un mes</string>
    <string name="settings_notifications_auto_delete_summary_three_months">Eliminar automaticamente as notificacións após 3 meses</string>
    <string name="settings_notifications_auto_delete_never">Nunca</string>
    <string name="settings_notifications_auto_delete_one_day">Após un día</string>
    <string name="settings_notifications_insistent_max_priority_summary_enabled">Manter as alertas da prioridade máis alta ata que se desboten</string>
    <string name="settings_notifications_insistent_max_priority_summary_disabled">Notificar as alertas da máxima prioridade só unha vez</string>
    <string name="settings_general_header">Xeral</string>
    <string name="settings_general_default_base_url_title">Servidor por defecto</string>
    <string name="settings_general_default_base_url_default_summary">%1$s (por defecto)</string>
    <string name="settings_general_users_title">Xestionar usuarias</string>
    <string name="settings_general_users_summary">Engade/elimina usuarias dos temas protexidos</string>
    <string name="settings_general_users_prefs_title">Usuarias</string>
    <string name="settings_general_users_prefs_user_not_used">Non utilizado por ningún tema</string>
    <string name="settings_general_users_prefs_user_used_by_one">Usado polo tema %1$s</string>
    <string name="settings_general_users_prefs_user_add">Engadir usuarias</string>
    <string name="settings_general_users_prefs_user_add_title">Engadir nova usuaria</string>
    <string name="settings_general_users_prefs_user_add_summary">Crear unha nova usuaria para un novo servidor</string>
    <string name="settings_general_dark_mode_title">Modo escuro</string>
    <string name="settings_general_dark_mode_summary_system">Seguir o establecido no sistema</string>
    <string name="settings_general_dark_mode_summary_light">Modo claro activado</string>
    <string name="settings_general_dark_mode_summary_dark">Modo escuro activado. Es un morcego\?</string>
    <string name="settings_general_dark_mode_entry_system">Seguir ao sistema</string>
    <string name="settings_general_dark_mode_entry_light">Modo claro</string>
    <string name="settings_general_dark_mode_entry_dark">Modo escuro</string>
    <string name="settings_backup_restore_header">Copia e Restablecemento</string>
    <string name="settings_backup_restore_backup_title">Copia de apoio nun ficheiro</string>
    <string name="settings_backup_restore_backup_summary">Exportar configuración, notificacións e usuarias</string>
    <string name="settings_backup_restore_backup_entry_everything">Todo</string>
    <string name="settings_backup_restore_backup_entry_everything_no_users">Todo, menos as usuarias</string>
    <string name="settings_backup_restore_backup_entry_settings_only">Só os axustes</string>
    <string name="settings_backup_restore_backup_successful">Copia creada</string>
    <string name="settings_backup_restore_backup_failed">Fallou a copia: %1$s</string>
    <string name="settings_notifications_auto_download_always">Descargar todo automaticamente</string>
    <string name="settings_notifications_auto_download_100k">Se inferior a 100 kB</string>
    <string name="settings_notifications_auto_download_500k">Se inferior a 500 kB</string>
    <string name="settings_notifications_auto_download_1m">Se inferior a 1 MB</string>
    <string name="settings_notifications_auto_download_5m">Se inferior a 5 MB</string>
    <string name="settings_notifications_auto_download_10m">Se inferior a 10 MB</string>
    <string name="settings_notifications_auto_download_50m">Se inferior a 50 MB</string>
    <string name="settings_notifications_auto_delete_title">Eliminar notificacións</string>
    <string name="settings_notifications_auto_delete_summary_never">Non eliminar nunca automaticamente as notificacións</string>
    <string name="settings_notifications_auto_delete_summary_one_day">Eliminar automaticamente as notificacións após un día</string>
    <string name="settings_notifications_auto_delete_summary_three_days">Eliminar automaticamente as notificacións após 3 días</string>
    <string name="settings_notifications_auto_delete_three_days">Após 3 días</string>
    <string name="settings_notifications_auto_delete_one_week">Após unha semana</string>
    <string name="settings_notifications_auto_delete_one_month">Após un mes</string>
    <string name="settings_notifications_auto_delete_three_months">Após 3 meses</string>
    <string name="settings_notifications_insistent_max_priority_title">Manter as alertas da prioridade máis alta</string>
    <string name="settings_general_default_base_url_message">Escribe o enderezo URL raíz do teu servidor para usar o servidor propio por defecto cando te subscribas a novos temas e/ou compartas os temas.</string>
    <string name="settings_general_users_prefs_user_used_by_many">Usado polos temas %1$s</string>
    <string name="settings_advanced_broadcast_summary_enabled">As app poden recibir notificacións entrantes como difusións</string>
    <string name="settings_advanced_broadcast_summary_disabled">As app non poden recibir notificacións entrantes como difusións</string>
    <string name="settings_backup_restore_restore_failed">Fallou o restablecemento: %1$s</string>
    <string name="settings_advanced_header">Avanzado</string>
    <string name="settings_advanced_broadcast_title">Mensaxes de difusión</string>
    <string name="settings_advanced_export_logs_scrub_dialog_text">Estes temas e nomes de servidor serán substituídos por nomes de froita, así podes compartilos sen problema:
\n
\n%1$s
\n
\nOs contrasinais son anulados, pero non aparecen aquí.</string>
    <string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string>
    <string name="settings_advanced_connection_protocol_summary_ws">Usar WebSockets para conectar co servidor. Este é o método recomendado, pero podería precisar configuración adicional no teu proxy.</string>
    <string name="settings_advanced_connection_protocol_entry_jsonhttp">Fluxo JSON sobre HTTP</string>
    <string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
    <string name="settings_advanced_connection_protocol_summary_jsonhttp">Usar un fluxo JSON sobre HTTP para conectar co servidor. Este método é robusto, pero podería consumir máis batería.</string>
    <string name="settings_about_version_copied_to_clipboard_message">Copiado ao portapapeis</string>
    <string name="detail_settings_notifications_instant_title">Entrega inmediata</string>
    <string name="settings_about_header">Acerca de</string>
    <string name="settings_about_version_title">Versión</string>
    <string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
    <string name="detail_settings_notifications_instant_summary_off">Notificacións entregadas usando Firebase. A entrega podería sufrir demora, pero consume menos batería.</string>
    <string name="detail_settings_notifications_dedicated_channels_title">Axustes personais de notificación</string>
    <string name="detail_settings_notifications_dedicated_channels_summary_on">Usar axustes personais para esta subscrición</string>
    <string name="detail_settings_notifications_dedicated_channels_summary_off">Usar axustes por defecto (sons, obviar Non Molestar, etc.)</string>
    <string name="detail_settings_notifications_open_channels_summary">Obviar Non Molestar (DND), sons, etc.</string>
    <string name="detail_settings_notifications_open_channels_title">Configurar axustes da notificación</string>
    <string name="detail_settings_appearance_icon_error_saving">Non se gardou a icona: %1$s</string>
    <string name="detail_settings_appearance_display_name_title">Nome mostrado</string>
    <string name="detail_settings_about_topic_url_copied_to_clipboard_message">Copiado ao portapapeis</string>
    <string name="settings_backup_restore_restore_title">Restablecer desde ficheiro</string>
    <string name="settings_backup_restore_restore_summary">Importar configuración, notificacións e usuarias</string>
    <string name="settings_backup_restore_restore_successful">Restablecemento correcto</string>
    <string name="settings_advanced_unifiedpush_summary_enabled">nfty actuará como distribuidora UnifiedPush</string>
    <string name="settings_advanced_unifiedpush_summary_disabled">nfty non actuará como distribuidora UnifiedPush</string>
    <string name="settings_advanced_record_logs_title">Gravar rexistros</string>
    <string name="settings_advanced_record_logs_summary_enabled">Gravando (ata 1000 entradas) no dispositivo…</string>
    <string name="settings_advanced_record_logs_summary_disabled">Activar rexistro, así poderás compartir os rexistros para diagnosticar problemas.</string>
    <string name="settings_advanced_clear_logs_title">Limpar rexistros</string>
    <string name="settings_advanced_export_logs_title">Copiar/subir rexistros</string>
    <string name="settings_advanced_export_logs_summary">Copia os rexistros ao portapapeis, ou súbeos a nopaste.net (propiedade de ntfy). Os nomes de servidor e temas poden agocharse, as notificacións non.</string>
    <string name="settings_advanced_export_logs_entry_copy_original">Copiar ao portapapeis</string>
    <string name="settings_advanced_export_logs_entry_copy_scrubbed">Copiar ao portapapeis (censurado)</string>
    <string name="settings_advanced_export_logs_entry_upload_original">Subir e copiar ligazón</string>
    <string name="settings_advanced_export_logs_entry_upload_scrubbed">Subir e copiar ligazón (censurado)</string>
    <string name="settings_advanced_export_logs_copied_logs">Rexistros copiados ao portapapeis</string>
    <string name="settings_advanced_export_logs_uploading">Subindo o rexistro …</string>
    <string name="settings_advanced_export_logs_copied_url">Rexistros subidos e URL copiado</string>
    <string name="settings_advanced_export_logs_error_uploading">Non se puido subir o rexistro: %1$s</string>
    <string name="settings_advanced_export_logs_scrub_dialog_empty">Non se editaron temas/servidores. Non tes ningunha subscrición\?</string>
    <string name="settings_advanced_clear_logs_summary">Eliminar os rexistros anteriores e volver a comezar</string>
    <string name="settings_advanced_clear_logs_deleted_toast">Rexistros eliminados</string>
    <string name="settings_advanced_connection_protocol_title">Protocolo de conexión</string>
    <string name="detail_settings_notifications_instant_summary_on">As notificacións entregaranse inmediatamente. Require un servizo en segundo plano e consume máis batería.</string>
    <string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Seguir avisando</string>
    <string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Avisar só unha vez</string>
    <string name="detail_settings_appearance_header">Aspecto</string>
    <string name="detail_settings_appearance_icon_set_title">Icona da subscrición</string>
    <string name="detail_settings_appearance_icon_set_summary">Establecer a icona a mostrar na notificación</string>
    <string name="detail_settings_appearance_icon_remove_title">Icona da subscrición (toca para eliminar)</string>
    <string name="detail_settings_appearance_icon_remove_summary">Icona mostrada na notificación deste tema</string>
    <string name="user_dialog_button_add">Engadir usuaria</string>
    <string name="detail_settings_appearance_display_name_message">Establece o nome para mostrar para esta subscrición. Deixa en branco para valor por defecto (%1$s).</string>
    <string name="detail_settings_appearance_display_name_default_summary">%1$s (por defecto)</string>
    <string name="detail_settings_global_setting_title">Usar axuste global</string>
    <string name="detail_settings_global_setting_suffix">usando o axuste global</string>
    <string name="detail_settings_about_header">Acerca de</string>
    <string name="detail_settings_about_topic_url_title">URL do tema</string>
    <string name="user_dialog_title_add">Engadir usuaria</string>
    <string name="user_dialog_button_cancel">Cancelar</string>
    <string name="user_dialog_button_delete">Eliminar usuaria</string>
    <string name="user_dialog_button_save">Gardar</string>
    <string name="settings_advanced_unifiedpush_title">Activar UnifiedPush</string>
    <string name="user_dialog_title_edit">Editar usuaria</string>
    <string name="user_dialog_description_add">Podes engadir aquí unha usuaria. Todos os temas do servidor indicado usarán esta usuaria.</string>
    <string name="user_dialog_description_edit">Podes editar as credenciais da usuaria seleccionada, ou eliminala.</string>
    <string name="user_dialog_base_url_hint">URL do servizo</string>
    <string name="user_dialog_username_hint">Identificador</string>
    <string name="user_dialog_password_hint_add">Contrasinal</string>
    <string name="user_dialog_password_hint_edit">Contrasinal (baleiro para non cambiar)</string>
</resources>
 No newline at end of file
+68 −5

File changed.

Preview size limit exceeded, changes collapsed.

+1 −0
Original line number Diff line number Diff line
@@ -329,4 +329,5 @@
    <string name="main_banner_websocket_button_enable_now">Attiva ora</string>
    <string name="channel_notifications_group_default_name">Default</string>
    <string name="main_menu_donate_title">Dona 💸</string>
    <string name="detail_item_cannot_open_apk">Le app non possono più essere installate: devono essere scaricate via browser. Vedi l\'issue #531 per dettagli.</string>
</resources>
 No newline at end of file
Loading