מדריך Windows Phone

מדריך Windows Phone – העברת קבצים ברקע

‏ • Sela

בפרק זה נראה כיצד להוריד קובץ ברקע, גם כאשר האפליקציה כבר לא רצה. לשם כך אנו נעזר בשירות Background File Transfer שמגיע עם גרסת "מנגו" של Windows Phone. נעיר כי שירות זה תומך גם בהורדה של קבצים וגם בהעלאה.

 

הגבלות של מנהל ההורדות

השירות תומך בעבודה ב HTTP ו HTTPS אבל אינו תומך ב FTP. בנוסף הקבצים יורדים לספריה בשם /shared/transfers תחת ה Isolated Storage. ספריה זו נוצרת באופן אוטומטי בעת התקנת האפליקציה שלכם.

בנוסף ישנם הגבלות על גדלי הקבצים המטופלים:

  • גודל קובץ מקסימלי להעלאה: 5MB
  • גודל קובץ מקסימלי להורדה כאשר אנו ברשת סלולרית: 20MB
  • גודל קובץ מקסימלי להורדה כאשר אנו ברשת WIFI אבל ללא מקור חשמל: 100MB

בנוסף ישנם לכל היותר 2 העברות במקביל, ומספר זה משותף לכל האפליקציות במכשיר. כלומר אם אפליקציה אחרת מורידה כעת שני קבצים, ההעברות של האפליקציה שלכם ימתינו עד שיגיע תורם.

 

דוגמא

לשם הדגמה ניצור אפליקציה שמורידה קובץ מסוים בלחיצה על כפתור.

ראשית נוסיף כפתור ל UI של האפליקציה:

  <StackPanel>
    <Button Content="click me"
           Click="Button_Click" />
  </StackPanel
>

 

כעת נטפל בהורדה עצמה.

נוסיף לכותרת הקובץ את השורה הבאה:

using Microsoft.Phone.BackgroundTransfer;

 

כעת נממש את הקוד שמבצע את ההורדה:

private void Button_Click(object sender, RoutedEventArgs e)
{
  try
  {
    Uri sourceUri = new Uri("http://create.msdn.com/assets/cms/images/samples/windowsphonetestfile1.png");
    Uri downloadLocation = new Uri("/shared/transfers/windowsphonetestfile1.png", UriKind.RelativeOrAbsolute);

    var _request = new BackgroundTransferRequest(sourceUri, downloadLocation);
    _request.TransferProgressChanged += _request_TransferProgressChanged;
    _request.TransferStatusChanged += _request_TransferStatusChanged;
    BackgroundTransferService.Add(_request);
  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message, "Download Failed", MessageBoxButton.OK);
  }
}

 

מה שאנו עושים זה יוצרים אובייקט בקשה להורדה מסוג BackgroundTransferRequest שמקבל כפרמטרים את שם קובץ המקור ושם קובץ היעד.

לאחר מכן אנו נרשמים לאירועים TransferProgressChanged ו TransferStatusChanged שמודיעים לנו בכל פעם שמקבלים מידע נוסף. באמצעות אירועים אלו ניתן להציג UI למשתמש שמראה את התקדמות ההורדה.

לבסוף אנו מוסיפים את הבקשה שלנו לתור ע"י שימוש ב BackgroundTransferService.Add.

תגיות: , , , ,

arikp

אריק פוזננסקי הוא יועץ בכיר ומרצה בסלע. הוא השלים שני תארי B.Sc. במתמטיקה ומדעי המחשב בהצטיינות יתרה בטכניון. לאריק ידע נרחב בטכנולוגיות מיקרוסופט, כולל .NET עם C#, WPF, Silverlight, WinForms, Interop, COM/ATL, C++ Win32 ו reverse engineering.

תגובות בפייסבוק