רישוי Google Play הוא שירות מבוסס-רשת שמאפשר לאפליקציה לשלוח שאילתה לשרת רישוי מהימן של Google Play כדי לקבוע אם למשתמש הנוכחי במכשיר יש רישיון לאפליקציה. שירות הרישוי מבוסס על היכולת של שרת הרישוי של Google Play לקבוע אם למשתמש מסוים יש רישיון לשימוש באפליקציה מסוימת. מערכת Google Play מתייחסת למשתמש כבעל רישיון אם הוא רוכש רשום של האפליקציה.
הבקשה מתחילה כשהאפליקציה שולחת בקשה לשירות שמתארח באפליקציית הלקוח של Google Play. לאחר מכן, אפליקציית Google Play שולחת בקשה לשרת הרישוי ומקבלת את התוצאה. אפליקציית Google Play שולחת את התוצאה לאפליקציה שלכם, וכך היא יכולה לאפשר או לאסור שימוש נוסף באפליקציה לפי הצורך.
הערה: אם גרסה של אפליקציה נמצאת במסלולי הפצה לבדיקות סגורות או פתוחות, כל המשתמשים שמוסמכים להוריד ולהתקין את האפליקציה הזו נחשבים למשתמשים מורשים של האפליקציה. למידע נוסף, ראו שימוש במסלולי הפצה לבדיקות כדי לקבל משוב מוקדם וחיוני ממשתמשים.
![](https://developer.android.google.cn/static/images/google/play/licensing/licensing_arch.png?authuser=1&hl=he)
איור 1. האפליקציה מפעילה בדיקת רישיון באמצעות ספריית אימות הרישיון ו-Google Play Client, שמטפל בתקשורת עם שרת Google Play.
הערה: בעבר אפשר היה לבדוק אפליקציה על ידי העלאת גרסת 'טיוטה' שלא פורסמה. הפונקציונליות הזו כבר לא נתמכת. במקום זאת, צריך לפרסם אותה במסלולי בדיקות בקבוצות מוגדרות או במסלולי בדיקות של הקהל הרחב. מידע נוסף זמין במאמר התמיכה באפליקציות טיוטה הופסקה.
כדי לזהות את המשתמש כראוי ולקבוע את סטטוס הרישיון, שרת הרישוי דורש מידע על האפליקציה והמשתמש. האפליקציה שלכם ו-Google Play Client עובדים יחד כדי לאסוף את המידע, ו-Google Play Client מעביר אותו לשרת.
כדי לעזור לכם להוסיף רישוי לאפליקציה, Android SDK מספק קבוצה של מקורות ספרייה שניתן להוריד ולשלב בפרויקט האפליקציה: חבילת הרישוי של Google Market. ספריית אימות הרישיונות (LVL) היא ספרייה שאפשר להוסיף לאפליקציה, והיא מטפלת בכל התקשורת הקשורה לרישוי עם שירות הרישוי של Google Play. אחרי שמוסיפים את ה-LVL לאפליקציה, אפשר לקבוע את סטטוס הרישוי של המשתמש הנוכחי פשוט על ידי קריאה לשיטה והטמעה של פונקציית קריאה חוזרת שמקבלת את תגובת הסטטוס.
האפליקציה לא שולחת שאילתה ישירות לשרת הרישוי, אלא מבצעת קריאה ללקוח Google Play דרך IPC מרוחק כדי להתחיל בבקשת רישיון. בבקשת הרישיון:
- האפליקציה מספקת: את שם החבילה, קוד חד-פעמי (nonce) שמשמש מאוחר יותר לאימות כל תגובה מהשרת, וקריאה חוזרת (callback) שבאמצעותה אפשר להחזיר את התגובה באופן אסינכרוני.
- לקוח Google Play אוסף את המידע הנדרש על המשתמש והמכשיר, כמו שם המשתמש הראשי בחשבון Google במכשיר, מזהה IMSI ומידע נוסף. לאחר מכן הוא שולח את הבקשה לבדיקה של הרישיון לשרת מטעם האפליקציה.
- שרת Google Play מעריך את הבקשה באמצעות כל המידע הזמין, בניסיון לקבוע את זהות המשתמש ברמת ודאות מספקת. לאחר מכן, השרת בודק את זהות המשתמש מול רשומות הרכישה של האפליקציה ומחזיר תגובה לגבי הרישיון. לקוח Google Play מחזיר את התגובה הזו לאפליקציה דרך הקריאה החוזרת (callback) של IPC.
אתם יכולים לבחור מתי ואם בכלל האפליקציה תבדוק את הרישיון שלה, ותהיה לכם שליטה מלאה על האופן שבו היא מטפלת בתשובה, מאמתת את נתוני התשובה החתומים ומפעילה את אמצעי בקרת הגישה.
חשוב לזכור שבמהלך בדיקת הרישיון, האפליקציה לא מנהלת חיבורי רשת או משתמשת בממשקי API שקשורים לרישוי בפלטפורמת Android.
התשובות לרישיון מאובטחות
כדי להבטיח את תקינות כל שאילתה לגבי רישיון, השרת חותם על נתוני התשובה של הרישיון באמצעות זוג מפתחות RSA ששותף באופן בלעדי בינכם לבין שרת Google Play.
שירות הרישוי יוצר זוג מפתחות רישוי יחיד לכל אפליקציה, וחושפ את המפתח הציבורי בדף Services & APIs (שירותים וממשקי API) של האפליקציה ב-Play Console. צריך להעתיק את המפתח הציבורי מ-Play Console ולהטמיע אותו בקוד המקור של האפליקציה. השרת שומר את המפתח הפרטי באופן פנימי ומשתמש בו כדי לחתום על תשובות רישיון לאפליקציות שאתם מפרסמים באמצעות החשבון הזה.
כשהאפליקציה מקבלת תשובה חתומה, היא משתמשת במפתח הציבורי המוטמע כדי לאמת את הנתונים. השימוש בקריפטוגרפיה של מפתח ציבורי בשירות הרישוי מאפשר לאפליקציה לזהות תשובות שהושתלו בהן שינויים או תשובות מזויפות.
ספריית אימות הרישוי
ערכת Android SDK כוללת חבילת הורדה שנקראת חבילת הרישוי של Google Market, שכוללת את ספריית אימות הרישיון (LVL). LVL מפשט מאוד את התהליך של הוספת רישיון לאפליקציה, ומאפשר להבטיח הטמעה מאובטחת וחזקה יותר של האפליקציה. ה-LVL מספק כיתות פנימיות שמטפלות ברוב הפעולות הסטנדרטיות של שאילתה לגבי רישיון, כמו יצירת קשר עם לקוח Google Play כדי להתחיל בקשת רישיון ואימות ותיקוף התשובות. בנוסף, הוא חושף ממשקים שמאפשרים לכם לחבר בקלות את הקוד המותאם אישית שלכם כדי להגדיר את מדיניות הרישוי ולנהל את הגישה לפי הצורך של האפליקציה. ממשקי ה-LVL העיקריים הם:
Policy
- ההטמעה שלכם קובעת אם לאפשר גישה לאפליקציה, על סמך תגובת הרישיון שהתקבלה מהשרת וכל נתון אחר שזמין (למשל, משרת לקצה העורפי שמשויך לאפליקציה). ההטמעה יכולה להעריך את השדות השונים בתשובה של הרישיון ולהחיל אילוצים אחרים, לפי הצורך. ההטמעה מאפשרת גם לנהל את הטיפול בבדיקות הרישיון שמתקבלות בהן שגיאות, כמו שגיאות רשת.
LicenseCheckerCallback
- ההטמעה שלכם מנהלת את הגישה לאפליקציה על סמך התוצאה של הטיפול בתשובה של הרישיון על ידי האובייקט
Policy
. ההטמעה שלכם יכולה לנהל את הגישה בכל דרך שנדרשת, כולל הצגת תוצאת הרישיון בממשק המשתמש או הפניית המשתמש לרכישת האפליקציה (אם אין לו רישיון כרגע).
כדי לעזור לכם להתחיל להשתמש ב-Policy
, ב-LVL יש שתי הטמעות מלאות של Policy
שאפשר להשתמש בהן ללא שינוי או להתאים אותן לצרכים שלכם:
ServerManagedPolicy
Policy
גמיש שמשתמש בהגדרות שסופקו על ידי שרת הרישוי כדי לנהל את האחסון במטמון של התשובות ואת הגישה לאפליקציה כשהמכשיר במצב אופליין (למשל, כשהמשתמש נמצא במטוס). ברוב האפליקציות מומלץ מאוד להשתמש ב-ServerManagedPolicy
.StrictPolicy
Policy
מגביל שלא מאחסן בזיכרון מטמון נתוני תגובה ומאפשר לאפליקציה גישה רק כשהשרת מחזיר תגובה ברישיון.
ה-LVL זמין כחבילת Android SDK שניתן להורדה. החבילה כוללת את ה-LVL עצמו ואפליקציית דוגמה שמראה איך לשלב את הספרייה באפליקציה ואיך האפליקציה צריכה לנהל את נתוני התגובה, את האינטראקציה עם ממשק המשתמש ואת תנאי השגיאה.
מקורות ה-LVL מוצגים כפרויקט ספרייה ב-Android, כלומר אפשר לנהל קבוצה אחת של מקורות ספרייה ולשתף אותם בין כמה אפליקציות. סביבת בדיקה מלאה זמינה גם דרך ה-SDK, כך שתוכלו לפתח ולבדוק את הטמעת הרישוי באפליקציות שלכם לפני הפרסום שלהן, גם אם אין לכם גישה למכשיר פיזי.
דרישות ומגבלות
מערכת רישוי Google Play מאפשרת לכם להחיל אמצעי בקרה על רישיונות באפליקציות שאתם מפרסמים דרך Google Play. השירות לא נועד לאפשר לכם לשלוט בגישה לאפליקציות שלא פורסמו דרך Google Play או שפועלות במכשירים שלא מציעים את לקוח Google Play.
ריכזנו כאן כמה נקודות שכדאי לזכור כשמטמיעים רישוי באפליקציה:
- אפליקציה יכולה להשתמש בשירות רק אם לקוח Google Play מותקן במכשיר המארח שלה, והמכשיר פועל עם Android מגרסה 1.5 (רמת API 3) ואילך.
- כדי לבצע בדיקת רישיון, צריכה להיות גישה לשרת הרישוי דרך הרשת. אפשר להטמיע התנהגויות של שמירת רישיונות במטמון כדי לנהל את הגישה לאפליקציה כשאין חיבור לרשת.
- בסופו של דבר, האבטחה של אמצעי הבקרה על הרישוי של האפליקציה תלויה בתכנון של ההטמעה עצמה. השירות מספק את אבני הבניין שמאפשרות לכם לבדוק את הרישוי בצורה מאובטחת, אבל האכיפה בפועל והטיפול ברישיון הם באחריותכם. כדי להבטיח שההטמעה תהיה מאובטחת, מומלץ לפעול לפי השיטות המומלצות שמפורטות במסמכים הבאים.
- הוספת רישיון לאפליקציה לא משפיעה על אופן הפעולה שלה כשהיא מופעלת במכשיר שלא מציע את Google Play.
- אפשר להטמיע אמצעי בקרה על רישוי באפליקציה בחינם, אבל רק אם אתם משתמשים בשירות כדי לספק קובצי APK מורחבים.
החלפה של הגנה מפני העתקה
רישוי Google Play הוא מנגנון גמיש ומאובטח לניהול הגישה לאפליקציות שלכם. הוא מחליף את מנגנון ההגנה מפני העתקה (שכבר לא נתמך) שהיה זמין בעבר ב-Google Play, ומאפשר לכם להפיץ את האפליקציות שלכם ברחבי העולם.
רישוי מאפשר לכם לעבור למודל מבוסס-רישיון שאפשר לאכוף בכל המכשירים שיש להם גישה ל-Google Play. הגישה לא קשורה למאפיינים של מכשיר המארח, אלא לאפליקציה שלכם ב-Google Play (דרך המפתח הציבורי של האפליקציה) ולמדיניות הרישוי שתגדירו. אפשר להתקין ולנהל את האפליקציה בכל מכשיר ובכל נפח אחסון, כולל בכרטיס SD.
אף מנגנון רישוי לא יכול למנוע לחלוטין כל שימוש לא מורשה, אבל שירות הרישוי מאפשר לכם לשלוט בגישה לרוב סוגי השימוש הרגילים בכל המכשירים התואמים, נעולים או לא נעולים.
כדי להתחיל להוסיף רישוי לאפליקציה, ממשיכים לקטע הגדרה לרישוי.