Skip to content

Conversation

@richardjrossiii
Copy link
Contributor

This PR will split the SDK into the following logical modules:

  • Common
  • Core
  • Analytics
  • Push
  • Social (not currently implemented)
  • Migration (not currently implemented)

This allows us to more easily support newer .NET platforms, as we now can use the Parse SDK in a fully PCL-compliant way.

As with any major change, this may have broken everything, and currently our NuGet packages and build scripts will need updating. Stay tuned for more updates coming soon.

richardjrossiii added a commit that referenced this pull request Feb 4, 2016
@richardjrossiii richardjrossiii merged commit f577ee3 into master Feb 4, 2016
@richardjrossiii richardjrossiii deleted the richardross.modular branch February 4, 2016 19:41
@prodigga
Copy link

prodigga commented Feb 5, 2016

Now that everything is getting split up - maybe we can consider splitting up the Unity3D iOS push notification logic and Android push notification logic in to seperate dll's? (To work around #102) This'll allow us to disable the iOS specific DLL when the target platform is set to Android and vise versa.

Right now we are compiling the ParseUnity dll twice to get around the issue linked to above - for iOS we use the normal version, for Android we use a modified version where we've strip out all the references to UnityEngine.iOS.

It is easy to strip out the lines of code referencing the iOS namespace (there is about 6 lines that need to be removed) but it is still a bit of a hassle.

IL2CPP is the way of the future for Unity and everything will eventually be ported to IL2CPP. Some projects (Like ours) are already using IL2CPP backend for their live project (Torque Burnout)

@richardjrossiii
Copy link
Contributor Author

@prodigga I actually did this as a part of the modularization! You can see the projects here: https://github.com/ParsePlatform/Parse-SDK-dotNET/tree/master/ParsePush.

I forgot to ping you back on that issue though, my mistake.

Eventually hopefully we'll have push notification support for .NET as well as other Unity platforms (Console push, anyone?) once push notifications are fully implemented on the new parse-server.

@tomh4
Copy link

tomh4 commented Jun 7, 2016

Can anyone tell me how to use this ?
What .dlls do I need to put where in my Xamarin Project ? Can I use this now in a PCL or still need to code platform specifique ?

@richardjrossiii
Copy link
Contributor Author

@tomh4 The general concept is this -

There are three main DLLs for each platform that we 'fully' support.

  • Parse.Common.dll:. This contains certain utilities for sending network requests, and other fancy things. It has two versions - a PCL-compliant one (dependent upon two NuGet packages Microsoft.Net.HTTP and PCLStorage, IIRC), and a unity-compliant one (using Unity libraries).
  • Parse.Core.dll: This contains the primary implementation of Parse. ParseObject, ParseQuery, etc. All live here. This is also fully PCL-compilant, and can be used directly in a PCL project (assuming you have build Common).
  • Parse.Push.dll: This contains platform-specific push code for each platform (also includes installations, due to some interesting platform-specific quirks - take a peek at DeviceInfoController.cs if you're interested. This is not required to use alongside Parse.Core.dll (you only need to include it if you're using Push/Installations), and is also dependent on Parse.Common.dll.

NOTE: There's also a separate DLL for analytics, and several Unity-Specific helpers (for Tasks, and compatibility with the rest of the .NET world).

Also note that this PR publicized a LOT of internal SDK functionality that needed to be shared cross-module - which opened the door for a lot of cool features down the road.

The original plan was to further modularize, and make Parse.Push usable without Parse.Core, but we never reached that point.

@tomh4
Copy link

tomh4 commented Jun 9, 2016

Hey!
Thanks for replying so in detail to me, I really feared this sdk was dead! Great to see you are still around.

Ok so correct me if i am wrong, I need to place all the. Dlls only at the pcl project and only the push part goes to .ios and .android?
Also, I have implemented a lot of code already in the platform specific projects, I assume they will no longer work with this one? I cannot use the 1.7 because It fails to do anything...
Will facebook login work with this aswell?

@richardjrossiii
Copy link
Contributor Author

@tomh4 That structure would be correct.

Any existing platform-specific modifications will probably be overwritten with this change, yes. I'd suggest migrating to a separate platform-specific project for each of your additional platforms, instead of modifying parse itself.

Facebook login is not currently supported on this commit, no.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants