feat: Request notification permission on app startup for Android 13+; improve user experience and logging
This commit is contained in:
@@ -1,11 +1,17 @@
|
|||||||
package com.rosetta.messenger
|
package com.rosetta.messenger
|
||||||
|
|
||||||
|
import android.Manifest
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.pm.PackageManager
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
|
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||||
import androidx.activity.compose.setContent
|
import androidx.activity.compose.setContent
|
||||||
import androidx.activity.enableEdgeToEdge
|
import androidx.activity.enableEdgeToEdge
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.compose.animation.*
|
import androidx.compose.animation.*
|
||||||
import androidx.compose.animation.core.FastOutSlowInEasing
|
import androidx.compose.animation.core.FastOutSlowInEasing
|
||||||
@@ -78,7 +84,34 @@ class MainActivity : ComponentActivity() {
|
|||||||
// Используем новый оптимизированный кэш
|
// Используем новый оптимизированный кэш
|
||||||
OptimizedEmojiCache.preload(this)
|
OptimizedEmojiCache.preload(this)
|
||||||
|
|
||||||
setContent {
|
setContent { // 🔔 Запрос разрешения на уведомления для Android 13+
|
||||||
|
val notificationPermissionLauncher = rememberLauncherForActivityResult(
|
||||||
|
contract = ActivityResultContracts.RequestPermission(),
|
||||||
|
onResult = { isGranted ->
|
||||||
|
Log.d(TAG, "📬 Notification permission result: $isGranted")
|
||||||
|
if (!isGranted) {
|
||||||
|
Log.w(TAG, "⚠️ User denied notification permission")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// Запрашиваем разрешение при первом запуске (Android 13+)
|
||||||
|
LaunchedEffect(Unit) {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
val hasPermission = ContextCompat.checkSelfPermission(
|
||||||
|
this@MainActivity,
|
||||||
|
Manifest.permission.POST_NOTIFICATIONS
|
||||||
|
) == PackageManager.PERMISSION_GRANTED
|
||||||
|
|
||||||
|
if (!hasPermission) {
|
||||||
|
Log.d(TAG, "📬 Requesting notification permission...")
|
||||||
|
notificationPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
|
||||||
|
} else {
|
||||||
|
Log.d(TAG, "✅ Notification permission already granted")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val scope = rememberCoroutineScope()
|
val scope = rememberCoroutineScope()
|
||||||
val isDarkTheme by preferencesManager.isDarkTheme.collectAsState(initial = true)
|
val isDarkTheme by preferencesManager.isDarkTheme.collectAsState(initial = true)
|
||||||
val isLoggedIn by accountManager.isLoggedIn.collectAsState(initial = null)
|
val isLoggedIn by accountManager.isLoggedIn.collectAsState(initial = null)
|
||||||
|
|||||||
Reference in New Issue
Block a user