شروع دوره پایتون از پنجشنبه 1 خرداد ، مقدماتی تا پیشرفته، بدون پیش نیاز شروع دوره پایتون از پنجشنبه 1 خرداد ، مقدماتی تا پیشرفته، بدون پیش نیاز
🎯 ثبت نام

ایجاد ShareService

کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.

ایجاد ShareService

برنامه هایی که به کاربرانشان اجازه به اشتراک گذاری داده هایشان در شبکه های اجتماعی را میدهند بسیار با ارزش تر هستند. چون اجازه می دهد چیزهایی را که کاربران فکر میکنند مهم یا مرتبط هستند به اشتراک بگذارند. یک برنامه برای رخدادهایی نظیر 1010 ENEI Session App نمی تواند به راحتی از این ویژگی بگذرد.

هر پلتفرمی پیاده سازی های خاص خودش را برای به اشتراک گذاشتن محتویاتش در شبکه های اجتماعی دارد. یعنی لازم است یک مفهوم انتزاعی از ویژگی به اشتراک گذاری ایجاد کنیم تا بتوانیم از آن در ENEI.SessionsApp استفاده کنیم و سپس در هر پلتفرم باید این مفهوم انتزاعی را پیاده سازی کنیم.

اجازه دهید ببینیم این الگوی انتزاعی چطور ایجاد می شود!

در پروژه ENEI.SessionsApp اینترفیسی به نام IShareService ایجاد میکنیم:

public interface IShareService

{

    void ShareLink(string title, string status, string link);

}

 

سپس باید IShareService را در هر پلتفرم پیاده سازی کنیم:

Windows Phone

[assembly: Dependency(typeof(ShareService))]

namespace ENEI.SessionsApp.WinPhone.Services

{

    public class ShareService : IShareService

    {

        public void ShareLink(string title, string status, string link)

        {

            var task = new ShareLinkTask { Title = title, Message = status, LinkUri = new Uri(link) };

            Device.BeginInvokeOnMainThread(() =>

            {

                try

                {

                    task.Show();

                }

                catch (Exception ex)

                {

                    // todo handle the error     

                }

            });

        }

    }

}

Android 

 

[assembly: Dependency(typeof(ShareService))]

namespace ENEI.SessionsApp.Droid.Services

{

    public class ShareService : IShareService

    {

        public void ShareLink(string title, string status, string link)

        {

            var intent = new Intent(global::Android.Content.Intent.ActionSend);

            intent.PutExtra(global::Android.Content.Intent.ExtraText, string.Format("{0} - {1}", status ?? string.Empty, link ?? string.Empty));

            intent.PutExtra(global::Android.Content.Intent.ExtraSubject, title ?? string.Empty);

            intent.SetType("text/plain");

            intent.SetFlags(ActivityFlags.ClearTop);

            intent.SetFlags(ActivityFlags.NewTask);

            Android.App.Application.Context.StartActivity(intent);

        }

    }

}

 

iOS

[assembly: Dependency(typeof(ShareService))]

namespace ENEI.SessionsApp.iOS.Services

{

    public class ShareService : IShareService

    {

        public void ShareLink(string title, string status, string link)

        {

            var actionSheet = new UIActionSheet("Share on");

            foreach (SLServiceKind service in Enum.GetValues(typeof(SLServiceKind)))

            {

                actionSheet.AddButton(service.ToString());

            }

            actionSheet.Clicked += delegate(object a, UIButtonEventArgs b)

            {

                SLServiceKind serviceKind = (SLServiceKind)Enum.Parse(typeof(SLServiceKind), actionSheet.ButtonTitle(b.ButtonIndex));

                ShareOnService(serviceKind, title, status, link);

            };

            actionSheet.ShowInView(UIApplication.SharedApplication.KeyWindow.RootViewController.View);

        }

 

        private void ShareOnService(SLServiceKind service, string title, string status, string link)

        {

            if (SLComposeViewController.IsAvailable(service))

            {

                var slComposer = SLComposeViewController.FromService(service);

                slComposer.SetInitialText(status);

                slComposer.SetInitialText(title != null ? string.Format("{0} {1}", title, status) : status);

                if (link != null)

                {

                    slComposer.AddUrl(new NSUrl(link));

                }

                slComposer.CompletionHandler += (result) =>

                {

                    UIApplication.SharedApplication.KeyWindow.RootViewController.InvokeOnMainThread(() =>

                    {

                        UIApplication.SharedApplication.KeyWindow.RootViewController.DismissViewController(true, null);

                    });

                };

                UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(slComposer, true, null);

            }

        }

    }

}

 

 

حالا می توانیم ShareService را با استفاده از DependencyService در SessionsView فراخوانی کنیم:

private void ShareGesture_OnTapped(object sender, EventArgs e)

{

    var tappedEventArg = e as TappedEventArgs;

    if (tappedEventArg != null)

    {

        var session = tappedEventArg.Parameter as Session;

        if (session != null)

        {

            var shareService = DependencyService.Get();

            if (shareService != null)

            {

                var status = string.Format("Não percas a sessão {0} de {1}.", session.Name, session.Speaker.Name);

                shareService.ShareLink("ENEI 2015", status, "https://enei.pt/");

            }

        }

    }

}

 

 

DependencyService پیاده سازی مناسب را از IShareService دریافت می کند. چون پیاده سازی در هر پلتفرم به وسیله دستور زیر مشخص شده است:

 [assembly: Dependency(typeof(ShareService)) IShareService] 

حالا 1010 ENEI Sessions App به اشتراک گذاری Session در شبکه های اجتماعی را پشتیبانی خواهد کرد.

 

 

 

1394/10/04 1772 1152
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...