GVKun编程网logo

为什么在通过 Firebase 中的 Express 应用程序从 Google Cloud Storage 提供 PDF 时下载在 Chrome 中挂起?

13

本文将介绍为什么在通过Firebase中的Express应用程序从GoogleCloudStorage提供PDF时下载在Chrome中挂起?的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您

本文将介绍为什么在通过 Firebase 中的 Express 应用程序从 Google Cloud Storage 提供 PDF 时下载在 Chrome 中挂起?的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于android Firebase Cloud Messages通知图标、Android Firebase 库,仪器化测试 - 无静态方法 registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite、android – NoClassDefFoundError:com.google.firebase.FirebaseOptions、android – 使用Firebase和Google Cloud Messaging推送通知的知识。

本文目录一览:

为什么在通过 Firebase 中的 Express 应用程序从 Google Cloud Storage 提供 PDF 时下载在 Chrome 中挂起?

为什么在通过 Firebase 中的 Express 应用程序从 Google Cloud Storage 提供 PDF 时下载在 Chrome 中挂起?

终于想通了...似乎我应该直接使用流并将其通过管道传输到 Express 响应中。

这为我修好了

// in the files.ts express handler
// ...

// Get the file stream
const file = await filesService.getPdfFile(`${hostname}/${slug}`)
const stream = file.createReadStream()

res.on('error',err => logger.error(err))
res.set('Content-Type','application/pdf')

if (download) {
    res.set('Content-Disposition',`attachment; filename=${slug}`)
}

// Pipe file read stream to the response (write stream)
stream.pipe(res)
stream.on('error',err => logger.error(err))

// ...

android Firebase Cloud Messages通知图标

android Firebase Cloud Messages通知图标

如何解决android Firebase Cloud Messages通知图标?

我在项目中使用了FCM,效果很好。但是有一个问题:在某些Android设备上,而不是彩色的应用程序图标(当未设置自定义默认图标且通知有效负载中未设置图标时)显示了一个灰色的圆形。为什么会发生这种情况,我应该使用哪种图标?我应该使用元数据标签设置自定义默认图标吗?

wrong icon

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Android Firebase 库,仪器化测试 - 无静态方法 registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite

Android Firebase 库,仪器化测试 - 无静态方法 registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite

如何解决Android Firebase 库,仪器化测试 - 无静态方法 registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite?

尝试在 Android Studio 中运行插桩测试会导致

test eax,eax

在日志中更详细

Test running Failed: Process crashed.

我发现的最接近的是 this issue on github,但我尝试了多种设置,将 protobuf java 从我的依赖项中排除。我试图将它从所有项目中排除,仅从 app 模块中,从 app 模块以外的所有模块中排除,依此类推。我在多个模块中使用 Firebase 性能。

我尝试找到 E: FATAL EXCEPTION: main Process: com.nikolam.colorme.debug,PID: 19841 java.lang.NoSuchMethodError: No static method registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite;)V in class Lcom/google/protobuf/GeneratedMessageLite; or its super classes (declaration of ''com.google.protobuf.GeneratedMessageLite'' appears in /data/app/com.nikolam.colorme.debug.test-lZqsu6pVWp2DVtFzU1uYgg==/base.apk) at com.google.firebase.perf.v1.ApplicationInfo.<clinit>(ApplicationInfo.java:1085) at com.google.firebase.perf.v1.ApplicationInfo.newBuilder(ApplicationInfo.java:533) at com.google.firebase.perf.transport.TransportManager.<init>(TransportManager.java:139) at com.google.firebase.perf.transport.TransportManager.<clinit>(TransportManager.java:91) at com.google.firebase.perf.transport.TransportManager.getInstance(TransportManager.java:149) at com.google.firebase.perf.internal.AppStateMonitor.getInstance(AppStateMonitor.java:64) at com.google.firebase.perf.provider.FirebasePerfProvider.attachInfo(FirebasePerfProvider.java:65) at android.app.ActivityThread.installProvider(ActivityThread.java:6983) at android.app.ActivityThread.installContentProviders(ActivityThread.java:6528) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6445) at android.app.ActivityThread.access$1300(ActivityThread.java:219) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) ,这是我找到它的地方

protobuf-java

其他 Firebase 库依赖于

lintClasspath - The lint embedded classpath
\--- com.android.tools.lint:lint-gradle:27.1.0
     +--- com.android.tools:sdk-common:27.1.0
     |    +--- com.android.tools:sdklib:27.1.0
     |    |    +--- com.android.tools.layoutlib:layoutlib-api:27.1.0
     |    |    |    +--- com.android.tools:common:27.1.0
     |    |    |    |    +--- com.android.tools:annotations:27.1.0
     |    |    |    |    +--- com.google.guava:guava:28.1-jre
     |    |    |    |    |    +--- com.google.guava:failureaccess:1.0.1
     |    |    |    |    |    +--- com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
     |    |    |    |    |    +--- com.google.code.findbugs:jsr305:3.0.2
     |    |    |    |    |    +--- org.checkerframework:checker-qual:2.8.1
     |    |    |    |    |    +--- com.google.errorprone:error_prone_annotations:2.3.2
     |    |    |    |    |    +--- com.google.j2objc:j2objc-annotations:1.3
     |    |    |    |    |    \--- org.codehaus.mojo:animal-sniffer-annotations:1.18
     |    |    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72
     |    |    |    |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.72
     |    |    |    |         |    +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.72
     |    |    |    |         |    \--- org.jetbrains:annotations:13.0
     |    |    |    |         \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72
     |    |    |    |              \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.72 (*)
     |    |    |    +--- net.sf.kxml:kxml2:2.3.0
     |    |    |    +--- com.android.tools:annotations:27.1.0
     |    |    |    \--- org.jetbrains:annotations:13.0
     |    |    +--- com.android.tools:dvlib:27.1.0
     |    |    |    \--- com.android.tools:common:27.1.0 (*)
     |    |    +--- com.android.tools:repository:27.1.0
     |    |    |    +--- com.android.tools:common:27.1.0 (*)
     |    |    |    +--- com.sun.activation:javax.activation:1.2.0
     |    |    |    +--- org.apache.commons:commons-compress:1.12
     |    |    |    +--- org.glassfish.jaxb:jaxb-runtime:2.3.1
     |    |    |    |    +--- javax.xml.bind:jaxb-api:2.3.1
     |    |    |    |    |    \--- javax.activation:javax.activation-api:1.2.0
     |    |    |    |    +--- org.glassfish.jaxb:txw2:2.3.1
     |    |    |    |    +--- com.sun.istack:istack-commons-runtime:3.0.7
     |    |    |    |    +--- org.jvnet.staxex:stax-ex:1.8
     |    |    |    |    +--- com.sun.xml.fastinfoset:fastinfoset:1.2.15
     |    |    |    |    \--- javax.activation:javax.activation-api:1.2.0
     |    |    |    +--- com.google.jimfs:jimfs:1.1
     |    |    |    |    \--- com.google.guava:guava:18.0 -> 28.1-jre (*)
     |    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    |    +--- com.google.code.gson:gson:2.8.5
     |    |    +--- org.apache.commons:commons-compress:1.12
     |    |    +--- org.apache.httpcomponents:httpmime:4.5.6
     |    |    |    \--- org.apache.httpcomponents:httpclient:4.5.6
     |    |    |         +--- org.apache.httpcomponents:httpcore:4.4.10
     |    |    |         +--- commons-logging:commons-logging:1.2
     |    |    |         \--- commons-codec:commons-codec:1.10
     |    |    \--- org.apache.httpcomponents:httpcore:4.4.10
     |    +--- com.android.tools.build:builder-test-api:4.1.0
     |    |    \--- com.android.tools.ddms:ddmlib:27.1.0
     |    |         +--- com.android.tools:common:27.1.0 (*)
     |    |         +--- net.sf.kxml:kxml2:2.3.0
     |    |         \--- com.google.protobuf:protobuf-java:3.10.0
     |    +--- com.android.tools.build:builder-model:4.1.0
     |    |    +--- com.android.tools:annotations:27.1.0
     |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    +--- com.android.tools.ddms:ddmlib:27.1.0 (*)
     |    +--- com.android.tools.analytics-library:shared:27.1.0
     |    |    +--- com.android.tools.analytics-library:protos:27.1.0
     |    |    |    \--- com.google.protobuf:protobuf-java:3.10.0
     |    |    +--- com.android.tools:annotations:27.1.0
     |    |    +--- com.android.tools:common:27.1.0 (*)
     |    |    +--- com.google.guava:guava:28.1-jre (*)
     |    |    +--- com.google.code.gson:gson:2.8.5
     |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    +--- org.bouncycastle:bcpkix-jdk15on:1.56
     |    |    \--- org.bouncycastle:bcprov-jdk15on:1.56
     |    +--- org.bouncycastle:bcprov-jdk15on:1.56
     |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72
     |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.72 (*)
     |    +--- com.google.protobuf:protobuf-java:3.10.0  -- HERE 
     |    +--- javax.inject:javax.inject:1
     |    +--- org.jetbrains.trove4j:trove4j:20160824
     |    \--- com.android.tools.build:aapt2-proto:4.1.0-alpha01-6193524
     |         \--- com.google.protobuf:protobuf-java:3.10.0 -- HERE 
     +--- com.android.tools.build:builder:4.1.0
     |    +--- com.android.tools.build:builder-model:4.1.0 (*)
     |    +--- com.android.tools.build:builder-test-api:4.1.0 (*)
     |    +--- com.android.tools:sdklib:27.1.0 (*)
     |    +--- com.android.tools:sdk-common:27.1.0 (*)
     |    +--- com.android.tools:common:27.1.0 (*)
     |    +--- com.android.tools.build:manifest-merger:27.1.0
     |    |    +--- com.android.tools:common:27.1.0 (*)
     |    |    +--- com.android.tools:sdklib:27.1.0 (*)
     |    |    +--- com.android.tools:sdk-common:27.1.0 (*)
     |    |    +--- com.google.code.gson:gson:2.8.5
     |    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    |    \--- net.sf.kxml:kxml2:2.3.0
     |    +--- com.android.tools.ddms:ddmlib:27.1.0 (*)
     |    +--- com.android:zipflinger:4.1.0
     |    |    \--- com.android.tools:common:27.1.0 (*)
     |    +--- com.android:signflinger:4.1.0
     |    |    +--- com.android.tools.build:apksig:4.1.0
     |    |    \--- com.android:zipflinger:4.1.0 (*)
     |    +--- com.android.tools.analytics-library:protos:27.1.0 (*)
     |    +--- com.android.tools.analytics-library:tracker:27.1.0
     |    |    +--- com.android.tools:annotations:27.1.0
     |    |    +--- com.android.tools:common:27.1.0 (*)
     |    |    +--- com.android.tools.analytics-library:protos:27.1.0 (*)
     |    |    +--- com.android.tools.analytics-library:shared:27.1.0 (*)
     |    |    +--- com.google.protobuf:protobuf-java:3.10.0
     |    |    +--- com.google.guava:guava:28.1-jre (*)
     |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    +--- com.android.tools.build:apksig:4.1.0
     |    +--- com.android.tools.build:apkzlib:4.1.0
     |    |    +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.2
     |    |    +--- com.google.guava:guava:23.0 -> 28.1-jre (*)
     |    |    +--- org.bouncycastle:bcpkix-jdk15on:1.56 (*)
     |    |    +--- org.bouncycastle:bcprov-jdk15on:1.56
     |    |    \--- com.android.tools.build:apksig:4.1.0
     |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    +--- com.squareup:javawriter:2.5.0
     |    +--- org.bouncycastle:bcpkix-jdk15on:1.56 (*)
     |    +--- org.bouncycastle:bcprov-jdk15on:1.56
     |    +--- org.ow2.asm:asm:7.0
     |    +--- org.ow2.asm:asm-tree:7.0
     |    |    \--- org.ow2.asm:asm:7.0
     |    +--- javax.inject:javax.inject:1
     |    +--- org.ow2.asm:asm-commons:7.0
     |    |    +--- org.ow2.asm:asm:7.0
     |    |    +--- org.ow2.asm:asm-tree:7.0 (*)
     |    |    \--- org.ow2.asm:asm-analysis:7.0
     |    |         \--- org.ow2.asm:asm-tree:7.0 (*)
     |    +--- org.ow2.asm:asm-util:7.0
     |    |    +--- org.ow2.asm:asm:7.0
     |    |    +--- org.ow2.asm:asm-tree:7.0 (*)
     |    |    \--- org.ow2.asm:asm-analysis:7.0 (*)
     |    +--- it.unimi.dsi:fastutil:7.2.0
     |    +--- net.sf.jopt-simple:jopt-simple:4.9
     |    \--- com.googlecode.json-simple:json-simple:1.1
     +--- com.android.tools.build:builder-model:4.1.0 (*)
     +--- com.android.tools.external.com-intellij:intellij-core:27.1.0
     |    \--- org.jetbrains.trove4j:trove4j:20160824
     +--- com.android.tools.external.com-intellij:kotlin-compiler:27.1.0
     +--- com.android.tools.external.org-jetbrains:uast:27.1.0
     +--- com.android.tools.build:manifest-merger:27.1.0 (*)
     +--- com.android.tools.lint:lint:27.1.0
     |    +--- com.android.tools.lint:lint-checks:27.1.0
     |    |    +--- com.android.tools.lint:lint-api:27.1.0
     |    |    |    +--- com.android.tools:sdk-common:27.1.0 (*)
     |    |    |    +--- com.android.tools.lint:lint-model:27.1.0
     |    |    |    |    +--- com.android.tools:common:27.1.0 (*)
     |    |    |    |    +--- com.android.tools:sdk-common:27.1.0 (*)
     |    |    |    |    +--- com.android.tools.build:builder-model:4.1.0 (*)
     |    |    |    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    |    |    |    \--- net.sf.kxml:kxml2:2.3.0
     |    |    |    +--- com.google.guava:guava:28.1-jre (*)
     |    |    |    +--- com.android.tools.external.com-intellij:intellij-core:27.1.0 (*)
     |    |    |    +--- com.android.tools.external.com-intellij:kotlin-compiler:27.1.0
     |    |    |    +--- com.android.tools.external.org-jetbrains:uast:27.1.0
     |    |    |    +--- com.android.tools.build:manifest-merger:27.1.0 (*)
     |    |    |    +--- org.ow2.asm:asm:7.0
     |    |    |    +--- org.ow2.asm:asm-tree:7.0 (*)
     |    |    |    +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72 (*)
     |    |    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    |    |    \--- com.android.tools.build:builder-model:4.1.0 (*)
     |    |    +--- com.google.guava:guava:28.1-jre (*)
     |    |    +--- com.android.tools.external.com-intellij:intellij-core:27.1.0 (*)
     |    |    +--- com.android.tools.external.com-intellij:kotlin-compiler:27.1.0
     |    |    +--- com.android.tools.external.org-jetbrains:uast:27.1.0
     |    |    \--- org.ow2.asm:asm-analysis:7.0 (*)
     |    +--- com.google.guava:guava:28.1-jre (*)
     |    +--- com.android.tools.external.org-jetbrains:uast:27.1.0
     |    +--- com.android.tools.external.com-intellij:kotlin-compiler:27.1.0
     |    +--- com.android.tools.build:manifest-merger:27.1.0 (*)
     |    +--- com.android.tools.analytics-library:shared:27.1.0 (*)
     |    +--- com.android.tools.analytics-library:protos:27.1.0 (*)
     |    +--- com.android.tools.analytics-library:tracker:27.1.0 (*)
     |    +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72 (*)
     |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     +--- com.android.tools.lint:lint-gradle-api:27.1.0
     |    +--- com.android.tools:sdklib:27.1.0 (*)
     |    +--- com.android.tools.lint:lint-model:27.1.0 (*)
     |    +--- com.android.tools.build:gradle-api:4.1.0
     |    |    +--- com.android.tools.build:builder-test-api:4.1.0 (*)
     |    |    +--- com.google.guava:guava:28.1-jre (*)
     |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72 (*)
     |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
     |    \--- com.google.guava:guava:28.1-jre (*)
     +--- com.android:zipflinger:4.1.0 (*)
     +--- org.codehaus.groovy:groovy-all:2.4.15
     +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72 (*)
     \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)

整个dependencies.log很大,所以我不知道如何发布

解决方法

在我的情况下,它似乎是由最近更新的 protobuf-lite:3.0.1androidTestImplementation ''androidx.test.espresso:espresso-contrib:3.4.0'' 依赖引起的,我可以使用此排除项进行修复

androidTestImplementation (androidx.test.espresso:espresso-contrib:3.4.0''){
    exclude module: "protobuf-lite"
}

它可以满足我的需求(我只将这个库用于 DrawerActions),但是它不是很优雅的解决方案。

考虑到您发布的日期,这可能是由其他原因引起的(因为提到的库在几天前已更新),除非您使用的是 alpha 版本。

我建议在您的 gradle 文件中检查最近更新的依赖项。您还可以比较该依赖项更改前后 ./gradlew :app:dependencies | grep protobuf 的输出差异,然后检查完​​整的依赖项树以找出原因。

,

使用ktx时完成@Almighty的回答:

api/implementation/testImplementation(''androidx.test.espresso:espresso-contrib:3.4.0'') {
        exclude(module = "protobuf-lite")
    }

android – NoClassDefFoundError:com.google.firebase.FirebaseOptions

android – NoClassDefFoundError:com.google.firebase.FirebaseOptions

我继续得到我正在使用的其他测试设备(4.4.2)上的NoClassDefFoundError.但在我的测试设备( Android 5.1)上工作正常.

我尝试了我已经搜索的解决方案,没有什么似乎有效.

我正在使用Firebase实时数据库.有人可以帮忙吗?

这是错误日志:

06-03 01:36:29.607 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaSEOptions',referenced from method com.google.firebase.FirebaseApp.<init> 06-03 01:36:29.617 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApp$zzb',referenced from method com.google.firebase.FirebaseApp.zzaJ 06-03 01:36:29.621 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApiNotAvailableException',referenced from method com.google.firebase.FirebaseApp.getToken 06-03 01:36:29.629 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApp$zza',referenced from method com.google.firebase.FirebaseApp.zza 06-03 01:36:29.639 2655-2655/mobapps.mypersonal.biz.grouptracker E/AndroidRuntime: FATAL EXCEPTION: main
    Process: mobapps.mypersonal.biz.grouptracker,PID: 2655
    java.lang.NoClassDefFoundError: com.google.firebase.FirebaSEOptions
        at com.google.firebase.FirebaseApp.zzbu(UnkNown Source)
        at com.google.firebase.provider.FirebaseInitProvider.onCreate(UnkNown Source)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1656)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:1627)
        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(UnkNown Source)
        at android.app.ActivityThread.installProvider(ActivityThread.java:5079)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:4653)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4593)
        at android.app.ActivityThread.access$1500(ActivityThread.java:151)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1402)
        at android.os.Handler.dispatchMessage(Handler.java:110)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:5363)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
        at dalvik.system.NativeStart.main(Native Method)

解决方法

这是什么解决了我的问题:

>将编译’com.android.support:multidex:1.0.1’添加到
应用程序/的build.gradle.
>将android:name =“android.support.multidex.MultiDexApplication”添加到AndroidManifest.xml中的应用程序标签.

如果您使用自定义应用程序类,请跳过AndroidManifest.xml,并使您的Application类扩展MultiDexApplication而不是应用程序.

android – 使用Firebase和Google Cloud Messaging推送通知

android – 使用Firebase和Google Cloud Messaging推送通知

我想使用Google Cloud Messaging在我的应用( Android)中发送推送通知.我正在使用firebase作为后端.由于firebase不支持内置推送通知,因此我使用的是Google App Engine.

我对Google App Engine一无所知.现在我使用谷歌提供的模板发送推送通知.
Google Cloud Messaging Template Github

直到现在我已经在Google App Engine中部署了我的应用程序,并且我能够向所有已注册的设备发送推送通知(来自Web)我使用GCM模板时获得的HTML页面.

我想要做的是,收听Firebase数据更改并向不在线或已关闭应用程序的用户发送推送通知.

我如何在后台运行servlet,以便它在后台运行并向非在线/连接的用户发送推送.

因为我在Google App Engine中只有推送通知逻辑我应该使用servlet还是struts.

提前致谢

解决方法

据我所知,Firebase在GAE方面确实效果不佳,因此您可能需要重新考虑您的选择.

正如您所提到的,侦听数据更改需要您的应用程序保持后台线程运行.要在GAE上执行此操作,您必须禁用自动缩放,这是GAE的一个重要功能.

您可以使用手动缩放创建单独的后端GAE模块,然后使用它.一个队列,用于通知您的主要GAE模块数据更改,但在我看来这是不必要的复杂和低效.

希望Firebase能够改进他们的产品,以便能够以更有效和灵活的方式通知数据变化,但在平均时间内,您可能应该使用常规计算引擎实例.

今天关于为什么在通过 Firebase 中的 Express 应用程序从 Google Cloud Storage 提供 PDF 时下载在 Chrome 中挂起?的讲解已经结束,谢谢您的阅读,如果想了解更多关于android Firebase Cloud Messages通知图标、Android Firebase 库,仪器化测试 - 无静态方法 registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite、android – NoClassDefFoundError:com.google.firebase.FirebaseOptions、android – 使用Firebase和Google Cloud Messaging推送通知的相关知识,请在本站搜索。

本文标签: