Skip to content

Commit 7a3d665

Browse files
crash issue fixed
1 parent f9cba76 commit 7a3d665

File tree

2 files changed

+140
-132
lines changed

2 files changed

+140
-132
lines changed

android/src/main/java/com/logicwind/reactnativematomotracker/ReactNativeMatomoTrackerModule.kt

Lines changed: 64 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.logicwind.reactnativematomotracker
22

3+
import android.annotation.SuppressLint
34
import android.app.Application
45
import android.content.ContentValues.TAG
56
import android.content.Context
@@ -206,6 +207,7 @@ class ReactNativeMatomoTrackerModule(reactContext: ReactApplicationContext) :
206207
return userAgent
207208
}
208209

210+
@SuppressLint("SuspiciousIndentation")
209211
@ReactMethod
210212
fun trackCampaign(title:String, campaignUrl: String) {
211213

@@ -220,10 +222,10 @@ class ReactNativeMatomoTrackerModule(reactContext: ReactApplicationContext) :
220222
try {
221223
val urlString = "$baseUrl?$query"
222224
val jsonBody = """
223-
{
224-
"auth_token": "$authToken",
225-
}
226-
""".trimIndent()
225+
{
226+
"auth_token": "$authToken"
227+
}
228+
""".trimIndent()
227229

228230
val requestBody = jsonBody.toRequestBody("application/json; charset=utf-8".toMediaType())
229231

@@ -263,77 +265,80 @@ class ReactNativeMatomoTrackerModule(reactContext: ReactApplicationContext) :
263265

264266
) {
265267

266-
if(mediaStatus=="0") {
267-
TrackHelper.track().event(mediaType, "play").name(mediaTitle).with(tracker)
268-
trackDispatch()
269-
}
270-
if(mediaStatus==mediaLength && mediaStatus==mediaProgress) {
271-
TrackHelper.track().event(mediaType, "stop").name(mediaTitle).with(tracker)
272-
trackDispatch()
273-
}
268+
if(siteId.isNotEmpty() && tracker!=null){
269+
if(mediaStatus=="0") {
270+
TrackHelper.track().event(mediaType, "play").name(mediaTitle).with(tracker)
271+
trackDispatch()
272+
}
273+
if(mediaStatus==mediaLength && mediaStatus==mediaProgress) {
274+
TrackHelper.track().event(mediaType, "stop").name(mediaTitle).with(tracker)
275+
trackDispatch()
276+
}
277+
val baseUrl = tracker?.apiUrl
278+
val userAgent = getUserAgent(context)
279+
var query = "idsite=${encode(siteId)}" +
280+
"&rec=1" +
281+
"&r=${generateRandomNumber()}" +
282+
"&ma_id=${encode(mediaId)}" +
283+
"&ma_ti=${encode(mediaTitle)}" +
284+
"&ma_pn=${encode(playerName)}" +
285+
"&ma_mt=${encode(mediaType)}" +
286+
"&ma_re=${encode(mediaResource)}"+
287+
"&ma_st=${encode(mediaStatus)}"+
288+
"&_id=${encode(tracker?.visitorId.toString())}"
274289

275-
val baseUrl = tracker?.apiUrl
276-
val userAgent = getUserAgent(context)
277-
var query = "idsite=${encode(siteId)}" +
278-
"&rec=1" +
279-
"&r=${generateRandomNumber()}" +
280-
"&ma_id=${encode(mediaId)}" +
281-
"&ma_ti=${encode(mediaTitle)}" +
282-
"&ma_pn=${encode(playerName)}" +
283-
"&ma_mt=${encode(mediaType)}" +
284-
"&ma_re=${encode(mediaResource)}"+
285-
"&ma_st=${encode(mediaStatus)}"+
286-
"&_id=${encode(tracker?.visitorId.toString())}"
287-
288-
if(mediaLength.isNotEmpty()){
289-
query=query+ "&ma_le=${encode(mediaLength)}";
290-
}
290+
if(mediaLength.isNotEmpty()){
291+
query=query+ "&ma_le=${encode(mediaLength)}";
292+
}
291293

292-
if(mediaProgress.isNotEmpty()){
293-
query=query+ "&ma_ps=${encode(mediaProgress)}";
294-
}
294+
if(mediaProgress.isNotEmpty()){
295+
query=query+ "&ma_ps=${encode(mediaProgress)}";
296+
}
295297

296-
if(mediaWidth.isNotEmpty()){
297-
query=query+ "&ma_w=${encode(mediaWidth)}";
298-
}
298+
if(mediaWidth.isNotEmpty()){
299+
query=query+ "&ma_w=${encode(mediaWidth)}";
300+
}
299301

300-
if(mediaHeight.isNotEmpty()){
301-
query=query+ "&ma_h=${encode(mediaHeight)}";
302-
}
302+
if(mediaHeight.isNotEmpty()){
303+
query=query+ "&ma_h=${encode(mediaHeight)}";
304+
}
303305

304-
if(mediaFullScreen.isNotEmpty()){
305-
query=query+ "&ma_fs=${encode(mediaFullScreen)}";
306-
}
306+
if(mediaFullScreen.isNotEmpty()){
307+
query=query+ "&ma_fs=${encode(mediaFullScreen)}";
308+
}
307309

308-
if(mediaSE.isNotEmpty()){
309-
query=query+ "&ma_se=${encode(mediaSE)}";
310-
}
310+
if(mediaSE.isNotEmpty()){
311+
query=query+ "&ma_se=${encode(mediaSE)}";
312+
}
311313

312-
if(mediaTTP.isNotEmpty()){
313-
query=query+ "&ma_ttp=${encode(mediaTTP)}";
314-
}
315-
try {
316-
val urlString = "$baseUrl?$query"
317-
val jsonBody = """
314+
if(mediaTTP.isNotEmpty()){
315+
query=query+ "&ma_ttp=${encode(mediaTTP)}";
316+
}
317+
try {
318+
val urlString = "$baseUrl?$query"
319+
val jsonBody = """
318320
{
319321
"auth_token": "$authToken",
320322
}
321323
""".trimIndent()
322324

323-
val requestBody = jsonBody.toRequestBody("application/json; charset=utf-8".toMediaType())
325+
val requestBody = jsonBody.toRequestBody("application/json; charset=utf-8".toMediaType())
324326

325-
val request = Request.Builder()
326-
.url(urlString)
327-
.header("User-Agent",userAgent)
328-
.post(requestBody)
329-
.build()
327+
val request = Request.Builder()
328+
.url(urlString)
329+
.header("User-Agent",userAgent)
330+
.post(requestBody)
331+
.build()
330332

331-
client.newCall(request).execute().use { response ->
332-
val responseCode = response.code
333+
client.newCall(request).execute().use { response ->
334+
val responseCode = response.code
335+
}
336+
}catch (e:Exception){
337+
Log.e(TAG, "error : ${e.message}")
333338
}
334-
}catch (e:Exception){
335-
Log.e(TAG, "error : ${e.message}")
336339
}
340+
341+
337342
}
338343

339344
private fun generateRandomNumber(): Long {

ios/ReactNativeMatomoTracker.swift

Lines changed: 76 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -173,88 +173,91 @@ class ReactNativeMatomoTracker: NSObject {
173173
mediaSE: String,
174174
mediaFullScreen:String
175175
) {
176-
177-
if(mediaStatus=="0"){
176+
if(!siteId.isEmpty && matomoTracker != nil)
177+
{
178178

179-
matomoTracker?.track(eventWithCategory:mediaType, action:"play",name: mediaTitle)
180-
matomoTracker?.dispatch()
181-
}
179+
if(mediaStatus=="0"){
180+
181+
matomoTracker?.track(eventWithCategory:mediaType, action:"play",name: mediaTitle)
182+
matomoTracker?.dispatch()
183+
}
182184

183-
if(mediaStatus==mediaLength){
184-
matomoTracker?.track(eventWithCategory:mediaType, action:"stop",name: mediaTitle)
185-
matomoTracker?.dispatch()
186-
}
187-
185+
if(mediaStatus==mediaLength){
186+
matomoTracker?.track(eventWithCategory:mediaType, action:"stop",name: mediaTitle)
187+
matomoTracker?.dispatch()
188+
}
189+
188190

189-
var uid = ""
190-
191-
if var userId = matomoTracker?.userId {
192-
uid = userId
193-
} else {
194-
uid = ""
195-
}
196-
197-
198-
let baseUrl = baseURL
199-
var query = "idsite=\(encodeParameter(value: siteId))" +
200-
"&rec=1" +
201-
"&r=\(generateRandomNumber())" +
202-
"&ma_id=\(encodeParameter(value: mediaId))" +
203-
"&ma_ti=\(encodeParameter(value: mediaTitle))" +
204-
"&ma_pn=\(encodeParameter(value: playerName))" +
205-
"&ma_mt=\(encodeParameter(value: mediaType))" +
206-
"&ma_re=\(encodeParameter(value: mediaResource))" +
207-
"&ma_st=\(encodeParameter(value: mediaStatus))" +
208-
"&cid=\(encodeParameter(value: _id))" +
209-
"&uid=\(encodeParameter(value: uid))"
210-
211-
212-
213-
if(!mediaLength.isEmpty){
214-
query=query+"&ma_le=\(encodeParameter(value: mediaLength))";
215-
}
216-
217-
if(!mediaProgress.isEmpty){
218-
query=query+"&ma_ps=\(encodeParameter(value: mediaProgress))";
219-
}
191+
var uid = ""
192+
193+
if var userId = matomoTracker?.userId {
194+
uid = userId
195+
} else {
196+
uid = ""
197+
}
198+
199+
200+
let baseUrl = baseURL
201+
var query = "idsite=\(encodeParameter(value: siteId))" +
202+
"&rec=1" +
203+
"&r=\(generateRandomNumber())" +
204+
"&ma_id=\(encodeParameter(value: mediaId))" +
205+
"&ma_ti=\(encodeParameter(value: mediaTitle))" +
206+
"&ma_pn=\(encodeParameter(value: playerName))" +
207+
"&ma_mt=\(encodeParameter(value: mediaType))" +
208+
"&ma_re=\(encodeParameter(value: mediaResource))" +
209+
"&ma_st=\(encodeParameter(value: mediaStatus))" +
210+
"&cid=\(encodeParameter(value: _id))" +
211+
"&uid=\(encodeParameter(value: uid))"
212+
213+
214+
215+
if(!mediaLength.isEmpty){
216+
query=query+"&ma_le=\(encodeParameter(value: mediaLength))";
217+
}
218+
219+
if(!mediaProgress.isEmpty){
220+
query=query+"&ma_ps=\(encodeParameter(value: mediaProgress))";
221+
}
220222

221-
if(!mediaWidth.isEmpty){
222-
query=query+"&ma_w=\(encodeParameter(value: mediaWidth))";
223-
}
223+
if(!mediaWidth.isEmpty){
224+
query=query+"&ma_w=\(encodeParameter(value: mediaWidth))";
225+
}
224226

225-
if(!mediaHeight.isEmpty){
226-
query=query+"&ma_h=\(encodeParameter(value: mediaHeight))";
227-
}
227+
if(!mediaHeight.isEmpty){
228+
query=query+"&ma_h=\(encodeParameter(value: mediaHeight))";
229+
}
228230

229-
if(!mediaFullScreen.isEmpty){
230-
query=query+"&ma_fs=\(encodeParameter(value: mediaFullScreen))";
231-
}
232-
233-
if(!mediaSE.isEmpty){
234-
query=query+"&ma_se=\(encodeParameter(value: mediaSE))";
235-
}
236-
237-
if(!mediaTTP.isEmpty){
238-
query=query+"&ma_ttp=\(encodeParameter(value: mediaTTP))";
239-
}
240-
241-
242-
let urlString = "\(baseUrl)?\(query)"
231+
if(!mediaFullScreen.isEmpty){
232+
query=query+"&ma_fs=\(encodeParameter(value: mediaFullScreen))";
233+
}
234+
235+
if(!mediaSE.isEmpty){
236+
query=query+"&ma_se=\(encodeParameter(value: mediaSE))";
237+
}
238+
239+
if(!mediaTTP.isEmpty){
240+
query=query+"&ma_ttp=\(encodeParameter(value: mediaTTP))";
241+
}
242+
243+
244+
let urlString = "\(baseUrl)?\(query)"
243245

244-
if let url = URL(string: urlString) {
245-
var request = URLRequest(url: url)
246-
let device = Device.makeCurrentDevice();
247-
let application = Application.makeCurrentApplication()
248-
let userAgent = "Darwin/\(device.darwinVersion ?? "Unknown-Version") (\(device.platform); \(device.operatingSystem) \(device.osVersion)), MatomoTrackerSDK/\(MatomoTracker.sdkVersion)\(application.bundleName ?? "Unknown-App")/\(application.bundleShortVersion ?? "Unknown-Version")";
249-
request.httpMethod = "POST"
250-
request.setValue(userAgent, forHTTPHeaderField: "User-Agent")
251-
request.setValue("\(authToken)", forHTTPHeaderField: "token_auth")
252-
let task = URLSession.shared.dataTask(with: request) { data, response, error in
253-
if let httpResponse = response as? HTTPURLResponse {
254-
let statusCode = httpResponse.statusCode
246+
if let url = URL(string: urlString) {
247+
var request = URLRequest(url: url)
248+
let device = Device.makeCurrentDevice();
249+
let application = Application.makeCurrentApplication()
250+
let userAgent = "Darwin/\(device.darwinVersion ?? "Unknown-Version") (\(device.platform); \(device.operatingSystem) \(device.osVersion)), MatomoTrackerSDK/\(MatomoTracker.sdkVersion)\(application.bundleName ?? "Unknown-App")/\(application.bundleShortVersion ?? "Unknown-Version")";
251+
request.httpMethod = "POST"
252+
request.setValue(userAgent, forHTTPHeaderField: "User-Agent")
253+
request.setValue("\(authToken)", forHTTPHeaderField: "token_auth")
254+
let task = URLSession.shared.dataTask(with: request) { data, response, error in
255+
if let httpResponse = response as? HTTPURLResponse {
256+
let statusCode = httpResponse.statusCode
257+
}
255258
}
259+
task.resume()
256260
}
257-
task.resume()
258261
}
259262
}
260263

0 commit comments

Comments
 (0)