小编vin*_*501的帖子

GCM注册两个不同的工作注册ID

我的客户端/服务器上的设备注册管理存在轻微的推送通知问题.

问题

我遇到的问题是当我卸载应用程序并重新安装它时,应用程序返回一个空字符串,用于注册id(GCMRegistrar.getRegistrationId(this)),我用我的服务器重新注册设备.问题是我得到了一个新的,不同的注册ID(有时)和两个工作!所以我不知道服务器端如何知道它是否适用于同一设备.我还应该注意,我没有更改应用程序版本.清单的任何更改是否会触发新的注册ID?

在Android方面,我执行以下操作:

    /**
     * Registers this android device with GCM
     */
    private void registerDeviceWithGCM() {
        GCMRegistrar.checkDevice(this);
        GCMRegistrar.checkManifest(this);
        String regId = GCMRegistrar.getRegistrationId(this);
        if (regId.equals("")) {
            log.debug("Registering application with GCM");
            GCMRegistrar.register(this, ApplicationData.SENDER_ID);
        } else {
            log.debug("Already registered: " + regId);
            deviceRegistrationService.updateServerRegistrationData(this, regId);
        }
    }

我在我GCMIntentService.java做以下事情:

    /**
     * Triggered upon new device registration and updates registration info with the server
     *
     * @param context context received from
     * @param regId   device's registration id
     */
    @Override
    protected void …

notifications android push-notification google-cloud-messaging

8
推荐指数
1
解决办法
6428
查看次数

适当使用ES6生成器和分页

我一直在考虑这个问题,我似乎无法找到一个合理的解决方案来解决这个问题.问题陈述很简单 - 编写一个懒惰地对远程数据集进行分页的生成器.为简化起见,理想情况下,我希望我的库用户可以看到:

for (var user of users()) { 
  console.log(user); 
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法让发电机工作.我认为像这样的逻辑可行,但我无法弄清楚如何实现它.

function* users() {
  while (canPaginate) {
    yield* getNextPageOfUsers() // This will need to return an array of users from an http request
  }
}
Run Code Online (Sandbox Code Playgroud)

我确定我在想这里有什么问题,但是我似乎找不到任何使用像这样的生成器的人的例子(大多数人使用静态数据或人们做类似的东西async(function*(){...})不完全是什么我希望这样做.)这里的重要部分是我希望最终用户能够如上所述使用数据.

-Vince

javascript pagination ecmascript-6 es6-promise

6
推荐指数
1
解决办法
1317
查看次数