Google Play Licensing הוא שירות מבוסס-רשת שמאפשר לאפליקציה לשלוח שאילתה לשרת מהימן של Google Play Licensing כדי לקבוע אם האפליקציה מורשית למשתמש הנוכחי במכשיר. שירות הרישוי מבוסס על היכולת של שרת הרישוי של Google Play לקבוע אם למשתמש מסוים יש רישיון להשתמש באפליקציה מסוימת. מערכת Google Play מחשיבה משתמש כבעל רישיון אם הוא רשום כרוכש של האפליקציה.
הבקשה מתחילה כשהאפליקציה שולחת בקשה לשירות שמתארח באפליקציית הלקוח של Google Play. אפליקציית Google Play שולחת בקשה לשרת הרישוי ומקבלת את התוצאה. אפליקציית Google Play שולחת את התוצאה לאפליקציה שלכם, שיכולה לאפשר או לא לאפשר שימוש נוסף באפליקציה לפי הצורך.
הערה: אם גרסה של אפליקציה נמצאת במסלולי הפצה לבדיקות סגורות או פתוחות, כל המשתמשים שמורשים להוריד ולהתקין את האפליקציה נחשבים למשתמשים עם רישיון לאפליקציה. למידע נוסף, אפשר לעיין במאמר שימוש במסלולי הפצה לבדיקה כדי לקבל משוב מוקדם וחשוב מהמשתמשים.

איור 1. האפליקציה שלכם יוזמת בדיקת רישיון דרך ספריית אימות הרישיון ולקוח Google Play, שמטפל בתקשורת עם השרת של Google Play.
הערה: בעבר הייתה אפשרות לבדוק אפליקציה על ידי העלאה של גרסת 'טיוטה' שלא פורסמה. הפונקציונליות הזו כבר לא נתמכת. במקום זאת, צריך לפרסם את האפליקציה במסלולים של בדיקות בקבוצות מוגדרות או בדיקות פתוחות. מידע נוסף זמין במאמר בנושא אפליקציות בטיוטה לא נתמכות יותר.
כדי לזהות את המשתמש בצורה נכונה ולקבוע את סטטוס הרישיון, שרת הרישוי צריך לקבל מידע על האפליקציה והמשתמש – האפליקציה שלכם ולקוח Google Play פועלים יחד כדי לאסוף את המידע, ולקוח Google Play מעביר אותו לשרת.
כדי לעזור לכם להוסיף רישוי לאפליקציה, Android SDK מספק קבוצה של מקורות ספריות שאפשר להוריד ולכלול בפרויקט האפליקציה: חבילת הרישוי של Google Market. ספריית אימות הרישיונות (LVL) היא ספרייה שאפשר להוסיף לאפליקציה כדי לטפל בכל התקשורת שקשורה לרישוי עם שירות הרישוי של Google Play. אחרי שמוסיפים את LVL לאפליקציה, האפליקציה יכולה לקבוע את סטטוס הרישיון של המשתמש הנוכחי על ידי קריאה לפונקציה והטמעה של קריאה חוזרת שמקבלת את תגובת הסטטוס.
האפליקציה לא שולחת שאילתה ישירות לשרת הרישוי, אלא קוראת ללקוח Google Play באמצעות IPC מרוחק כדי ליזום בקשת רישיון. בבקשת הרישיון:
- האפליקציה מספקת: שם החבילה שלה, מספר חד-פעמי שמשמש מאוחר יותר לאימות של כל תגובה מהשרת, וקריאה חוזרת שאפשר להחזיר דרכה את התגובה באופן אסינכרוני.
- לקוח Google Play אוסף את המידע הדרוש על המשתמש והמכשיר, כמו שם המשתמש הראשי בחשבון Google, מספר IMSI ומידע נוסף. לאחר מכן, הוא שולח את בקשת בדיקת הרישיון לשרת בשם האפליקציה שלכם.
- השרת של Google Play מעריך את הבקשה באמצעות כל המידע הזמין, ומנסה לקבוע את זהות המשתמש ברמת ודאות מספקת. השרת בודק את זהות המשתמש מול רשומות הרכישה של האפליקציה ומחזיר תגובה לגבי הרישיון. לקוח Google Play מחזיר את התגובה הזו לאפליקציה באמצעות קריאה חוזרת (callback) של IPC.
אתם יכולים לבחור מתי ובאיזו תדירות האפליקציה תבדוק את הרישיון שלה, ויש לכם שליטה מלאה באופן שבו היא מטפלת בתגובה, מאמתת את נתוני התגובה החתומים ומאכפת את בקרות הגישה.
שימו לב שבמהלך בדיקת הרישיון, האפליקציה לא מנהלת חיבורים לרשת ולא משתמשת בממשקי API שקשורים לרישוי בפלטפורמת Android.
התשובות לרישיון מאובטחות
כדי להבטיח את התקינות של כל שאילתת רישיון, השרת חותם על נתוני התגובה של הרישיון באמצעות זוג מפתחות RSA שמשותף באופן בלעדי בין שרת Google Play לבינכם.
שירות הרישוי יוצר זוג מפתחות רישוי יחיד לכל אפליקציה, וחושף את המפתח הציבורי בדף Services & APIs של האפליקציה ב-Play Console. צריך להעתיק את המפתח הציבורי מ-Play Console ולהטמיע אותו בקוד המקור של האפליקציה. השרת שומר את המפתח הפרטי באופן פנימי ומשתמש בו כדי לחתום על תשובות בנוגע לרישיונות של האפליקציות שפרסמתם באמצעות החשבון הזה.
כשהאפליקציה מקבלת תגובה חתומה, היא משתמשת במפתח ציבורי מוטמע כדי לאמת את הנתונים. השימוש בקריפטוגרפיה של מפתח ציבורי בשירות הרישוי מאפשר לאפליקציה לזהות תשובות שעברו שינוי או שהן מזויפות.
ספריית אימות רישיונות
Android SDK מספק חבילה להורדה שנקראת Google Market Licensing package (חבילת רישוי של Google Market), שכוללת את License Verification Library (ספריית אימות הרישיון, LVL). ה-LVL מפשט מאוד את תהליך הוספת הרישוי לאפליקציה, ועוזר להבטיח הטמעה מאובטחת ואמינה יותר של האפליקציה. ספריית LVL מספקת מחלקות פנימיות שמטפלות ברוב הפעולות הסטנדרטיות של שאילתת רישיון, כמו יצירת קשר עם לקוח Google Play כדי ליזום בקשת רישיון, ואימות התגובות. הוא גם חושף ממשקים שמאפשרים לכם להוסיף בקלות את הקוד המותאם אישית שלכם כדי להגדיר מדיניות רישוי ולנהל גישה לפי הצורך של האפליקציה. ממשקי ה-LVL העיקריים הם:
Policy
- ההטמעה שלכם קובעת אם לאפשר גישה לאפליקציה, על סמך תגובת הרישיון שהתקבלה מהשרת וכל נתון אחר שזמין (למשל משרת backend שמשויך לאפליקציה שלכם). ההטמעה יכולה להעריך את השדות השונים של תגובת הרישיון ולהחיל אילוצים אחרים, אם צריך. ההטמעה מאפשרת גם לנהל את הטיפול בבדיקות רישיון שמובילות לשגיאות, כמו שגיאות ברשת.
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.
למרות ששום מנגנון רישוי לא יכול למנוע לחלוטין כל שימוש לא מורשה, שירות הרישוי מאפשר לכם לשלוט בגישה לרוב סוגי השימוש הרגיל, בכל המכשירים התואמים, נעולים או לא נעולים.
כדי להתחיל להוסיף רישוי לאפליקציה, ממשיכים אל הגדרת רישוי.