River Jiang
2020-10-21 c1d12cdfd23933a0db431a70ff5e145924864782
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#import "TalkingDataGA.h"
 
//#define TDGA_CUSTOM     // 自定义事件
//#define TDGA_PUSH       // 推送营销
 
// Converts C style string to NSString
static NSString *TDGACreateNSString(const char *string) {
    return string ? [NSString stringWithUTF8String:string] : nil;
}
 
static char *tdgaDeviceId = NULL;
static TDGAAccount *tdgaAccount = nil;
 
extern "C" {
#pragma GCC diagnostic ignored "-Wmissing-prototypes"
 
const char *TDGAGetDeviceId() {
    if (!tdgaDeviceId) {
        NSString *deviceId = [TalkingDataGA getDeviceId];
        tdgaDeviceId = (char *)calloc(deviceId.length + 1, sizeof(char));
        strcpy(tdgaDeviceId, deviceId.UTF8String);
    }
    return tdgaDeviceId;
}
 
void TDGASetVerboseLogDisabled() {
    [TalkingDataGA setVerboseLogDisabled];
}
 
void TDGABackgroundSessionEnabled() {
    [TalkingDataGA backgroundSessionEnabled];
}
 
void TDGAOnStart(const char *appId, const char *channelId) {
    if ([TalkingDataGA respondsToSelector:@selector(setFrameworkTag:)]) {
        [TalkingDataGA performSelector:@selector(setFrameworkTag:) withObject:@2];
    }
    [TalkingDataGA onStart:TDGACreateNSString(appId) withChannelId:TDGACreateNSString(channelId)];
}
 
void TDGASetLocation(double latitude, double longitude) {
    [TalkingDataGA setLatitude:latitude longitude:longitude];
}
 
void TDGASetAccount(const char *accountId) {
    tdgaAccount = [TDGAAccount setAccount:TDGACreateNSString(accountId)];
}
 
void TDGASetAccountName(const char *accountName) {
    if (nil != tdgaAccount) {
        [tdgaAccount setAccountName:TDGACreateNSString(accountName)];
    }
}
 
void TDGASetAccountType(int accountType) {
    if (nil != tdgaAccount) {
        [tdgaAccount setAccountType:(TDGAAccountType)accountType];
    }
}
 
void TDGASetLevel(int level) {
    if (nil != tdgaAccount) {
        [tdgaAccount setLevel:level];
    }
}
 
void TDGASetGender(int gender) {
    if (nil != tdgaAccount) {
        [tdgaAccount setGender:(TDGAGender)gender];
    }
}
 
void TDGASetAge(int age) {
    if (nil != tdgaAccount) {
        [tdgaAccount setAge:age];
    }
}
 
void TDGASetGameServer(const char *gameServer) {
    if (nil != tdgaAccount) {
        [tdgaAccount setGameServer:TDGACreateNSString(gameServer)];
    }
}
 
void TDGAOnBegin(const char *missionId) {
    [TDGAMission onBegin:TDGACreateNSString(missionId)];
}
 
void TDGAOnCompleted(const char *missionId) {
    [TDGAMission onCompleted:TDGACreateNSString(missionId)];
}
 
void TDGAOnFailed(const char *missionId, const char *failedCause) {
    [TDGAMission onFailed:TDGACreateNSString(missionId) failedCause:TDGACreateNSString(failedCause)];
}
 
void TDGAOnChargeRequst(const char *orderId, const char *iapId, double currencyAmount, const char *currencyType, double virtualCurrencyAmount, const char *paymentType) {
    [TDGAVirtualCurrency onChargeRequst:TDGACreateNSString(orderId)
                                  iapId:TDGACreateNSString(iapId)
                         currencyAmount:currencyAmount
                           currencyType:TDGACreateNSString(currencyType)
                  virtualCurrencyAmount:virtualCurrencyAmount
                            paymentType:TDGACreateNSString(paymentType)];
}
 
void TDGAOnChargSuccess(const char *orderId) {
    [TDGAVirtualCurrency onChargeSuccess:TDGACreateNSString(orderId)];
}
 
void TDGAOnReward(double virtualCurrencyAmount, const char *reason) {
    [TDGAVirtualCurrency onReward:virtualCurrencyAmount reason:TDGACreateNSString(reason)];
}
 
void TDGAOnPurchase(const char *item, int itemNumber, double priceInVirtualCurrency) {
    [TDGAItem onPurchase:TDGACreateNSString(item) itemNumber:itemNumber priceInVirtualCurrency:priceInVirtualCurrency];
}
 
void TDGAOnUse(const char *item, int itemNumber) {
    [TDGAItem onUse:TDGACreateNSString(item) itemNumber:itemNumber];
}
 
#ifdef TDGA_CUSTOM
void TDGAOnEvent(const char *eventId, const char *parameters) {
    NSString *parameterStr = TDGACreateNSString(parameters);
    NSDictionary *parameterDic = nil;
    if (parameterStr) {
        NSData *parameterData = [parameterStr dataUsingEncoding:NSUTF8StringEncoding];
        parameterDic = [NSJSONSerialization JSONObjectWithData:parameterData options:0 error:nil];
    }
    [TalkingDataGA onEvent:TDGACreateNSString(eventId) eventData:parameterDic];
}
#endif
 
#ifdef TDGA_PUSH
void TDGASetDeviceToken(const void *deviceToken, int length) {
    NSData *tokenData = [NSData dataWithBytes:deviceToken length:length];
    [TalkingDataGA setDeviceToken:tokenData];
}
 
void TDGAHandlePushMessage(const char *message) {
    NSString *val = TDGACreateNSString(message);
    NSDictionary *dic = [NSDictionary dictionaryWithObject:val forKey:@"sign"];
    [TalkingDataGA handleTDGAPushMessage:dic];
}
#endif
 
#pragma GCC diagnostic warning "-Wmissing-prototypes"
}