إدارة الجلسة باستخدام Xamarin.Forms (Android)
-
21-12-2019 - |
سؤال
أولاً، لست متأكدًا مما إذا كنت سأقوم بذلك بأفضل طريقة من حيث التصميم، لكنني جديد قليلًا على Android وجديد جدًا على Xamarin.Forms.الإعداد الخاص بي عبارة عن سلسلة من ContentPage
الموجودة في Xamarin.Forms PCL التي تتعامل جميعها مع المعلومات من خدمة REST.تمنح هذه الخدمة، عند تسجيل الدخول، أ WorkToken
أن يتمسك التطبيق بعد ذلك من أجل إجراء المزيد من العمليات.أنا أقوم بتخزين هذا في ISessionManager
.
مشكلتي هي مشكلة سير العمل.انا املك LoginPage
الذي أريد تقديمه للمستخدم إذا انتهت جلسته/تعطلت/أيًا كان؛في الأساس، إذا لم يقوموا بتسجيل الدخول وحاولوا القيام بأي شيء، فأنا أرغب في دفع هذه الصفحة إلى المكدس وإجبارهم على محاولة تسجيل الدخول، وإذا قدموا بيانات اعتماد صالحة، اسمح لهم بالمتابعة من حيث توقفوا.كل هذا يحدث، في معظمه، في PCL، لكنني قمت بإنشاء تطبيق Android لـ ISessionManager
التي يتم الاستعلام عنها على كل ContentPage
تم تجاوزه OnAppearing
طريقة.كل صفحة تدعو ISessionManager
'س CheckLogin
والذي سيفعل ذلك بالضبط، وإذا لم يتم تسجيل الدخول، فسيتم إنشاء ملف Intent
وابدأ LoginActivity
من خلال ذلك. LoginActivity
في الأساس يلتف حول PCL LoginPage
.
المشكلة التي أواجهها هي أنه عند القيام بذلك بهذه الطريقة، فإن LoginActivity
يتم تشغيله بشكل غير متزامن أعلى أي صفحة يطلق عليها اسم.ومع ذلك، فإن صفحة الاتصال هذه في حالة تعطل، لأنه لم تتم تهيئتها بشكل صحيح من خلال خدمة REST حتى الآن.أتصور أن هناك حلين ممكنين.إما تشغيل Intent
بشكل متزامن (وهو ما لا أعتقد أنه ممكن) أو إعادة التفكير في تصميمي.هنا Intent
يثبت:
var intent = new Intent(_context, typeof(LoginActivity));
intent.AddFlags(ActivityFlags.NewTask);
_context.StartActivity(intent);
لقد قمت بمراجعة العديد من منتديات Xamarin بحثًا عن منشورات ذات صلة بهذا الشأن، لكن لم أجد الكثير خارج نطاق سير عمل التنقل الأساسي في Xamarin.Forms.
يحرر:لقد وجدت شيئًا مشابهًا لما أحاول القيام به هنا: كيفية تمرير المتغيرات من غرض جديد إلى الفئة التي أنشأته في Android, ، ولكن في سياق Xamarin.Forms.ال startActivityForResult
سوف تحل مشكلتي إذا كانت موجودة في Forms.Context
, ، ولكن لا يبدو أن هناك ما يعادلها.
المحلول
لماذا تقوم بإنشاء نشاط تسجيل الدخول؟هل لأنك تحتاج إلى استخدام شيء أصلي من android؟
فكرتي الأولى هي أنه بعد التحقق من حالة الرمز المميز في OnAppearing، يمكنك أن تقرر دفع النموذج لصفحة تسجيل الدخول أو عدمه، وبعد الانتهاء من تسجيل دخول المستخدم وحفظ الرمز المميز، يمكنك فتح النموذج وهو سوف تظهر الصفحة السابقة كان المستخدم.