标签: gcm-network-manager

GcmNetworkManager调度问题

我在我的应用程序中使用GcmNetworkManager进行定期和任务任务执行之一.我收到这两个错误,无法弄清楚原因.实施是正确的,因为我无法在登台时重现这些问题.

Fatal Exception: java.lang.RuntimeException: Package manager has died
   at android.app.ApplicationPackageManager.queryIntentServicesAsUser(ApplicationPackageManager.java:700)
   at android.app.ApplicationPackageManager.queryIntentServices(ApplicationPackageManager.java:706)
   at com.google.android.gms.gcm.GcmNetworkManager.zzdi(Unknown Source)
   at com.google.android.gms.gcm.GcmNetworkManager.schedule(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

&

Caused by java.lang.IllegalArgumentException: There is no GcmTaskService component registered within this package. Have you extended GcmTaskService correctly?
   at com.google.android.gms.common.internal.zzx.zzb(Unknown Source)
   at com.google.android.gms.gcm.GcmNetworkManager.zzdi(Unknown Source)
   at com.google.android.gms.gcm.GcmNetworkManager.schedule(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

谢谢

PS:设备具有8.1+的播放服务.

android scheduling job-scheduling periodic-task gcm-network-manager

13
推荐指数
1
解决办法
1874
查看次数

重新启动后GCMNetworkManager未运行PeriodicTask

如果应用程序在前台,后台运行或被杀死,该应用程序会显示预期的行为.但是,一旦重新启动,PeriodicTask停止运行

以下是相关的代码:

AndroidManifest:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<service android:name=".tracking.MyTaskService"
            android:exported="true"
            android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE">
            <intent-filter>
                <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
            </intent-filter>
        </service>
Run Code Online (Sandbox Code Playgroud)

PeriodicTask配置:

PeriodicTask task = new PeriodicTask.Builder()
                .setService(MyTaskService.class)
                .setTag(TASK_TAG_PERIODIC)
                .setPeriod(30L)
                .setFlex(10L)
                .setExtras(bundle)
                .setPersisted(true)
                .build();

        mGcmNetworkManager.schedule(task);
Run Code Online (Sandbox Code Playgroud)

在Logcat中,我得到以下内容:

E/NetworkScheduler.TED: Couldn't start service: Intent 
{ act=com.google.android.gms.gcm.ACTION_TASK_READY
  cmp=xxx.xxxxxx.xxx/.tracking.MyTaskService (has extras) 
}
Run Code Online (Sandbox Code Playgroud)

附加所有相关细节:

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.example.gcmnetworkmanagerquickstart">

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- [START manifest_service] -->
        <service
            android:name=".MyTaskService"
            android:exported="true"
            android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"> …
Run Code Online (Sandbox Code Playgroud)

android google-cloud-messaging periodic-task gcm-network-manager

12
推荐指数
1
解决办法
1176
查看次数

Android系统.Firebase SDK上的GcmNetworkManager?

在Google I/O 2016上宣布Firebase之后,我已经阅读了有关我的代码,GCM到FCM,Google Analytics相关更改等的一些更改的迁移...但我没有找到任何有关GcmNetworkManager的信息,会发生什么它?

我们有一个新的任务计划程序?

还是旧的吗?

提前致谢.

android firebase gcm-network-manager firebase-cloud-messaging

10
推荐指数
1
解决办法
2224
查看次数

GCM Network Manager失去了工作

我正在尝试使用GCM网络管理器将日志发送到后端服务.我们每隔一小时运行一次警报,创建一个OneoffTask,在执行时,将使用日志消息调用后端服务.

这很有效,但是大量的任务都丢失了(超过一半).起初,我认为它与我们的后端或网络有关,但是在添加了大量的文件记录之后,事实证明服务中的onRunTask从未被触发用于这些任务(但它们肯定会被安排.为什么这些丢失了吗?我误解了API,还是OneoffTasks根本不可靠?

这就是OneoffTask的安排方式:

GcmNetworkManager.getInstance(context).schedule(new OneoffTask.Builder()
    .setService(AvroLogService.class)
    .setExtras(bundle)

    // A mandatory tag which identifies the task
    // We add a unique hash to the tag to make sure that
    // tasks are logged and not thrown away as dupes.
    // See: http://stackoverflow.com/q/34528960/304262
    .setTag(java.util.UUID.randomUUID().toString())

    // Persist to disk, even across boots:
    .setPersisted(true)

    // Sets a time frame for the execution of this task in seconds.
    // This specifically means that the task can either be
    // executed right now, or at latest …
Run Code Online (Sandbox Code Playgroud)

android android-service google-cloud-messaging gcm-network-manager gcmtaskservice

7
推荐指数
1
解决办法
412
查看次数

GcmNetworkManager OneoffTask ExecutionWindow需要吗?

GcmNetworkManager当用户恢复互联网连接时,我开始实现触发同步

在查看OneoffTask的文档时,它说setExecutionWindow是必需的

用于创建一次性任务的强制设置器

不过,我只希望当用户有上网本执行这听起来像用户有互联网,但在窗口之前,可以执行windowStartDelaySecondswindowEndDelaySeconds.

那么这是否意味着网络管理员可以在某个时间之前执行任务,windowEndDelaySeconds或者这意味着一旦互联网恢复它将在那个时间执行?

android google-cloud-messaging gcm-network-manager

5
推荐指数
1
解决办法
312
查看次数

如何查询GcmNetworkManager以查看我的任务是否已安排?

我已经安排了一个定期运行的任务GcmNetworkManager,但我不希望它被持久化,因为我不想添加android.Manifest.permission.RECEIVE_BOOT_COMPLETED我的应用程序所需的权限列表.所以,我目前正在安排onCreate()我的主要活动中的任务.我想知道,有没有办法查询GcmNetworkManager我的任务,如果已经安排,请跳过这个?

android gcm-network-manager

5
推荐指数
1
解决办法
383
查看次数

如何在android中安排一个任务,它将在互联网可用后立即运行,如果失败则重新安排它?

需要调度程序

  • Run task immediately after net is available
  • Reschedule task if it fails because of some problems.
  • should handle cases of broadcast receiver to know if connection available
  • No delay in execution if the internet is already available not like GCMNetworkManager's OneOfTask which take at least 30 seconds to execute the scheduled task

我尝试了GCM网络管理器的OneOfTask处理它,但即使互联网可用,也需要至少30秒才能执行.

是否有任何其他调度程序将所有上述任务合二为一.

java android gcm-network-manager

5
推荐指数
1
解决办法
927
查看次数