Android:我如何缓存使用Fabric SDK进行离线模式的推文?

时间:2016-01-18 10:03:53

标签: android twitter-fabric

我开始使用Fabric SDK,当用户离线并且在用户看过列表之后没有网络连接时,我一直在尝试将推文缓存到Android设备鸣叫。

我使用client.getSearchService()。tweets(....)方法来检索我的推文,并且我将响应作为com.twitter.sdk.android.core.models.Tweet对象的列表获得,就像在Retrofit中一样

我试图将这些推文写入我的内部存储文件,但由于推文模型不可序列化,因此我无法存储它。有没有办法可以从Fabric SDK获得JSON响应?我正在iOS Fabric SDK上寻找类似于client.URLRequestWithMethod(...)的服务。

非常感谢任何帮助。提前谢谢。

2 个答案:

答案 0 :(得分:1)

我最终解决了这个问题,使用自定义服务和客户端进行搜索以获取JSON响应,而不是使用改造的映射。

例如,对于搜索服务,

interface CustomSearchService {
    @GET("/1.1/search/tweets.json")
    void tweets(@Query("q") String var1, @EncodedQuery("geocode") Geocode var2, @Query("lang") String var3, @Query("locale") String var4, @Query("result_type") String var5, @Query("count") Integer var6, @Query("until") String var7, @Query("since_id") Long var8, @Query("max_id") Long var9, @Query("include_entities") Boolean var10, Callback<Response> var11);
}

static class SearchApiClient extends TwitterApiClient {

    public SearchApiClient(Session session) {
        super(session);
    }

    public CustomSearchService getCustomSearchService() {
        return getService(CustomSearchService.class);
    }
}

通过

获取数据
apiClient.getCustomSearchService().tweets(searchParam.toString(), null, null, null, null, TWEET_COUNT, null,null, null, true,
        new Callback<Response>() {

 @Override
 public void success(Result<Response> result) {

       //DO SOMETHING WITH THE JSON RESPONSE HERE
       // InputStream stream = result.data.getBody().in(); //<-- This contains the data

   }
}

答案 1 :(得分:0)

Twitter支持自定义OkHttp客户端,请查看他们的示例应用程序:

https://github.com/twitter/twitter-kit-android/blob/master/samples/app/src/main/java/com/example/app/SampleApplication.java

我附上了相关代码段:

int printCompanyInfo() {  // this will print out the format for as long as I need it.
    char discount[30];
    char tax[30];
    if (discountTypeLookup == 0) {
        strcpy_s(discount, 30, "Not Applicable");
    }
    else if (discountTypeLookup == 1) {
        strcpy_s(discount, 30, "before Tax");
    }
    else if (discountTypeLookup == 2) {
        strcpy_s(discount, 30, "After Tax");
    }
    else if (discountTypeLookup == 3) {
        strcpy_s(discount, 30, "Before Tax > 14,500");
    }
    if (payTaxLookup == 0) {
        strcpy_s(tax, 30, "No");
    }
    else if (payTaxLookup == 1) {
        strcpy_s(tax, 30, "Yes");
    }
    printf_s("%s %s %f %s %s %s\n", companyId, companyNameLookup, discountRateLookup, discount, tax, pickUpBayLookup);
    return(0);
}