Zum Inhalt

Integration der SZM-Library iOS

App-Libraries: Wichtig zu beachten!

Mit dem Einsatz der pseudonymen INFOnline Library Android 2.3.0/iOS 2.4.0 (veröffentlicht am 11. Januar 2022) ist eine Übermittlung der Consententscheidung des Nutzers zwingend erforderlich. Diese kann durch eine TCF 2.x-konforme Consent Management Plattform (CMP) oder eine manuelle Consentübermittlung (OptIn) realisiert werden. Die Consententscheidung des Nutzers wird direkt im Sensor der INFOnline Library verarbeitet. Somit werden nur Messimpulse an das INFOnline Messsystem übermittelt, wenn eine positive Consententscheidung durch den Nutzer vorliegt.

Thread-safe

Die IOLib für iOS ist Thread-safe.

IOLib Dateien

Die SZM-Library für iOS umfasst folgende Dateien

  • RELEASE_NOTES.txt
    Diese Datei enthält Informationen zum Release der IOLib.

  • CHANGE_LOG.txt
    Diese Datei enthält Informationen zur Änderungshistorie der IOLib.

  • INFOnlineLibrary
    Enthält die IOLib (INFOnlineLibrary.framework) zur Erfassung der Nutzungsdaten einer App, sowie das copy-framework Script zur automatischen Integration des Frameworks in ein Projekt.

  • ObjCSample
    Ein Beispiel-Projekt, welches den Einsatz der IOLibrary für iOS demonstriert. Die Interaktion mit der IOLibrary ist mit Objective-C implementiert. Das Projekt beinhaltet eine TodayExtension.

  • SwiftSample
    Ein Beispiel-Projekt, welches den Einsatz der IOLibrary für iOS demonstriert. Die Interaktion mit der IOLibrary ist mit Swift 4.2 implementiert. Das Projekt beinhaltet eine TodayExtension.

Integration des IOLib iOS Frameworks

Die Integration erfolgt in wenigen einfachen Schritten.

1. Im Finder: Den Ordner „INFOnlineLibrary“ in den Projekt-Ordner kopieren (oder per Drag’n’Drop ziehen)

Image Image

Hinweis

Das Kopieren des „INFOnlineLibrary“ Ordners findet nur auf File Ebene statt. Weder der gesamte „INFOnlineLibrary“ Ordner noch das „INFOnlineLibrary.framework“ darf über Xcode dem Projekt hinzugefügt werden.

Ein manuelles Hinzufügen des „INFOnlineLibrary.framework“ als linked oder embedded Framework über das Xcode Interface ist nicht notwendig und kann gegebenenfalls zu Fehlern beim Code Signing oder der App Store Submission führen.

2. In Xcode: Build Settings

Den Pfad zum „INFOnlineLibrary“ Ordner zu den Framework Search Paths in den Build Settings hinzufügen.

In unserem Sample:

$(PROJECT_DIR)/../INFOnlineLibrary/$(PLATFORM_NAME)/

Image

Bei den Other Linker Flags in den Build Settings muss die INFOnlineLibrary wie folgt angegeben werden:

-framework INFOnlineLibrary

Image

3. In Xcode: Run Script Build Phase

Eine Run Script Phase zu den Build Phases hinzufügen:

In unserem Sample:

$(PROJECT_DIR)/../INFOnlineLibrary/copy-framework.sh

Image

4. In Xcode: Linking des Frameworks AdSupport

Image

Hinweis

Um eine korrekte und vollständige Messung für die agof Studienteilnahme zu gewährleisten, muss das o.g. Framework eingebunden werden.

Wenn Sie das Framework nicht einbinden, kann der für die agof-Messung erforderliche Identifier (Advertising Identifier / IDFA) nicht übermittelt werden – eine Teilnahme an der agof-Messung ist somit nicht möglich.

Falls Sie in der Applikation keine Werbeplätze anbieten und aufgrund der Bestimmungen der Apple iTunes Connect Developer Guidelines eine Nutzung der Advertising Identifier nicht möglich ist, wenden Sie sich bitte an das Customer Service-Team der INFOnline unter der Rufnummer 0228 / 410 29 77 oder per E-Mail an support@INFOnline.de.

Sie haben die technische Möglichkeit, anstelle der Advertising ID den Vendor Identifier (IDFV) zu nutzen. Hierzu entfernen Sie bitte das Linking des AdSupport-Frameworks. Als Konsequenz daraus erhebt die IOLib dann den Vendor Identifier (IDFV) anstelle des Advertising Identifier (IDFA).

Hinweis

Wir empfehlen Ihnen stets die Umsetzung mit Advertising Identifier (IDFA) gemäß Dokumentation.

5. In Xcode: Import der IOLib Header

Objective-C:

Import der IOLib Header im ApplicationDelegate und in den ViewControllern (alternativ im Prefix Header)

#import <INFOnlineLibrary/INFOnlineLibrary.h>

Hinweis

Es sollte immer der Umbrella Header benutzt werden und niemals einzelne Header aus dem Framework!

Swift:

Import des IOLib Frameworks im ApplicationDelegate und in den ViewControllern

import INFOnlineLibrary

Hinweis

Für die Verwendung der IOLib iOS in einem Swift-Projekt muss eine entsprechende Bridging-Header Datei in das Projekt eingefügt werden.

Beispiel für den Inhalt einer Bridging-Header Datei:

1
2
3
4
5
//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

import <INFOnlineLibrary/INFOnlineLibrary.h>

6. In Xcode: Initialisierung und Start einer Session der IOLib beim Application-Start:

Objective-C:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
@implementation AppDelegate

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
    [self startSession];
 // Other code
    return YES;
}

- (void)startSession {
    // Initialisierung der IOLib; Session-Start
    // privacySetting LIN = Berechtigtes Interesse ist gegeben
    [[IOLSession defaultSessionFor:IOLSessionTypeSZM] startSessionWithOfferIdentifier:@"<ANGEBOTSKENNUNG>" privacyType:IOLPrivacyTypeLIN];
}
Image

Swift:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
  self.startSession()
  // Other code
  return true
}

func startSession() {
  // Initialisierung der IOLib; Session-Start
  // privacySetting LIN = Berechtigtes Interesse ist gegeben
  IOLSession.defaultSession(for: .SZM).start(withOfferIdentifier:"<ANGEBOTSKENNUNG>",  
  privacyType: .LIN)
}
Image

7. In Xcode: Events können in den View Controllern der App geloggt werden, z.B. der Aufruf eines Views:

Objective-C:

1
2
3
4
5
6
7
// Tracking View Appeared

   IOLViewEvent *event = [[IOLViewEvent alloc] initWithType:IOLViewEventTypeAppeared 
   category:@"TestCategory" comment:nil];


   [[IOLSession defaultSessionFor:IOLSessionTypeSZM] logEvent:event];
Image

Swift:

1
2
3
4
5
// Tracking View Appeared

   let event = IOLViewEvent(type: .appeared, category: "TestCategory", comment: nil)

   IOLSession.defaultSession(for: .SZM).logEvent(event)
Image


Letztes Update: July 19, 2023