Skip Ribbon Commands
Skip to main content

​​​​​​​​​

ক্যুইকস্টার্ট: আবহাওয়া টাইল এবং টোস্ট বিজ্ঞপ্তি পাঠানো



Windows 10 এর বার্ষিকী আপডেটে আমরা লাইভ টাইলের মতো ভিজ্যুয়াল ভাবেই টোস্ট বিজ্ঞপ্তি নিয়ে এসেছি। এই ক্যুইকস্টার্টে, পূর্বাভাস দেখিয়ে একটি টোস্ট বিজ্ঞপ্তি পাঠাতে আপনার টাইল বিজ্ঞপ্তির 5 দিনের আবহাওয়া পূর্বাভাস আবার ব্যবহারের পদ্ধতি আমরা দেখাব।

ওয়াইড লাইভ টাইল
 

টোস্ট বিজ্ঞপ্তি

1. NotificationsExtensions NuGet প্যাকেজ ইনস্টল

কোড মারফত বিজ্ঞপ্তিগুলি তৈরি করতে, আমরা NotificationsExtensions ব্যবহারের কথা জোর দিয়ে বলছি, এটি বিজ্ঞপ্তি XML কনটেন্টের জন্য একটি অবজেক্ট মডেল সরবরাহ করে। আপনি ম্যানুয়ালি বিজ্ঞপ্তি XML গঠন করতে পারবেন তবে তাতে ভুল হওয়ার সম্ভাবনা থাকে। Microsoft এ বিজ্ঞপ্তির মালিক দল নিজেই NotificationsExtensions বানিয়েছে এবং তারাই তার দেখাশোনা করে।

NuGet থেকে NotificationsExtensions.Win10 ইনস্টল করুন  (আপনি 14332.0.0 বা তার উপরের সংস্করণ বেছে নিতে ভুলবেন না যেন)।

2. namespace declarations যোগ করা

Windows.UI.Notifications এর মধ্যে টাইল এবং টোস্ট API রয়েছে।

C# with NotificationsExtensions

 

using NotificationsExtensions;

using NotificationsExtensions.Tiles;

using NotificationsExtensions.Toasts;

3. Live Tile তৈরি করার পদ্ধতি

আমরা প্রথমে Live Tile কীভাবে তৈরি হয়েছে তা বলব, কারণ একই ধরনের Adaptive কনটেন্ট টোস্ট বিজ্ঞপ্তিতে ব্যবহার করা হয়। আপনি Adaptive Notifications বিষয়ে ততটা পরিচিত না হলে, স্টোর থেকে Notifications Visualizer ইনস্টল করুন, এটি আপনাকে Adaptive কনটেন্ট সম্পাদনা করতে দেবে এবং তাৎক্ষণিক ভিজ্যুয়াল প্রিভিউ দেখতে পারবেন।

টাইল বিজ্ঞপ্তি সাব-গ্রুপে ভাগ করা

আমরা যে Tile Notification তৈরি করতে চাই তাতে আসলে মাত্র 5টি সাব-গ্রুপ আছে। প্রত্যেক দিনের পূর্বাভাসের জন্য একটি করে। নীচের ছবিতে, দ্বিতীয় সাব-গ্রুপটিকে লাল রঙে হাইলাইট করা হয়েছে। আমরা এই সাব-গ্রুপগুলি প্রস্তুত করার একটি পদ্ধতি তৈরি করতে পারব, যাতে কিনা আমাদের শুধুমাত্র একবারই সাব-গ্রুপ কোড লিখতে হয়।​


C# with NotificationsExtensions

 

private AdaptiveSubgroup GenerateSubgroup(string day, string img, int tempHi, int tempLo)

{

    return new AdaptiveSubgroup()

    {

        HintWeight = 1,

 

        Children =

        {

            // Day

            new AdaptiveText()

            {

                Text = day,

                HintAlign = AdaptiveTextAlign.Center

            },

 

            // Image

            new AdaptiveImage()

            {

                Source = img,

                HintRemoveMargin = true

            },

 

            // High temp

            new AdaptiveText()

            {

                Text = tempHi + "°",

                HintAlign = AdaptiveTextAlign.Center

            },

 

            // Low temp

            new AdaptiveText()

            {

                Text = tempLo + "°",

                HintAlign = AdaptiveTextAlign.Center,

                HintStyle = AdaptiveTextStyle.CaptionSubtle

            }

        }

    };

}

Wide Tile এর জন্য কনটেন্ট প্রস্তুত করা

এখন, উপর থেকে সাবগ্রুপগুলি ব্যবহার করে আমাদের Wide Tile এর জন্য প্রকৃত কনটেন্ট বানাতে হবে। আমরা এটিকে আলাদা পদ্ধতিতে ভাগ করে নিচ্ছি, কারণ Small Tile কনটেন্ট এবং Wide এবং Large বানাতেও আমাদের পদ্ধতির প্রয়োজন হবে (এই পদ্ধতিগুলির কথা এই ক্যুইকস্টার্টে দেওয়া হয়নি তবে তলায় Resources এ সম্পূর্ণ কোড নমুনা রাখা আছে)।



C# with NotificationsExtensions

 

private TileBinding GenerateTileBindingWide()

{

    return new TileBinding()

    {

        Content = new TileBindingContentAdaptive()

        {

            Children =

            {

                new AdaptiveGroup()

                {

                    Children =

                    {

                        GenerateSubgroup("Mon", "Mostly Cloudy.png", 63, 42),

                        GenerateSubgroup("Tue", "Cloudy.png", 57, 38),

                        GenerateSubgroup("Wed", "Sunny.png", 59, 43),

                        GenerateSubgroup("Thu", "Sunny.png", 62, 42),

                        GenerateSubgroup("Fri", "Sunny.png", 71, 66)

                    }

                }

            }

        }

    };

}​​

Tile Notification কনটেন্ট প্রস্তুত করা

সবশেষে, আমরা সমগ্র Tile Notification এর কনটেন্ট তৈরি করছি, তাতে বিভিন্ন আকারের টাইলের উপযুক্ত কনটেন্ট থাকবে। আমরা আগেই বলেছি যে, Small, Medium এবং Large এর পদ্ধতিগুলি এই ক্যুইকস্টার্টে উল্লেখ করা হয়নি তবে Resources বিভাগে সম্পূর্ণ কোড নমুনা রাখা আছে।

C# with NotificationsExtensions

public TileContent GenerateTileContent()

{

    return new TileContent()

    {

        Visual = new TileVisual()

        {

            TileSmall = GenerateTileBindingSmall(),

            TileMedium = GenerateTileBindingMedium(),

            TileWide = GenerateTileBindingWide(),

            TileLarge = GenerateTileBindingLarge(),

 

            // Set the base URI for the images, so we don't redundantly specify the entire path

            BaseUri = new Uri("Assets/NotificationAssets/", UriKind.Relative)

        }

    };

}

Tile Notification পাঠানো

Tile Notification পাঠানোর পদ্ধতির বিষয়ে জানতে, অনুগ্রহ করে দেখুন Quickstart: Sending a local tile notification

4. Toast Notification বানানোর পদ্ধতি

এখন আমাদের Live Tile Notification রয়েছে তাই আসুন Toast Notification তৈরি করতে তাদের কিছু ব্যবহার করা যাক!


Toast Notification কনটেন্ট বানানো

টোস্টগুলির শুরুতে অবশ্যই একটি টেক্সট এলিমেন্ট রাখতে হবে, তাই আমরা প্রথমে আজকের আবহাওয়া বর্ণনা করে একটি টেক্সট স্ট্রিং যোগ করি। Adaptive Toasts সমর্থিত হলে (কোড নীচে দেখুন), আমাদের Live Tile এর জন্যও আমাদের ব্যবহৃত পাঁচটি সাবগ্রুপের একটি গ্রুপ যোগ করি। অন্যথায়, Adaptive Toast সাপোর্ট করে না এমন সিস্টেমগুলির জন্য আমরা মাত্র আরো দুইটি টেক্সট এলিমেন্ট যোগ করি (খেয়াল রাখুন যে ওই সিস্টেমগুলিতে আপনি সর্বাধিক তিনটি টেক্সট এলিমেন্ট রাখতে পারবেন, তাই আমরা মাত্র দুইটি অতিরিক্ত টেক্সট এলিমেন্ট যোগ করেছি)।

C# with NotificationsExtensions

public static ToastContent GenerateToastContent()

{

    // Start by constructing the visual portion of the toast

    ToastBindingGeneric binding = new ToastBindingGeneric();

 

    // We'll always have this summary text on our toast notification

    // (it is required that your toast starts with a text element)

    binding.Children.Add(new AdaptiveText()

    {

        Text = "Today will be mostly sunny with a high of 63 and a low of 42."

    });

 

    // If Adaptive Toast Notifications are supported

    if (IsAdaptiveToastSupported())

    {

        // Use the rich Tile-like visual layout

        binding.Children.Add(new AdaptiveGroup()

        {

            Children =

            {

                GenerateSubgroup("Mon", "Mostly Cloudy.png", 63, 42),

                GenerateSubgroup("Tue", "Cloudy.png", 57, 38),

                GenerateSubgroup("Wed", "Sunny.png", 59, 43),

                GenerateSubgroup("Thu", "Sunny.png", 62, 42),

                GenerateSubgroup("Fri", "Sunny.png", 71, 66)

            }

        });

    }

 

    // Otherwise...

    else

    {

        // We'll just add two simple lines of text

        binding.Children.Add(new AdaptiveText()

        {

            Text = "Monday <img src="https://s.w.org/images/core/emoji/72x72/26c5.png" alt="⛅" draggable="false" class="emoji"> 63° / 42°"

        });

 

        binding.Children.Add(new AdaptiveText()

        {

            Text = "Tuesday <img src="https://s.w.org/images/core/emoji/72x72/2601.png" alt="☁" draggable="false" class="emoji"> 57° / 38°"

        });

    }

 

    // Construct the entire notification

    return new ToastContent()

    {

        Visual = new ToastVisual()

        {

            // Use our binding from above

            BindingGeneric = binding,

 

            // Set the base URI for the images, so we don't redundantly specify the entire path

            BaseUri = new Uri("Assets/NotificationAssets/", UriKind.Relative)

        },

 

        // Include launch string so we know what to open when user clicks toast

        Launch = "action=viewForecast&zip=98008"

    };

}​


Toast Notification পাঠানো

Toast Notification পাঠানোর পদ্ধতির বিষয়ে (এবং বিজ্ঞপ্তিতে ব্যবহারকারীর ক্লিক করা কীভাবে পরিচালনা করবেন তা) জানতে, অনুগ্রহ করে দেখুন Quickstart: Sending a local toast notification and handling activations

Adaptive Toast সাপোর্ট করে কিনা তা পরীক্ষা করা

Windows 10 Desktop এবং Mobile এর 14332 বিল্ডে Adaptive Toasts যোগ করা হয় (Windows 10 এর বার্ষিকী আপডেটের জন্য)। অন্যান্য ডিভাইস ফ্যামিলি Adaptive Toasts সাপোর্ট করে না এবং শুধুমাত্র টেক্সট এলিমেন্ট ও ইমেজ থাকতে পারে। পুরনো সিস্টেমের সাপোর্ট আপনার থাকলে, আপনার কাছে দুটো রাস্তা খোলা আছে: একই পেলোড পাঠান (গ্রুপগুলি পুরনো সিস্টেমে রাখা হবে) বা আপনার কোডটি কাজে লাগান এবং Adaptive Toast সাপোর্ট করে কিনা সেই অনুসারে নির্দিষ্ট বিজ্ঞপ্তি পাঠান। আপনি ভিজ্যুয়াল বিজ্ঞপ্তি পাঠাতে পারবেন কিনা তা জানাতে আমরা এই পদ্ধতিটি ব্যবহার করে থাকি...

C#

using Windows.System.Profile;

 

private static bool IsAdaptiveToastSupported()

{

    switch (AnalyticsInfo.VersionInfo.DeviceFamily)

    {

        // Desktop and Mobile started supporting adaptive toasts in build 14332

        case "Windows.Mobile":

        case "Windows.Desktop":

            return GetOSVersion() > new Version(10, 0, 14332, 0);

 

        // Other device families do not support adaptive toasts

        default:

            return false;

    }

}

 

private static Version GetOSVersion()

{

    // The DeviceFamilyVersion is a string, which is actually a ulong number representing the version

    // https://www.suchan.cz/2015/08/uwp-quick-tip-getting-device-os-and-app-info/

 

    ulong versionAsLong = ulong.Parse(AnalyticsInfo.VersionInfo.DeviceFamilyVersion);

 

    ulong v1 = (versionAsLong & 0xFFFF000000000000L) >> 48;

    ulong v2 = (versionAsLong & 0x0000FFFF00000000L) >> 32;

    ulong v3 = (versionAsLong & 0x00000000FFFF0000L) >> 16;

    ulong v4 = (versionAsLong & 0x000000000000FFFFL);

 

    return new Version((int)v1, (int)v2, (int)v3, (int)v4);

}


ফাইনাল Toast Notification!

Adaptive Toast সাপোর্ট করে এমন সিস্টেমগুলির জন্য, আমাদের কোড ভিজ্যুয়াল বৈশিষ্ট্য সমৃদ্ধ বিজ্ঞপ্তি প্রস্তুত করে। পুরনো সিস্টেমের ক্ষেত্রে, আমাদের কোড ক্ল্যাসিক টেক্সট ভিত্তিক বিজ্ঞপ্তি প্রস্তুত করে।

অ্যাডাপ্টিব টোস্ট

ক্ল্যাসিক টোস্ট


​​​​​​

Read More on...

--> 

​​​​​​​​

This site uses Unicode and Open Type fonts for Indic Languages. Powered by Microsoft SharePoint
©2017 Microsoft Corporation. All rights reserved.