جوجل الزجاج مرآة API - هل هناك طريقة لحذف حزمة من البطاقات ؟

StackOverflow https://stackoverflow.com//questions/20035411

  •  21-12-2019
  •  | 
  •  

سؤال

أنا إرسال حزمة من بطاقات الزجاج مع مرآة API (c# مكتبة)

وأنا أعلم أنه يمكنك استخدام الافتراضي حذف عنصر القائمة على البطاقات واحدة ، ولكن هل هناك طريقة لتوفير الوظيفة حذف كامل حزمة ، من الناحية المثالية نتيجة عمل واحد من قبل المستخدمين ؟

ولقد استخدمت بنجاح حذف العمل على عنصر القائمة مع رمز أدناه

MenuItem mi = new MenuItem();
mi.Action = "DELETE";

TimelineItem tli = new TimelineItem()
{
    Html = itemHtml.ToString(),
    Notification = new NotificationConfig() { Level = "DEFAULT" },
    MenuItems = new List<MenuItem>() { mi }
};

هل هناك طريقة لإضافة هذا حذف عنصر القائمة إلى حزمة غطاء ؟ أعرف أن هذا قد يكون صعب لأن النقر على حزمة تغطية يسبب لك التنقل إلى الطفل بطاقات وبالتالي لا القائمة موجودة على البطاقات واحدة.أنا أبحث عن شيء (التي حاولت ولكن هو فقط تجاهل عنصر القائمة) مثل هذا:

MenuItem mi = new MenuItem();
mi.Action = "DELETE";

TimelineItem tli = new TimelineItem()
{
    Html = itemHtml.ToString(),
    Notification = new NotificationConfig() { Level = "DEFAULT" },
    IsBundleCover = true,
    BundleId = bundleId,
    MenuItems = new List<MenuItem>() { mi }
};

إذا لم يكن ممكنا على غطاء بطاقة, هل هناك طريقة للقيام بذلك عن حزمة من خلال إضافة أو حذف عناصر القائمة إلى الطفل البطاقات ؟

أي اقتراحات سيكون موضع تقدير

هل كانت مفيدة؟

المحلول

يمكنك استخدام قائمة مخصصة للقيام بذلك.الكود أدناه يستخدم Java ولكن يجب أن يكون C # مشابه:

  1. أضف عنصر قائمة مخصص للبطاقة:

    giveacodicetagpre
  2. حدد وحدة التحكم التي تعالج طلب رد الاتصال إشعار خادم المرآة:

    giveacodicetagpre
  3. وظيفة بطاقة الحذف:

    giveacodicetagpre
  4. أخيرا، لا تنس الاشتراك في إشعار الجدول الزمني عند بدء تشغيل التطبيق:

    giveacodicetagpre

نصائح أخرى

ليس من الواضح إذا كنت تسأل عن كيفية إنشاء عناصر القائمة لحذف حزمة كاملة مرة واحدة ، أو إذا كنت تبحث عن رمز القيام الفعلي حذف.

يوان يقدم بعض الأجوبة على حد سواء (ليس أقلها لأنه يوفر في الواقع رمز ، والتي لن) ، ولكن هناك ثلاثة أشياء كنت قد ترغب أيضا في النظر في.

1) لا يمكن أن يكون لديك قائمة على حزمة تغطية, ولكن إذا كنت لا صراحة تحديد حزمة الغطاء ، ثم أحدث بطاقة سيظهر كما الغطاء و كما سيتم كما هو مبين في البطاقة الأولى في حزمة.سوف تكون قادرة على الحصول على قائمة بهذه الطريقة.(الرسائل الافتراضي التطبيق يعمل بهذه الطريقة ، على سبيل المثال ، ولكن البطاقة الأولى له نفس القائمة كما بقية.)

2) لا تحتاج إلى إنشاء عنصر قائمة جديد.يمكنك الاستفادة من حذف عنصر القائمة ، إذا كنت ترغب في ذلك.سوف تحصل على حذف إعلام واحدة من البطاقات في حزمة ثم يمكنك قراءة bundleId وحذف الباقي.

3) لا تحتاج إلى حلقة من خلال كل بطاقات قمت بإدراج فقط إلى العثور على تلك التي يجب أن bundleId.هذا هو فظيعة غير فعالة.أنا لا أجيد C#, ولكن من قراءة الوثائق في https://developers.google.com/resources/api-libraries/documentation/mirror/v1/csharp/latest/classGoogle_1_1Apis_1_1Mirror_1_1v1_1_1TimelineResource_1_1ListRequest.html, أشعر أنه يمكنك إنشاء ListRequest ثم تعيين bundleId قبل تنفيذ الاستعلام والحصول على النتائج.

لذلك أعتقد يمكنك تغيير يوان رمز إلى شيء من هذا القبيل:

Mirror.Timeline.List list = timelineItems.list();
list.BundleId = bundleId;
List<TimelineItem> timelineItemList = null;
do {
    TimelineListResponse response = list.execute();
    timelineItemList = response.getItems();
    if (timelineItemList != null && timelineItemList.size() > 0) {
        for (TimelineItem item : timelineItemList) {
            LOG.info("Deleting card " + item.getId());
            MirrorClient.deleteTimelineItem(credential, item.getId());
        }
        list.setPageToken(response.getNextPageToken());
    } else {
        break;
    }
} while (list.getPageToken() != null && list.getPageToken().length() > 0);

(هذا ينبغي أن يعامل الزائفة رمز في أحسن الأحوال)

إذا كنت واثقا من كيفية العديد من البنود كنت قد وضعت في حزمة ، قد تكون أيضا قادرة على مجرد مجموعة list.MaxResults وليس من الضروري أن تكرار عبر صفحات النتائج.لذلك ربما شيء أكثر مثل

Mirror.Timeline.List list = timelineItems.list();
list.BundleId = bundleId;
list.MaxResults = 20;  // Set to more than the max number of items in a bundle
TimelineListResponse response = list.execute();
List<TimelineItem> timelineItemList = response.getItems();
if (timelineItemList != null && timelineItemList.size() > 0) {
    for (TimelineItem item : timelineItemList) {
        LOG.info("Deleting card " + item.getId());
        MirrorClient.deleteTimelineItem(credential, item.getId());
    }
}

لا يبدو أن هناك طريقة لحذف حزمة في خطوة واحدة ولكن لا يزال من الممكن ... يمكنك القيام بالدخول / الجدول الزمني للحصول على قائمة بالعناصر دفع تطبيقك إلى Timeline المستخدمين.تصفية ذلك للعثور على الإدخالات مع Bundoid الذي تريد حذفه.لكل من هذه العناصر، اتصل بحذف / جدول زمني / {ItemID}

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top