iOS SDK V6 とプラグインの更新

概要:既存のAppsFlyer iOS SDK/iOSのWrapper実装をSDK V6に更新してください。

iOS SDK V6 について

この記事の SDK V6 に関する参照事項です。

AppsFlyer iOS SDK V6:

  • アプリ所有者と開発者は iOS 14のリリースに向けて準備することができます。
  • IDFAの収集に関する許可をユーザーに提示するオプションを提供します。
  • iOSモバイルアプリにアプリの計測とイベントレポート機能を提供します。
  • 以前のバージョンから、重要な API メソッドの変更が含まれます。 

For full information about the SDK V6, and to integrate it into a new app that does not have an earlier version of the AppsFlyer SDK, read our iOS SDK integration guide for marketers.

iOS SDK V6 への更新

iOS SDK V6 へ更新するには、以下の手順(1~5)を実行してください。 

1. SDK バージョンを更新する

SDK V6 をダウンロードし、Xcode に追加します。 

2. SDK V6 を実装する

次のコードを SDK初期化に追加します

Objective-C Swift

AppDelegate.h 内で以下を実行してください。

#import "AppDelegate.h"
#import <AppsFlyerLib/AppsFlyerLib.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>
#import <UserNotifications/UserNotifications.h>
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 1 - Get AppsFlyer preferences from .plist file
    NSString *path = [[NSBundle mainBundle] pathForResource:@"afdevkey_donotpush" ofType:@".plist"];
    NSDictionary* properties = [NSDictionary dictionaryWithContentsOfFile:path];
    if (properties == nil || path == nil) {
        [NSException raise:@"Error" format:@"Cannot find .plist file"];
    }
    NSString* appsFlyerDevKey = [properties objectForKey:@"appsFlyerDevKey"];
    NSString* appleAppID = [properties objectForKey:@"appleAppID"];
    if (appsFlyerDevKey == nil || appleAppID == nil) {
        [NSException raise:@"Error" format:@"Cannot find appsFlyerDevKey or appleAppID"];
    }
    // 2 - Replace 'appsFlyerDevKey', `appleAppID` with your DevKey, Apple App ID
    [[AppsFlyerLib shared] setAppsFlyerDevKey:appsFlyerDevKey];
    [[AppsFlyerLib shared] setAppleAppID:appleAppID];
    [AppsFlyerLib shared].delegate = self;
    //  Set isDebug to true to see AppsFlyer debug logs
    [AppsFlyerLib shared].isDebug = true;

    if (@available(iOS 10, *)) {
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes: UIUserNotificationTypeAlert | UIUserNotificationTypeSound | UIUserNotificationTypeBadge categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    }
    return YES;
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [[AppsFlyerLib shared] start];
}

// Deep linking
// Open URI-scheme for iOS 9 and above
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *) options {
    [[AppsFlyerLib shared] handleOpenUrl:url options:options];
    return YES;
}
// Open URI-scheme for iOS 8 and below
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation {
    [[AppsFlyerLib shared] handleOpenURL:url sourceApplication:sourceApplication withAnnotation:annotation];
    return YES;
}
// Open Universal Links
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
    [[AppsFlyerLib shared] continueUserActivity:userActivity restorationHandler:restorationHandler];
    return YES;
}
// Report Push Notification attribution data for re-engagements
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    [[AppsFlyerLib shared] handlePushNotification:userInfo];
}
// AppsFlyerLib implementation
//Handle Conversion Data (Deferred Deep Link)
-(void)onConversionDataSuccess:(NSDictionary*) installData {
    id status = [installData objectForKey:@"af_status"];
    if([status isEqualToString:@"Non-organic"]) {
        id sourceID = [installData objectForKey:@"media_source"];
        id campaign = [installData objectForKey:@"campaign"];
        NSLog(@"This is a none organic install. Media source: %@  Campaign: %@",sourceID,campaign);
    } else if([status isEqualToString:@"Organic"]) {
        NSLog(@"This is an organic install.");
    }
}
-(void)onConversionDataFail:(NSError *) error {
    NSLog(@"%@",error);
}
//Handle Direct Deep Link
- (void) onAppOpenAttribution:(NSDictionary*) attributionData {
    NSLog(@"%@",attributionData);
}
- (void) onAppOpenAttributionFailure:(NSError *)error {
    NSLog(@"%@",error);
}
// support for scene delegate
#pragma mark - UISceneSession lifecycle
- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options API_AVAILABLE(ios(13)){
    // Called when a new scene session is being created.
    // Use this method to select a configuration to create the new scene with.
    return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
}
- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet *)sceneSessions  API_AVAILABLE(ios(13.0)){
    // Called when the user discards a scene session.
    // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
    // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
}
@end

3. SKAdNetworkアトリビューションのサポート

SKAdNetwork は iOS で使用されるクラスで、広告主アプリのインストールを検証します。アプリのインストール検証プロセスには、ソースアプリと広告主アプリが関係します。

ソースアプリとは、アドネットワークによって署名された広告を表示している、広告掲載面としてのアプリです。広告を表示できるようにアプリを設定することは、AppsFlyer SDKのサポート範囲ではありません。 設定するには、iOSの手順に従ってください。

広告主のアプリを設定するために、AppsFlyer SKAdNetwork ソリューションは、SKAdNetwork を使用して、ユーザーのプライバシーを保護しながら、広告主とアドネットワークにLTV分析、レポート、ポストバックを提供します。アプリの初回起動時に、AppsFlyer プラットフォームは、マーケティング担当者が定義した設定に基づいて、どのように SKAdNetwork コンバージョン値を設定すべきかSDKに指示を出します。

SKAdNetwork ソリューション を使用するには

  • 開発者は何も対応の必要がありません。
  • AppsFlyer SDKは、必要なSKAdNetwork API、つまりregisterAppForAdNetworkAttribution() updateConversionValue()を自動的にコールするため、開発者はそれらをコールしないでください。 
  • AppsFlyer以外のSDKが、SKAdNetworkのAPIを呼び出すことを許可しないでください。許可してしまうと、iOS が AppsFlyerに対してポストバックを送信するのを遅らせたり、管理画面上で設定されたユーザーの質を測るデータをSKAdNetworkの管理画面に入力するために使用するコンバージョン値を変更してしまう可能性があります。
  • 一方、マーケティング担当者はAppsFlyerの管理画面上でSKAdNetworkの計測設定を行う必要があります。 

AppStoreにおいて、開発者、マーケティング担当者のどちらも、この他に何も特別なアクションや登録プロセスは必要ありません。 

4. API を変更する

AppsFlyer iOS SDK V6には、いくつか API名の変更が含まれています。以下の表を参照し、以前の SDK バージョンの API名から現在の名前に変更してください。

API名(V6より前) 現在のAPI名(V6移行)
AppsFlyerTracker AppsFlyerLib
disableIAdTracking disableCollectASA
trackAppLaunchWithCompletionHandler

startWithCompletionHandler

trackLocation

logLocation

trackAppLaunch

start

trackEvent

logEvent

disableAppleAdSupportTracking

disableAdvertisingIdentifier

validateAndTrackInAppPurchase

validateAndLogInAppPurchase

isStopTracking

isStopped

deviceTrackingDisabled/deviceLoggingDisabled

anonymizeUser

sharedTracker (Objective C) shared

5. プッシュ通知の実装を確認する

プッシュ通知がすでに実装されている場合は、以下が必要です。

Follow the push notification instructions to ensure you have push notifications integrated using the handlePushNotificationData method. 

プラグイン

次のV6プラグインをご利用いただけます。

Unity

AppsFlyerの Unity V6 プラグイン は、アプリ所有者と開発者が iOS 14をサポートし、Unity 開発プラットフォームで開発された Android と iOS モバイルアプリにアプリ計測とイベントのレポートの機能を提供します。このプラグインは、AppsFlyerの iOS およびAndroid SDKと機能的に同等です。

プラグインを以前のバージョンから更新するには、Unity プラグイン V6への移行に関するガイドを参照してください。

React Native

AppsFlyerの React Nativeプラグインは、アプリ所有者と開発者が iOS 14 に向けての準備を支援し、アプリ計測とイベントのレポートの機能を提供します。このプラグインは、AppsFlyerの iOS およびAndroid SDKと機能的に同等です。

以前のバージョンからプラグインを更新する方法:

  1. 以前のプラグインを削除し置き換えます。GitHub ガイドの手順に従ってください 。 
  2. 必要なAPI名前を変更、および削除して、実装コードを変更します。

Segment

AppsFlyerの Segmentプラグインは、アプリ所有者と開発者が iOS 14 に向けての準備を支援し、アプリ計測とイベントのレポートの機能を提供します。このプラグインは、AppsFlyerの iOS およびAndroid SDKと機能的に同等です。

プラグインを以前のバージョンから更新するには、以前のプラグインを削除して新しいものに置き換えてください。詳細はGithub ガイドをご覧ください

Cordova

AppsFlyerのCordovaプラグインは、アプリ所有者と開発者が iOS 14 に向けての準備を支援し、アプリ計測とイベントのレポートの機能を提供します。このプラグインは、AppsFlyerの iOS およびAndroid SDKと機能的に同等です。

プラグインを以前のバージョンから更新するには、以前のプラグインを削除して新しいものに置き換えてください。詳細はGithub ガイドをご覧ください

Flutter

AppsFlyerの Flutterプラグインは、アプリ所有者と開発者が iOS 14 に向けての準備を支援し、アプリ計測とイベントのレポートの機能を提供します。このプラグインは、AppsFlyerの iOS およびAndroid SDKと機能的に同等です。

以前のバージョンからプラグインを更新するには、以前のプラグインを削除し、 pubspec.yaml に V6 版を追加します。pub.dev guideの手順に従ってください。

Adobe AIR

AppsFlyerの Adobe AIRプラグインは、アプリ所有者と開発者が iOS 14 に向けての準備を支援し、アプリ計測とイベントのレポートの機能を提供します。このプラグインは、AppsFlyerの iOS およびAndroid SDKと機能的に同等です。

プラグインを以前のバージョンから更新するには、以前のプラグインを削除して新しいものに置き換えてください。詳細はGithub ガイドをご覧ください