要订阅Android客户端中的主题,我们应该致电:
<script>
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,listYear',
},
views: {
listMonth: {
titleFormat: 'MMMM'
}
},
defaultView: 'listMonth',
displayEventTime: false, // don't show the time column in list view
// THIS KEY WON'T WORK IN PRODUCTION!!!
// To make your own Google API key, follow the directions here:
// http://fullcalendar.io/docs/google_calendar/
//googleCalendarApiKey: 'AIzaSyDcnW6WejpTOCffshGDDb4neIrXVUA1EAE',
// US Holidays
//events: 'en.usa#holiday@group.v.calendar.google.com',
events: [
<?php if( $events->have_posts() ) :
while ($events->have_posts()) : $events->the_post();
$event_dates = get_post_meta(get_the_id(), 'date', true);
$event_info = get_post_meta(get_the_id(), 'info', true);
//foreach($event_dates as $event_date):
?>
{
title: '<?php the_title(); ?>',
start: '<?php echo date('Y-m-d', strtotime($event_dates["start_date_time"])); ?>',
description: '<?php echo date('ga', strtotime($event_dates["start_date_time"])).', '.$event_info["venue"].', '.$event_info["place"]; ?>'
},
<?php endwhile; ?>
<?php endif; ?>
// more events here
],
eventRender: function(event, element, view) {
return $('<tr><td>' + event.description + '</td></tr>');
},
eventClick: function(event) {
// opens events in a popup window
window.open(event.url, 'gcalevent', 'width=700,height=600');
return false;
},
loading: function(bool) {
$('#loading').toggle(bool);
}
});
});
</script>
我想知道如果此指令执行时互联网连接不可用会发生什么?
当互联网连接可用时,Google服务会自动重试订阅吗?或者开发人员应该处理此案例?
答案 0 :(得分:3)
<强>更新强>:
subscribeToTopic()
现在返回Task<Void>
,因此您可以附加OnCompleteListener()
以检查其是否成功。
<强>更新强>:
根据@ DiegoGiorgini在你之前的帖子中的评论,似乎还有更多订阅ToTopic:
subscribeToTopic
将继续在后台重试,但它与您的应用生命周期(而不是谷歌服务)相关联。因此,如果您的应用程序被终止,它将停止重试,直到应用程序再次打开。 (存储操作,以便在再次启动应用程序时恢复该操作)
我之前尝试过的方式是在给定的时间段之后,我将会杀死该应用并且不会再将其拉出来。
所以我试过检查一下。似乎如果设备在发送订阅请求时处于脱机状态,它将重新尝试一段时间(20-30秒左右?)然后如果仍未连接则将停止。该请求可能已达到超时错误。但由于subscribeToTopic()没有返回值,因此您无法通过客户端应用确定此值。如果您愿意,可以发送Feature Request,与此相关。
然而,截至目前,我认为您可以做的一种方法是在您的客户端应用中设置检查器,如果只有设备在线,您将发送请求。
您也可以通过我的previous post中提及的应用服务器进行检查。