0

我们有一个使用 UrbanAirship 的应用程序设置。UrbanAirship 显示(在 Reports->Statistics 下)我们注册了大约 150 万台设备。

我们想要切换到内部推送通知服务,因此想要从 UAS 导出设备令牌 ID。为此,我使用 UAS 的设备列表 API 来导出设备令牌 ID: http ://docs.urbanairship.com/reference/api/v3/device_information.html#device-token-list-api

我正在使用 UAS 提供的 REST 客户端进行底层 REST 调用。我正在通过设备令牌进行分页以检索所有设备令牌。我的 php 代码仍在运行,到目前为止已经收集了大约 4600 万个令牌。

我使用设备列表 API 是否有任何错误?是否有人成功使用设备列表 API 从 UAS 检索设备令牌?

我将我的代码粘贴到 PHP 中,该代码正在检索和打印令牌。这使用了 UAS 在其文档中提供的 PHP REST 客户端。

public function getTokens() {
    $this->client = new Airship($app_key, $app_secret);
    $airshipDeviceList = $this->client->get_device_tokens();
    //print_r($airshipDeviceList->count());
    //exit;

    $i = 0;
    while(true) {
        $current_page = $airshipDeviceList->_page;
        print_r($current_page);
        exit;

        if(isset($current_page->device_tokens)) {
            $tokens = $current_page->device_tokens;

            foreach($tokens as $token) {
                print_r("\n $i : ");
                print_r($token->device_token);
                $i++;
            }
            $next_page_url = $current_page->next_page;
            $airshipDeviceList->_load_page($next_page_url);
        } else {
            break;
        }

        break;
    }
}
4

1 回答 1

0

我自己想通了。"$current_page" 并没有真正对令牌进行分页。它实际上是在聚合 N+1 个页面(最后所有页面加上当前页面)。结果,我在第一页获得了 n 个令牌,在第二页获得了 2n 个令牌,在第三页获得了 3n 个令牌,依此类推。

我从 UAS 更改了 REST 库并将其修复为仅返回 $current_page 中的当前页面令牌。问题解决了!

于 2013-10-29T08:09:45.000 回答