public override bool TrackClick(string clickId, string contentId, WebtrekkParametersCollection additionalParameters) { using (var pool = new NSAutoreleasePool()) { Thread thread = new Thread(TrackClickThread); thread.Priority = ThreadPriority.AboveNormal; thread.Start(new object[] { clickId, contentId, additionalParameters }); } return(true); }
private void TrackClickThread(object dataObject) { object[] data = (object[])dataObject; string clickId = (string)data[0]; string contentId = (string)data[1]; WebtrekkParametersCollection additionalParameters = null; if (data.Length > 2) { additionalParameters = (WebtrekkParametersCollection)data[2]; } if (this._tracker != null) { try { if (additionalParameters != null) { SystemLogger.Log(SystemLogger.Module.PLATFORM, "Webtrekk Tracking click [" + clickId + "-" + contentId + " - additional parameters]"); NSDictionary dict = ParametersCollectionToDictionary(additionalParameters); UIApplication.SharedApplication.InvokeOnMainThread(delegate { try { this._tracker.TrackClick(clickId, contentId, dict); SystemLogger.Log(SystemLogger.Module.PLATFORM, "Webtrekk click TRACKED [" + clickId + "-" + contentId + " with additional parameters]"); } catch (Exception e) { SystemLogger.Log(SystemLogger.Module.PLATFORM, "Error tracking click with additional parameters", e); } }); } else { SystemLogger.Log(SystemLogger.Module.PLATFORM, "Webtrekk Tracking click [" + clickId + "-" + contentId + "]"); UIApplication.SharedApplication.InvokeOnMainThread(delegate { try { this._tracker.TrackClick(clickId, contentId); SystemLogger.Log(SystemLogger.Module.PLATFORM, "Webtrekk click TRACKED [" + clickId + "-" + contentId + "]"); } catch (Exception e) { SystemLogger.Log(SystemLogger.Module.PLATFORM, "Error tracking click", e); } }); } } catch (Exception e) { SystemLogger.Log(SystemLogger.Module.PLATFORM, "Couldn't track Webtrekk click", e); } } }
private NSDictionary ParametersCollectionToDictionary(WebtrekkParametersCollection paramCollection) { try { NSDictionary dict = null; string[] keys = new string[paramCollection.AdditionalParameters.Length]; string[] values = new string[paramCollection.AdditionalParameters.Length]; for (int i = 0; i < paramCollection.AdditionalParameters.Length; i++) { keys [i] = paramCollection.AdditionalParameters [i].Name; values [i] = paramCollection.AdditionalParameters [i].Value; } dict = NSDictionary.FromObjectsAndKeys(values, keys); return(dict); } catch (Exception e) { SystemLogger.Log(SystemLogger.Module.PLATFORM, "Error parsing Webtrekk Additional Parameters", e); return(null); } }