GCM মেসেজ কখনও কখনও টিকল হতে পারে, ফ্রেশ ডাটার জন্য সার্ভারের সাথে যোগাযোগ করতে মোবাইল অ্যাপলিকেশনকে বলা। GCM এ এই পরিস্থিতির জন্য বন্ধ হতে সক্ষম মেসেজে তৈরী করা সম্ভব, যার মধ্যে পূরাতনের স্থানে নতুন মেসেজ প্রতিস্থাপিত হয়। এখানে একটি খেলার স্কোরের উদাহরণ দেয়া হলো। যদি আপনি আপডেট স্কোর সহকারে একটি নির্দিষ্ট খেলা অনুসারে সকল ইউজারকে একটি মেসেজ পাঠান, এবং ১৫ মনিট পরে স্কোরের আপডেট মেসেজ যায়, প্রথম মেসেজটির আর গুরুত্ব থাকবে না। যে কোন ইউজারের জন্য যে এখনও প্রথম মেসেজটি গ্রহণ করে নাই, তাকে দুইটা মেসেজই না পাঠানোর কোন কারন নেই এবং ডিভাইসকে দুইবার প্রতিক্রিয়া করতে (এবং ইউজারকে সম্ভাব্য সতর্ক করা) বাধ্য করা যখন মেসেজের মাত্র একটিই তখনও গুরুত্বপূর্ন।
যখন আপনি একটি বন্ধ কি নির্ধারণ করবেন, যখন একই ইউজারের জন্য GCM সার্ভারের মধ্যে মাল্টিপল মেসেজকে সারিবদ্ধ করে, শুধুমাত্র শেষেরটা সাথে যে কোন প্রদত্ত কলাপস কি ডেলিভারি করা হয় । খেলার স্কোরের মতো অবস্থার জন্য, এটা ডিভাইসকে অপ্রয়োজনীয় কাজ করা এবং সম্ভাব্য ওভার নোটিফাই করা থেকে রক্ষা করে। এই অবস্থায় ঐটা একটি সার্ভার সিঙ্ককে সম্পৃক্ত করে (মেইল চেক করার মতো), এটা ডিভাইসকে করতে হবে এমন সিঙ্কের সংখ্যা কমিয়ে আনতে পারে। উদাহরণ হিসাবে, যদি সার্ভারে ১০টি ইমেইল অপেক্ষা করে থাকে এবং দশটি ”নতুন ইমেইল” GCM টিকলস পাঠানো হয়ে থাকে, এটার একটাই প্রয়োজন, যেহেতু এটা একবার সিঙ্ক করে।
এই বৈশিষ্ট্য ব্যবহার করার জন্য, আপনার বহিরাগমন মেসেজে একটি কলাপস কি যুক্ত করুন। আপনি যদি GCM হেল্পার লাইব্রেরী ব্যবহার করতে থাকেন, মেসেজ ক্লাসের collapseKey(String key) পদ্ধতি ব্যবহার করুন।
Message message = new Message.Builder(regId)
.collapseKey("game4_scores") // The key for game 4.
.ttl(600) // Time in seconds to keep message queued if device offline.
.delayWhileIdle(true) // Wait for device to become active before sending.
.addPayload("key1", "value1")
.addPayload("key2", "value2")
.build();
যদি হেল্পার লাইব্রেরী ব্যবহার না করে থাকেন, শুধু আপনি তৈরী করছেন এমন POST হেডারে একটি ভেরিয়েবল যুক্ত করুন, সাথে ফিল্ডনেম হিসাবে collapse_key , এবং ভ্যালু হিসাবে ওই আপডেটের সেট জন্য ব্যবহার করা স্ট্রিং ।