Просмотр исходного кода

feat: :sparkles: feat(notificação chamativa) Foi ralizado a adição de notificação

Foi realziado a adição da notificação no mobile com o apk fechado onde agr o aplicativo faz um barulho quando o prestador recebe um agendamento direto do cliente

fase:dev | origin:escopo
kayo henrique 1 неделя назад
Родитель
Сommit
1d19183f90

Разница между файлами не показана из-за своего большого размера
+ 710 - 4
package-lock.json


+ 2 - 1
package.json

@@ -12,7 +12,7 @@
     "test": "echo \"No test specified\" && exit 0",
     "dev": "cross-env APP_ENV=dev quasar dev",
     "dev:staging": "APP_ENV=staging quasar dev",
-    "dev:android": "APP_ENV=dev quasar dev -m capacitor -T android",
+    "dev:android": "cross-env APP_ENV=dev quasar dev -m capacitor -T android",
     "dev:ios": "APP_ENV=dev quasar dev -m capacitor -T ios",
     "build": "APP_ENV=prod quasar build",
     "build:dev": "APP_ENV=dev quasar build",
@@ -49,6 +49,7 @@
   "devDependencies": {
     "@bufbuild/buf": "^1.54.0",
     "@bufbuild/protoc-gen-es": "^2.5.1",
+    "@capacitor/cli": "^7.6.8",
     "@capacitor/keyboard": "^7.0.1",
     "@capacitor/preferences": "^7.0.1",
     "@capacitor/status-bar": "^7.0.1",

+ 39 - 0
src-capacitor/android/app/src/main/java/br/com/diarista/provider/MainActivity.java

@@ -3,6 +3,11 @@ package br.com.diarista.provider;
 import android.graphics.Color;
 import android.os.Bundle;
 import android.webkit.WebView;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.media.AudioAttributes;
+import android.net.Uri;
+import android.os.Build;
 
 import com.getcapacitor.BridgeActivity;
 
@@ -14,6 +19,9 @@ public class MainActivity extends BridgeActivity {
         // WebView, então o WebView precisa ser transparente onde o mapa é exibido.
         // (O background do body cobre isso nas telas normais — só o LocationMapDialog
         //  torna a cadeia html/body/#q-app transparente para revelar o mapa.)
+
+        createNotificationChannel();
+
         getBridge().getWebView().setBackgroundColor(Color.TRANSPARENT);
     }
 
@@ -23,4 +31,35 @@ public class MainActivity extends BridgeActivity {
         WebView webview = getBridge().getWebView();
         webview.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
     }
+
+    private void createNotificationChannel() {
+    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+
+        Uri sound = Uri.parse(
+                "android.resource://" + getPackageName() + "/" + R.raw.diaria
+        );
+
+        AudioAttributes audioAttributes = new AudioAttributes.Builder()
+                .setUsage(AudioAttributes.USAGE_NOTIFICATION_EVENT)
+                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+                .build();
+
+        NotificationChannel channel = new NotificationChannel(
+                "diaria",
+                "Novas Diárias",
+                NotificationManager.IMPORTANCE_HIGH
+        );
+
+        channel.setDescription("Canal para novas solicitações de diária");
+        channel.setShowBadge(true);
+        channel.enableLights(true);
+        channel.enableVibration(true);
+        channel.setSound(sound, audioAttributes);
+
+        NotificationManager notificationManager =
+                getSystemService(NotificationManager.class);
+
+        notificationManager.createNotificationChannel(channel);
+    }
+}
 }

BIN
src-capacitor/android/app/src/main/res/raw/diaria.wav


+ 1 - 0
src-capacitor/package-lock.json

@@ -98,6 +98,7 @@
       "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-7.6.8.tgz",
       "integrity": "sha512-x1xfxvNcTSnj6OoYaAB0n0a0HRvi5f2YjcVnMLxpMhbHDgGDAzzN9z8cnPCYV+SKTvqGF1hezHm82Op32XaAGg==",
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "tslib": "^2.1.0"
       }

Некоторые файлы не были показаны из-за большого количества измененных файлов