מתחילים

‫Google User Messaging Platform (UMP) SDK הוא כלי לניהול פרטיות והודעות שיעזור לכם לנהל את העדפות הפרטיות של המשתמשים. מידע נוסף זמין במאמר בנושא הכלי 'פרטיות והודעות'. אפשר לראות הטמעה תקינה של IMA עם UMP SDK באפליקציות לדוגמה של UMP ב-Objective-C או ב-Swift.

יצירת סוג הודעה

יוצרים הודעות למשתמשים באמצעות אחד מסוגי ההודעות למשתמשים שזמינים בכרטיסייה פרטיות והודעות בחשבון Ad Manager. ה-UMP SDK מנסה להציג הודעה בנושא פרטיות שנוצרה ממזהה האפליקציה של Interactive Media Ads שהוגדר בפרויקט.

פרטים נוספים מופיעים במאמר בנושא פרטיות והודעות.

ייבוא ה-SDK

ה-UMP SDK לא נכלל כתלות ב-IMA SDK, ולכן צריך להוסיף אותו באופן מפורש.

‫CocoaPods (מועדף)

הדרך הקלה ביותר לייבא את ה-SDK לפרויקט iOS היא באמצעות CocoaPods. פותחים את ה-Podfile של הפרויקט ומוסיפים את השורה הזו ליעד של האפליקציה:

pod 'GoogleUserMessagingPlatform'

לאחר מכן, מריצים את הפקודה הבאה:

pod install --repo-update

אם אתם חדשים ב-CocoaPods, במאמר שימוש ב-CocoaPods מוסבר איך ליצור קובצי Podfile ולהשתמש בהם.

Swift Package Manager

בנוסף, UMP SDK תומך ב-Swift Package Manager. כדי לייבא את חבילת Swift, פועלים לפי השלבים הבאים.

  1. ב-Xcode, מתקינים את חבילת UMP SDK Swift על ידי מעבר אל File > Add Packages... (קובץ > הוספת חבילות...).

  2. בהנחיה שמופיעה, מחפשים את מאגר UMP SDK Swift Package GitHub:

    https://github.com/googleads/swift-package-manager-google-user-messaging-platform.git
    
  3. בוחרים את הגרסה של חבילת Swift של UMP SDK שרוצים להשתמש בה. לפרויקטים חדשים, מומלץ להשתמש באפשרות עד הגרסה הראשית הבאה.

לאחר מכן, פלטפורמת Xcode תטפל ביחסי התלות שבחבילה ותוריד אותם ברקע. לפרטים נוספים על הוספת תלות בחבילות, אפשר לעיין במאמר של אפל.

הוספת מזהה האפליקציה

אפשר למצוא את מזהה האפליקציה בממשק המשתמש של Ad Manager. מוסיפים את המזהה אל Info.plist באמצעות קטע הקוד הבא:

<key>UMPApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>

צריך לבקש עדכון של פרטי ההסכמה של המשתמש בכל הפעלה של האפליקציה באמצעות requestConsentInfoUpdateWithParameters:completionHandler:. הבקשה הזו בודקת את הדברים הבאים:

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

Swift


// Requesting an update to consent information should be called on every app launch.
ConsentInformation.shared.requestConsentInfoUpdate(with: parameters) {
  requestConsentError in
  // ...
}

Objective-C


// Requesting an update to consent information should be called on every app launch.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable requestConsentError) {
                           // ...
                         }];

טעינה והצגה של טופס הודעת הפרטיות

אחרי שמתקבל מצב ההסכמה העדכני ביותר, קוראים לפונקציה loadAndPresentIfRequiredFromViewController:completionHandler: כדי לטעון את הטפסים שנדרשים לאיסוף הסכמה מהמשתמשים. אחרי הטעינה, הטפסים מוצגים מיד.

Swift


try await ConsentForm.loadAndPresentIfRequired(from: viewController)

Objective-C


[UMPConsentForm
    loadAndPresentIfRequiredFromViewController:viewController
                             completionHandler:^(NSError *_Nullable loadAndPresentError) {
                                 // Consent gathering process is complete.
                                }];

אפשרויות פרטיות

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

איך בודקים אם נדרשת נקודת כניסה לאפשרויות הפרטיות

אחרי שקוראים ל- requestConsentInfoUpdateWithParameters:completionHandler:, בודקים את UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus כדי לדעת אם נדרשת נקודת כניסה לאפשרויות הפרטיות באפליקציה. אם נדרשת נקודת כניסה, מוסיפים לאפליקציה רכיב בממשק המשתמש שגלוי למשתמשים וניתן ללחוץ עליו, כדי להציג את טופס אפשרויות הפרטיות. אם לא נדרשת נקודת כניסה להגדרות הפרטיות, צריך להגדיר את רכיב ממשק המשתמש כך שלא יהיה גלוי ואי אפשר יהיה לקיים איתו אינטראקציה.

Swift


var isPrivacyOptionsRequired: Bool {
  return ConsentInformation.shared.privacyOptionsRequirementStatus == .required
}

Objective-C


- (BOOL)isPrivacyOptionsRequired {
  return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus ==
         UMPPrivacyOptionsRequirementStatusRequired;
}

- (void)gatherConsentFromConsentPresentationViewController:(UIViewController *)viewController
                                  consentGatheringComplete:
                                      (void (^)(NSError *_Nullable))consentGatheringComplete {
  UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
  // Set tag for under age of consent. Use NO constant to indicate that the user is not under age.
  parameters.tagForUnderAgeOfConsent = NO;

  UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
  // Uncomment the following line to simulate a consent request from users in the
  // European Economic Area (EEA) for testing purposes.
  // debugSettings.geography = UMPDebugGeographyEEA;
  parameters.debugSettings = debugSettings;

  // Requesting an update to consent information should be called on every app launch.
  [UMPConsentInformation.sharedInstance
      requestConsentInfoUpdateWithParameters:parameters
                           completionHandler:^(NSError *_Nullable requestConsentError) {
                             // ...
                           }];
}

- (void)loadAndPresentIfRequiredFromViewController:(UIViewController *)viewController
                           completionHandler:(void (^)(NSError *_Nullable))completionHandler {
  [UMPConsentForm
      loadAndPresentIfRequiredFromViewController:viewController
                               completionHandler:^(NSError *_Nullable loadAndPresentError) {
                                   // Consent gathering process is complete.
                                  }];
}

- (void)presentPrivacyOptionsFormFromViewController:(UIViewController *)viewController
                                  completionHandler:
                                      (void (^)(NSError *_Nullable))completionHandler {
  [UMPConsentForm presentPrivacyOptionsFormFromViewController:viewController
                                            completionHandler:completionHandler];
}

@end

רשימה מלאה של סטטוסי הדרישות של אפשרויות הפרטיות מופיעה במאמר UMPPrivacyOptionsRequirementStatus.

הצגת טופס אפשרויות הפרטיות

כשמזוהה אינטראקציה של המשתמש עם הרכיב, מציגים את טופס אפשרויות הפרטיות:

Swift


ConsentForm.presentPrivacyOptionsForm(
  from: viewController, completionHandler: completionHandler)

Objective-C


[UMPConsentForm presentPrivacyOptionsFormFromViewController:viewController
                                          completionHandler:completionHandler];

בקשת מודעות עם הסכמה מהמשתמשים

לפני ששולחים בקשות להצגת מודעות, משתמשים ב- UMPConsentInformation.sharedInstance.canRequestAds כדי לבדוק אם קיבלתם הסכמה מהמשתמש:

Swift

ConsentInformation.shared.canRequestAds

Objective-C

UMPConsentInformation.sharedInstance.canRequestAds;

ריכזנו כאן כמה מקומות שבהם אפשר לבדוק אם אפשר לבקש הצגת מודעות בזמן איסוף הסכמה:

אם מתרחשת שגיאה במהלך תהליך איסוף ההסכמה, צריך לבדוק אם אפשר לשלוח בקשות להצגת מודעות. ‫UMP SDK משתמש בסטטוס ההסכמה מהסשן הקודם באפליקציה.

מניעת עבודה מיותרת על בקשות למודעות

כשבודקים את UMPConsentInformation.sharedInstance.canRequestAds אחרי איסוף ההסכמה ואחרי הקריאה ל- requestConsentInfoUpdateWithParameters:completionHandler:, חשוב לוודא שהלוגיקה מונעת בקשות מיותרות להצגת מודעות, שעלולות לגרום לכך ששתי הבדיקות יחזירו את הערך true. לדוגמה, עם משתנה בוליאני.

בדיקה

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

  1. התקשרו אל requestConsentInfoUpdateWithParameters:completionHandler:.
  2. בודקים את פלט היומן ומחפשים הודעה שדומה לדוגמה הבאה, שבה מוצג מזהה המכשיר והסבר איך להוסיף אותו כמכשיר בדיקה:

    <UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
    
  3. מעתיקים את מזהה מכשיר הבדיקה ללוח.

  4. משנים את הקוד כדי לקרוא ל-UMPDebugSettings().testDeviceIdentifiers ולהעביר רשימה של מזהי מכשירי הבדיקה.

    Swift

    let parameters = RequestParameters()
    let debugSettings = DebugSettings()
    
    debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
    parameters.debugSettings = debugSettings
    
    // Include the UMPRequestParameters in your consent request.
    ConsentInformation.shared.requestConsentInfoUpdate(
        with: parameters,
        completionHandler: { error in
          // ...
        })
    

    Objective-C

    UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
    UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
    
    debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ];
    parameters.debugSettings = debugSettings;
    
    // Include the UMPRequestParameters in your consent request.
    [UMPConsentInformation.sharedInstance
        requestConsentInfoUpdateWithParameters:parameters
                            completionHandler:^(NSError *_Nullable error){
                              // ...
    }];
    

אילוץ של מיקום גיאוגרפי

באמצעות UMP SDK אפשר לבדוק את אופן הפעולה של האפליקציה במקרה שבו המכשיר נמצא באזורים שונים, כמו האזור הכלכלי האירופי או בריטניה, באמצעות UMPDebugGeography. הערה: הגדרות ניפוי הבאגים פועלות רק במכשירי בדיקה.

Swift

let parameters = RequestParameters()
let debugSettings = DebugSettings()

debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = .EEA
parameters.debugSettings = debugSettings

// Include the UMPRequestParameters in your consent request.
ConsentInformation.shared.requestConsentInfoUpdate(
    with: parameters,
    completionHandler: { error in
      // ...
    })

Objective-C

UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];

debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ];
debugSettings.geography = UMPDebugGeographyEEA;
parameters.debugSettings = debugSettings;

// Include the UMPRequestParameters in your consent request.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error){
                           // ...
}];

כשבודקים את האפליקציה באמצעות UMP SDK, יכול להיות שיהיה שימושי לאפס את מצב ה-SDK כדי לדמות את חוויית ההתקנה הראשונית של המשתמש. ה-SDK מספק את ה-method‏ reset כדי לעשות זאת.

Swift

ConsentInformation.shared.reset()

Objective-C

[UMPConsentInformation.sharedInstance reset];

דוגמאות ב-GitHub

דוגמה מלאה להטמעה של UMP SDK שמוסברת בדף הזה זמינה ב Swift UmpExample וב- Objective-C UmpExample.