iOS SDK

자세한 기록들을 보시려면 저희의 릴리스 노트를 확인해주세요. 유니티 관련 사항은 다음을 방문하십시오 https://github.com/tenjin/tenjin-unity-sdk.

Tenjin iOS SDK (v1.7.9) (268KB) (Deployment Version 6.0+)

참고: SDK 통합시 최신 버전의 Xcode 사용을 권장합니다.

텐진 초기화:


  • pods를 사용시 당신의 Podfile에 pod TenjinSDK를 추가하고, pod install를 실행한 후 5번째 단계로 건너뛰세요.
1. SDK 콘텐츠들은 이곳에서 다운로드하세요
2. libTenjinSDK.aTenjinSDK.h를 당신의 project로 넣어주세요. 참고: 32-bit iOS Simulator devices (i386)로 테스트하시면, libTenjinSDK.a 대신 libTenjinSDKUniversal.a를 사용하셔야 합니다.
3. 다음과 같은 Framework들을 프로젝트에 첨부해주세요:
  • AdSupport.framework
  • StoreKit.framework
  • iAd.framework

Dashboard

4. Build Setting 상에서 linker flags -objC를 포함시켜주세요.

Dashboard

5. AppDelegate file를 다음과 같은 설정 확인해주세요: AppDelegate.m 와 #import “TenjinSDK.h”
6. API_KEY는 Tenjin Organization 탭에서 구해주세요.
7a. didFinishLaunchingWithOptions method에 다음 사항을 추가해주세요:
[TenjinSDK init:@"<API_KEY>"];
[TenjinSDK connect];

통합시, 아래와 같이 AppDelegate.m 파일이 보여집니다:

#import "TenjinSDK.h"

@implementation TJNAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [TenjinSDK init:@"<API_KEY>"];
    [TenjinSDK connect];

    //All your other stuff
    ...
}
7b. 다른 서비스의 딥 링크를 처리하기 위한 대체 초기화화 (7a와 7b를 동시에 사용하지 마시고 하나만 사용하세요)

다른 서비스를 사용하여 지연된 딥 링크를 생성하는 경우, Tenjin에서 딥링크를 전달하여 텐진 사용 딥링크로 속성 논리를 처리할 수 있습니다.

#import "TenjinSDK.h"

@implementation TJNAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    [TenjinSDK init:@"<API_KEY>"];

    //get your deep link from your other 3rd party service
    NSURL *url = [NSURL withString: @"your_deep_link"];

    //if you have a deep link that's generated from a third party service then pass it to tenjin to handle the attribution of deep links holistically
    if(url) {
      [TenjinSDK connectWithDeferredDeeplink:url];
    }
    else{
      [TenjinSDK connect];
    }

    //All your other stuff
    //...
}

Live Test Device Data Tool를 통해 통합이 작동하는지 확인할 수 있습니다. 테스트 장치 목록에 advertising_id 또는 IDFA/GAID를 추가하십시오. Support -> Test Devices에서 확인할 수 있습니다. SDK 라이브 페이지로 이동하여 앱에서 테스트 이벤트를 보냅니다. 실시간 이벤트가 아래와 같이 표시될 것입니다:

Tenjin and GDPR:


GDPR 준수의 일환으로 Tenjin SDK를 사용하면 장치/사용자를 opt-in하거나 opt-out하거나, 특정 장치 관련 매개 변수를 선택하여 opt-in 또는 opt-out 할 수 있습니다. Optout()은 Tenjin에 API 요청을 보내지 않으며, 이벤트를 처리하지 않습니다.

Opt-in/opt-out 진행시:

#import "TenjinSDK.h"

@implementation TJNAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

  [TenjinSDK init:@"<API_KEY>"];

  if ([self checkOptInValue]) {
      [TenjinSDK optIn];
  }
  else {
      [TenjinSDK optOut];
  }

  [TenjinSDK connect];

  //All your other stuff
  //..
}

-(BOOL) checkOptInValue
{
  // check opt-in value
  // return YES; // if user opted-in
  return NO;
}

특정 장치 관련 매개 변수를 opt-in / opt-out하려면 OptInParams() 또는 OptOutParams()를 사용할 수 있습니다. OptInParams()는 지정된 장치관련 매개 변수만을 보냅니다. OptOutParams()는 지정된 것 이외의 모든 장치 관련 매개 변수를 보냅니다. Tenjin의 시스템에서 장치를 제대로 추적하려면 ip_address, advertising_id, developer_device_id, limit_ad_tracking, referrer (Android)iad (iOS)가 필요합니다. Google을 사용하는 경우 platform, os_version, locale, device_modelbuild_id도 추가해야합니다.

특정 장치 관련 매개 변수만 가져오려면 OptInParams()를 사용하십시오. 아래의 예에서는 이러한 장치 관련 매개 변수만을 사용합니다다: ip_address, advertising_id, developer_device_id, limit_ad_tracking, referrer, 및 iad:

[TenjinSDK init:@"<API_KEY>"];

NSArray *optInParams = @[@"ip_address", @"advertising_id", @"developer_device_id", @"limit_ad_tracking", @"referrer", @"iad"];
[TenjinSDK optInParams:optInParams];

[TenjinSDK connect];

특정 장치 관련 매개 변수를 제외한 모든 매개 변수를 보내려면 OptOutParams()를 사용하십시오. 아래 예제에서는 locale, timezonebuild_id 매개 변수를 제외한 모든 장치 관련 매개 변수를 전송합니다.

[TenjinSDK init:@"<API_KEY>"];

NSArray *optOutParams = @[@"country", @"timezone", @"language"];
[TenjinSDK optOutParams:optOutParams];

[TenjinSDK connect];

장치 관련 매개 변수들

매개 변수 설명 참고
advertising_id IDFA iOS
developer_device_id Vendor ID iOS
limit_ad_tracking limit ad tracking enabled iOS
platform Platform iOS
iad Apple Search Ad parameter iOS
os_version OS version iOS
device device name iOS (hw.machine)
device_model device model iOS (hw.model)
device_model_name device model name iOS (hw.model)
device_cpu device cpu iOS (hw.cputype)
os_version_release release os version iOS
build_id build ID iOS (kern.osversion)
locale device locale iOS
country device locale country iOS
timezone timezone iOS

Tenjin 구매 이벤트 통합 지침:


수익 이벤트를 처리하는 방법에는 두 가지가 있습니다:

1. (skPaymentTransaction *) transaction 과 (NSData *)receipt object를 전달하세요:

구매가 확인되고 SKPaymentTransactionStatePurchased이후, 구매된 거래를 Tenjin에 전달할 수 있습니다:

//Get the NSData receipt
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receiptData = [NSData dataWithContentsOfURL:receiptURL];

//Pass the transaction and the receiptData to Tenjin
[TenjinSDK transaction: transaction andReceipt: receiptData];

Subscription IAP가 있는 경우, 앱의 퍼블릭 키를 Tenjin 대시 보드에 추가해야합니다. iTunes Connect Console> Select your app> Features> In-App Purchases> App-Specific Shared Secret에서 iOS 응용 프로그램 별 공유 비밀을 검색할 수 있습니다. 중요: 각 구독 기간마다 구독 거래를 한번씩 전달하셔야 합니다. (예를 들어, 월별 구독의 경우 월 1회 거래 정보를 보내야합니다)

아래의 예제 타임라인에서 거래 이벤트는 “First Charge”와 “Renewal” 이벤트에서만 보내야합니다. 시험 기간 중에는 Tenjin에 거래 이벤트를 보내지 마십시오. Tenjin은 중복 거래를 중복 제거하지 않습니다.

구독에 대한 자세한 내용은 다음을 참조하세요: Apple documentation on Working with Subscriptions (구독 작업에 대한 Apple 설명서)

또는 대안으로, 유효성이 확인되지 않은 IAP 구매 이벤트를 전달할 수 있습니다:

2. 거래를 수동으로 전달하십시오 (보통 구매가 Apple에 의해 처리되지 않은 경우):

이 방법을 사용하려면, 거래의 productName, currencyCode 및 거래 price가 필요합니다:

NSString *productName = @"product_1";
NSString *currencyCode = @"USD";
NSDecimalNumber *price = [NSDecimalNumber decimalNumberWithString:@"0.99"];
NSInteger quantity = 1;

[TenjinSDK  transactionWithProductName: productName
            andCurrencyCode: currencyCode
            andQuantity: quantity
            andUnitPrice: price];
  • ProductName -> 제품의 이름 혹은 ID
  • CurrencyCode -> 거래 통화
  • Quantity -> 구매 이벤트로 계산된 제품 수
  • UnitPrice -> 각 제품의 가격

계산된 총 수익은 TotalRevenue = Quantity * UnitPrice

Tenjin 커스텀 이벤트 통합 안내:


중요: CONNECT/INITIALIZATION 이벤트 (위) 전에 커스텀 이벤트를 보내지 마십시오. 어떠한 커스텀 이벤트를 전달하기 전에 초기화가 이루어져야 합니다.

Tenjin SDK를 사용하여 커스텀 이벤트를 전달할 수도 있습니다.

  • sendEventWithName: (NSString *)eventName

이를 사용하여 앱과 Tenjin 커스텀 인터액션을 전달하여 Tenjin 플랫폼을 통해 사용하는 각 획득 소스의 사용자 수준 비용에 연결할 수 있습니다. 다음은 사용 예입니다:

//send a particular event for when someone swipes on a part of your app
[TenjinSDK sendEventWithName:@"swipe_right"];

커스텀 이벤트는 NSString eventValue를 전달할 수도 있습니다. Tenjin은 이 eventValue를 동일한 eventName을 갖는 모든 커스텀 이벤트들의 합계로 사용합니다. eventValue는 정수이어야 합니다. 만약 eventValue가 정수가 아닐 경우, 이벤트를 전달하지 않습니다.

텐진의 지연된 딥링크 통합 지침:


Tenjin은 캠페인 추적 URL들을 통해 새로운 속성 설치 후, 사용자를 앱의 특정 부분으로 안내하는 기능을 지원합니다. registerDeepLinkHandler 핸들러를 사용하여 Tenjin 캠페인 추적 URL에 전달된 param[@”deferred_deeplink_url”]를 통해 지연된 딥링크에 액세스 할 수 있습니다. 테스트하려면, 이곳에 있는 지침을 따르십시오.


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //initialize the Tenjin SDK like you normally would for attribution
    [TenjinSDK init:@"<API_KEY>"];
    [TenjinSDK connect]

    //If you want to utilize the deeplink capabilities in Tenjin, utilize the registerDeepLinkHandler to retrieve the deferred_deeplink_url from the params NSDictionary object
    [[TenjinSDK sharedInstance] registerDeepLinkHandler:^(NSDictionary *params, NSError *error) {
        if([params[@"clicked_tenjin_link"] boolValue]){
            if([params[@"is_first_session"] boolValue]){

                //use the params to retrieve deferred_deeplink_url through params[@"deferred_deeplink_url"]
                //use the deferred_deeplink_url to direct the user to a specific part of your app

            } else{

            }
        }
    }];
}

registerDeepLinkHandler에서 제공하는 매개 변수를 사용하여 설치 후 로직을 처리하기 위해 v1.7.2+SDK를 사용할 수도 있습니다. 예를 들어, 유료 앱을 가지고 계시면, 유료 앱을 다음과 같은 방법으로 등록할 수 있습니다:


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //initialize the Tenjin SDK like you normally would for attribution
    [TenjinSDK init:@"<API_KEY>"];
    [TenjinSDK connect]

    //If you want to utilize the deeplink capabilities in Tenjin, utilize the registerDeepLinkHandler to retrieve the deferred_deeplink_url from the params NSDictionary object
    [[TenjinSDK sharedInstance] registerDeepLinkHandler:^(NSDictionary *params, NSError *error) {

          if([params[@"is_first_session"] boolValue]){
              //send paid app price and revenue to Tenjin

          } else{

          }

    }];
}

results matching ""

    No results matching ""