Flurry Documentation - Sentences aren't even finished?

We’re trying to integrate the Flurry analytics system into an iOS project, and this one paragraph is all the documentation we have. Some of the sentences aren’t even complete, and the one paragraph we have doesn’t make any sense anyway. It seems like a mistake that this page is even public to be honest.

Hi!

Thanks for pointing the stray sentence out! I did a bit of cleanup on the Flurry page in the near term - but I have even better news for the future. :slight_smile: We’re working on adding Flurry analytics in a sample right now, which means new documentation will come out along with that!

What hangups are you having in your implementation, so we can be sure that they’re covered in the new docs?

Thanks!

Hey Lauren,

That’s great! We’re on a time constraint so if you could show us how to get it working in the interim that would be great. AFAIK we currently can’t get a project to build with Flurry, we’re using the Binary (launcher) version of the engine but we’ve been told on the iOS forums that we may have to use the GitHub version? If so how do we go about implementing it?

Is this as part of the new mobile sample that’s coming? If so, any idea when we can expect to see that - there’s so much in there that’s going to be invaluable to us!

Also, is there an Android implementation we can use? So far it seems as though Flurry only supports iOS?

Cheers!

Hello,

I’ve been trying to implement the flurry plugin into a project and have been having trouble so I thought I’d throw my hat in the ring so you know the hangup I’m currently having!

I’ve posted my progress so far here: Setting Up Flurry Analytics - Having trouble - iOS Development - Unreal Engine Forums

Its the first plugin I’ve tried to use so I fear I may have missed something obvious but I cant seem to find much in the ways of documentation to help. I’ve realised that the built-in plugins that seem to be used with iOS all seem to be missing the binaries required and I’m not sure how I would go about fixing that?

Thanks

I have now successfully built the Source Engine, Created a new project and built it to an iPad with the plugins ticked! Great news! Sadly flurry is still receiving no data with the blueprint start session node returning False. Im going to fiddle with it more and will update.

Has anyone else got this far or experienced a fix for this?

Thanks

Still find it weird that we need to use source build of the engine… idk

I’m back!

Here are my notes from when I was setting up Flurry in Unreal Match 3 (which is coming soon, and you’ll be able to see the node setup there, but not the .ini files as those have a private key).

I’m working on Windows, 4.10, but the steps (aside from remote compilation) should work fine on the Mac.

The reason you need a source build on Windows is because using the analytics plugin means that the project has to be compiled, and the remote Mac compilation needed for iOS is only enabled in a source build.

These steps will be in official documentation soon, but to get you started now:

  1. Enable the Flurry plugin in your project (and optionally, the Blueprint Analytics Plugin if you want to call the events in Blueprints).
  2. Restart the editor.
  3. Set your project up in Flurry’s web interface, and note the key for the project.
  4. Add the following to your DefaultEngine.ini file:

[Analytics]
ProviderModuleName=IOSFlurry
FlurryApiKey=YOURKEYFROMTHESITE

  1. Download the Flurry SDK (on their site, under Applications > YourAppName > Manage > App Info).
  2. Unzip the SDK, and find Flurry.h and libFlurry_[versionnumber].a inside the Flurry folder.
  3. Copy those into: [EngineLocation]\Source\ThirdParty\NotForLicensees\Flurry\iOS

Flurry 6.3 is the default Flurry version for the plugin that ships with UE4 4.10. It supports up to iOS 8. If you would like to support iOS 9, you can alter the plugin to work with Flurry 7.3.

  1. Open [EngineLocation]\Location\Plugins\Runtime\Analytics\Flurry\IOSFlurry\Source\IOSFlurry\IOSFlurry.Build.cs.
  2. Change

PublicAdditionalLibraries.Add(UEBuildConfiguration.UEThirdPartySourceDirectory + "NotForLicensees/Flurry/IOS/libFlurry_6.3.0.a"); 


to


PublicAdditionalLibraries.Add(UEBuildConfiguration.UEThirdPartySourceDirectory + "NotForLicensees/Flurry/IOS/libFlurry_7.3.0.a");

Back in your project:

  1. Add your start session call with either the following code: FAnalytics::Get().GetDefaultConfiguredProvider()->StartSession(); or the Blueprint node Start Session.
  2. Optionally, set up events to be recorded, item purchases, or currency given using the Blueprint nodes or the appropriate function calls. Note that currently, UE4’s Flurry implementation doesn’t use End Session or Flush Session events.
  3. Package your game and put it on a device for testing. Results can take up to 24 hours to show on the Flurry site, but you can check a log from a Development or Test build for LogAnalytics messages.

Hope this helps!

Lauren you’re a total legend :smiley: We’ll give this a try and let you know how we get on! That Match 3 example should be a great help, am I right in thinking it has full game center / google play integration as well?

I’m not working on this directly but from what I understand we compiled the Engine on a Mac, then did everything on the Mac side but it’s hard to say without me looking at it or Rengee posting here. I’m glad we can do the hard stuff on Windows and just use remote build on the Mac.

So as Flurry only seems to support iOS, is there a different plugin that works the same way for Android? If this all works btw I’m going to copy this onto the Wiki page too

Yeah, Unreal Match 3 has Game Center and Google Play integration (leaderboards, achievements, In-App Purchase), as well as ads and the Flurry analytics setup.

The two provider plugins currently implemented in UE4 are iOS (Flurry and Apsalar). I’ll ask around and see what our plans might be for future Android support, but in the meantime, you could definitely take a look at the existing plugins if you wanted to give setting up Android support a try.

Good luck with the Flurry implementation - let us know how it goes!

Thanks for this Lauren I followed the guide through and now have Start session returning true through the blueprint node! I have a few questions if you don’t mind?

I went ahead and set up a very simple blueprint that uses the “Record Event” to record the data, because Flush and End Session don’t get used in the flurry implementation how do I actually SEND the data? As even after 48 hours nothing is appearing in the events tab on flurry? Is there a particular thresh hold of events it needs before it sends them or does it just send them one at a time?

Glad you were able to get a connection!

You shouldn’t have to Flush or End Session to send the data, as far as I know. Some things that come to mind are:

  • What device/OS are you running the compiled build on?
  • When are you starting the session/sending the Record Event? (Blueprint screenshots or code snippets would be helpful, but if you can’t send them just an overview would be okay).
  • Which Flurry version did you end up going with?

Thanks!

Thanks for troubleshooting this with me!

Building to - Apple IPad Air 2
I’m compiling from Unreal 4.10 Source on a MacBook Air - I’m Using the Launch button and selecting the IPad
Currently just in the level blueprint, I’m simply on begin Play I start the session and send an event - I’ll attach a screenshot (I’ve also tried sending multiple events on a delayed tick)
Flurry - 7.3.0

Thanks for the info!

My first suggestion would be to try a fully packaged build, rather than just launching on device. Launching is really meant more for testing a particular level, and the analytics behavior encompasses more of the whole project.

Give that a shot, and let me know - I definitely want to figure out what the cause might be, so we can be sure to cover it in the docs. :slight_smile:

Thanks, I’m giving it a go today so I’ll let you know if that’s the problem (I’ve just built and launched a version out). No events yet… Flurry documentation states I should see the results minutes after they happen but I will wait a little longer before I come to any conclusions!

Update: I’ve built out a packaged (Shipping build) and still get the start session node returning true when I start the game. Still nothing on Flurry’s end (I haven’t waited the full 24 hours yet). Are there any additional steps I am meant to be doing on the flurry side of things? For example am I missing a way to “create” the events that required? I may try a build using apsalar in the mean time…

I’ve always had to wait a while, are the events showing up now?

You don’t have to do anything on the Flurry site side for the events, just set them up in your Blueprints/code. You can download the Unreal Match 3 project from the launcher and check out the node setup in there, if that helps to compare to.

Are these steps still applicable for Unreal Engine 4.10.4?

Currently, Flurry’s SDK is at 7.6.0. I’ve tried using their header files, and setting the IOSFlurry.Build.cs to 7.6.0 as well, but I keep getting the following in the output log:


LogAnalyticsWarning: CreateAnalyticsProvider called with a module name of None.
LogAnalyticsBPLib:Warning: StartSession: Failed to get the default analytics provider. Double check your [Analytics] configuration in your INI
LogAnalyticsBPLib:Warning: RecordEvent: Failed to get the default analytics provider. Double check your [Analytics] configuration in your INI

I have enabled the iOS Flurry Analytics Provider plugin and the Analytics Blueprint Library plugin from Edit > Plugins in the editor.

I have set the [Analytics] section in MYPROJECT/Config/DefaultEngine.ini. The folders \NotForLicensees\Flurry\iOS initially didn’t exist, so I created it. I downloaded the SDK 7.6.0 from their site, and extracted the Flurry.h and libFlurry_7.6.0.a to that newly created folder.

The folder for the IOSFlurry.Build.cs seems to now be located in 4.10/Engine/Plugins/Runtime/Analytics/Flurry/IOSFlurry/Source/IOSFlurry/IOSFlurry.Build.cs.


PublicAdditionalLibraries.Add(UEBuildConfiguration.UEThirdPartySourceDirectory + "NotForLicensees/Flurry/IOS/libFlurry_7.6.0.a");

This is from running the game within the editor Selected Viewport (PIE).

After noticing that the folder \NotForLicensess\Flurry\IOS had an incorrectly small ‘i’, after fixing it I now get the following:


LogModuleManager:Warning: ModuleManager: Unable to load module 'IOSFlurry' because the file '/Users/Shared/UnrealEngine/4.10/Engine/Binaries/Mac/' was not found.
LogAnalytics:Warning: Failed to find Analytics provider named IOSFlurry.

It looks like I need to build the module, but I am unsure how to go about this currently.

I am on Mac OS X El Capitan 10.11.4 with Unreal Engine 4.10.4 (binary). Have I missed a step? Any guidance is much appreciated!

Hi Sabun,

After updating Unreal Match 3 to 4.11, we do have additional information and we’re investigating the new file locations as we work on the official document. Because you’re adding in the Flurry source yourself, you need to use the source build from GitHub on Mac as well. Give that a try and then keep us posted! We definitely want to make sure the official doc is as clear as possible so that you are able to add analytics to your game. :slight_smile:

Thanks!

Thank you for responding Lauren.

To my understanding, when you say source build, I take it that means downloading the zip file/cloning of the 4.10 source from Github and then building it on my Mac should suffice to get the missing binary file needed? Is there a step in between that needs to be done? I have just downloaded the 4.10 source and have successfully compiled the engine. Now I am opening my project and will attempt to build it for iOS again. I do not yet see a binary file for flurry, and I don’t find one when searching for it in the folders. I haven’t built the project yet though.

With the binary version of 4.10, I was getting the following when attempting to package it (I assume it’s due to the missing module for IOSFlurry):


clang: error: no such file or directory: '/Users/Shared/UnrealEngine/4.10/Engine/Plugins/Runtime/Analytics/Flurry/IOSFlurry/Binaries/IOS/NotForLicensees/UE4-IOSFlurry-IOS-Shiping.a'

Building to Android works fine though, which is a good thing even though I know that the plugin does not yet function on Android in UE4. At the very least, it doesn’t prevent builds for other platforms from happening.

One last question, am I correct in understanding that the plugin will not actually work on the desktop and can only really be tested on an actual iOS device (for example, testing to make sure start server session has succeeded)?

Hi Sabun!

So, you’ll need to download the source build, and then do the steps of copying over the Flurry code you download from the Flurry site, and then the Flurry plugin will compile when you package your project. :slight_smile: You are correct that you will need to put the build on an iOS device for testing Flurry, and you can view the logs on the device using XCode to verify that events are succeeding.

Hope that helps - keep us posted!

I’ll try to detail the steps I’ve gone through so far, but the end result hasn’t been successful yet. My current build has IOS Flurry enabled and crashes on launch in iOS (both development build through Editor and a packaged IPA through TestFlight), but does not crash on Android since it doesn’t use it. My previous build, without IOS Flurry enabled functions both on iOS and Android without crashing on launch. Tested on an iPhone 5 with iOS 9.1 and iPhone 6 Plus with iOS 9.3. The Android phone is a Xiaomi Redmi 2 with Android 4.4 in case that matters at all.

  1. I grabbed the source version of UE4 4.10.4 from here. Ran into a couple of issues with building the editor initially due to jpgd.cpp but fixed it as mentioned here.

  2. Opened the source version of the editor, and opened my project which it then spent time compiling everything (apparently source 4.10.4 doesn’t recognise binary 4.10.4 projects and vice versa, they treat them as ‘Other’).

  3. Edited IOSFlurry.Build.cs in UnrealEngine-4.10/Engine/Plugins/Runtime/Analytics/Flurry/IOSFlurry/Source/IOSFlurry/ to:


PublicAdditionalLibraries.Add(UEBuildConfiguration.UEThirdPartySourceDirectory + "NotForLicensees/Flurry/IOS/libFlurry_7.6.0.a");

  1. Copied Flurry.h and libFlurry_7.6.0.a into UnrealEngine-4.10/Engine/Source/ThirdParty/NotForLicensees/Flurry/IOS/

  2. Double checked my DefaultEngine.ini file in my project folder under Config contained the [Analytics] items.

  3. Built my iOS package for shipping to be tested on TestFlight and saw the following:

It definitely seems to succeed in building the modules.

While I cannot yet determine exactly what is causing the crash as I am still figuring out how to run the development build through Xcode to see what’s happening when it crashes on launch, I am wondering if one of these could be the reasons:

  1. I am running Start Session node on Event Begin Play instead of the Event Init node.
  2. Start Session node is not being run on the very first level that is loaded by the game, instead it’s run on the second level.
  3. Using 7.6.0 of Flurry does not jive well with UE4. I can move it back down to 7.3.0, but not 6.3.0 since I cannot find the source files for it (libFlurry_6.3.0.a and Flurry.h).

Also, is it possible to move the built IOSFlurry modules to a binary installation of Unreal Engine 4 to be used there?

UPDATE: Success! It finally works. Alright, I had to get through the packaged game crashing first. I’m uncertain what fixed it exactly, but these are the three things I did:

  1. Moved the project back to the binary version of the editor
  2. Unticked “Support Forward Rendering with Metal (A7 and up devices)”
  3. Made sure both certificate and mobile provision were in /Library/MobileDevice/Provisioning Profiles/ directory
  4. Start Session node gets called on very first map that is loaded in Event Begin Play

Now, packaging and running for Development and Shipping both work without crashes and Flurry’s Start Session succeeds! Had to wait the night for Flurry to showcase it (about 8 hours plus).

To answer my own question, I was able to move the IOS modules that were made in the source editor over to the binary editor. In the source editor, it names the modules ProjectName-IOSFlurry.a and ProjectName-IOSFlurry-IOS-Shipping.a. Renaming them to UE4-IOSFlurry.a and UE4-IOSFlurry-IOS-Shipping.a respectively allows the binary editor to recognise them.

To further answer myself, UE4 works with Flurry’s 7.6 SDK just fine. A big thank you Lauren for assisting me in this :slight_smile: