Comments (15)
Hi Eduardo,
Have you tried only adding ParsePush.jar
, and remove Parse-1.10.2.jar
from your project?
from parse-sdk-dotnet.
Yes, in this case the app crashes and the Android alert Unfortunately, <app> has stopped.
is shown as soon as the app launches.
If you extract ParsePush.jar
you'll get:
com
└── parse
├── ManifestInfo$ManifestCheckResult.class
├── ManifestInfo.class
├── ParsePushBroadcastReceiver.class
├── ParsePushService.class
├── ParsePushUnityHelper.class
├── PushType.class
└── push
and for Parse-1.10.2.jar
you'll get:
com
└── parse
├── AbstractQueryController$1.class
├── AbstractQueryController.class
├── AuthenticationCallback.class
├── CacheQueryController$1.class
├── CacheQueryController$2.class
├── CacheQueryController$3.class
├── CacheQueryController$4.class
├── CacheQueryController$5.class
├── CacheQueryController$6.class
├── CacheQueryController$7.class
├── CacheQueryController$CommandDelegate.class
├── CacheQueryController.class
├── CachedCurrentInstallationController$1$1.class
├── CachedCurrentInstallationController$1$2.class
├── CachedCurrentInstallationController$1.class
├── CachedCurrentInstallationController$2$1.class
├── CachedCurrentInstallationController$2$2.class
├── CachedCurrentInstallationController$2.class
├── CachedCurrentInstallationController$3$1.class
├── CachedCurrentInstallationController$3.class
├── CachedCurrentInstallationController.class
├── CachedCurrentUserController$1$1$1.class
├── CachedCurrentUserController$1$1.class
├── CachedCurrentUserController$1$2.class
├── CachedCurrentUserController$1$3$1.class
├── CachedCurrentUserController$1$3.class
├── CachedCurrentUserController$1.class
├── CachedCurrentUserController$2$1.class
├── CachedCurrentUserController$2.class
├── CachedCurrentUserController$3.class
├── CachedCurrentUserController$4$1$1.class
├── CachedCurrentUserController$4$1$2.class
├── CachedCurrentUserController$4$1.class
├── CachedCurrentUserController$4.class
├── CachedCurrentUserController$5$1$1.class
├── CachedCurrentUserController$5$1.class
├── CachedCurrentUserController$5.class
├── CachedCurrentUserController.class
├── ConfigCallback.class
├── ConnectivityNotifier$ConnectivityListener.class
├── ConnectivityNotifier.class
├── CountCallback.class
├── DeleteCallback.class
├── EventuallyPin$1.class
├── EventuallyPin$2$1.class
├── EventuallyPin$2.class
├── EventuallyPin.class
├── FileObjectStore$1.class
├── FileObjectStore$2.class
├── FileObjectStore$3.class
├── FileObjectStore$4.class
├── FileObjectStore.class
├── FindCallback.class
├── FunctionCallback.class
├── GCMService$1.class
├── GCMService.class
├── GcmBroadcastReceiver.class
├── GcmRegistrar$1.class
├── GcmRegistrar$2.class
├── GcmRegistrar$3.class
├── GcmRegistrar$4.class
├── GcmRegistrar$5.class
├── GcmRegistrar$Request$1.class
├── GcmRegistrar$Request.class
├── GcmRegistrar$Singleton.class
├── GcmRegistrar.class
├── GetCallback.class
├── GetDataCallback.class
├── InstallationId.class
├── KnownParseObjectDecoder.class
├── Lists$Partition.class
├── Lists.class
├── LocalIdManager$1.class
├── LocalIdManager$MapEntry.class
├── LocalIdManager.class
├── LocationCallback.class
├── LocationNotifier$1.class
├── LocationNotifier$2.class
├── LocationNotifier.class
├── LockSet$1.class
├── LockSet.class
├── LogInCallback.class
├── LogOutCallback.class
├── ManifestInfo$ManifestCheckResult.class
├── ManifestInfo.class
├── NetworkObjectController$1.class
├── NetworkObjectController$2.class
├── NetworkObjectController$3.class
├── NetworkObjectController.class
├── NetworkQueryController$1.class
├── NetworkQueryController$2.class
├── NetworkQueryController$3.class
├── NetworkQueryController.class
├── NetworkSessionController$1.class
├── NetworkSessionController$2.class
├── NetworkSessionController.class
├── NetworkUserController$1.class
├── NetworkUserController$2.class
├── NetworkUserController$3.class
├── NetworkUserController$4.class
├── NetworkUserController$5.class
├── NetworkUserController.class
├── NoObjectsEncoder.class
├── NotificationCompat$Builder$BigTextStyle.class
├── NotificationCompat$Builder$Style.class
├── NotificationCompat$Builder.class
├── NotificationCompat$NotificationCompatImpl.class
├── NotificationCompat$NotificationCompatImplBase.class
├── NotificationCompat$NotificationCompatPostJellyBean.class
├── NotificationCompat.class
├── Numbers.class
├── OfflineObjectStore$1$1.class
├── OfflineObjectStore$1.class
├── OfflineObjectStore$2.class
├── OfflineObjectStore$3.class
├── OfflineObjectStore$4.class
├── OfflineObjectStore$5.class
├── OfflineObjectStore$6.class
├── OfflineObjectStore.class
├── OfflineQueryController.class
├── OfflineQueryLogic$1.class
├── OfflineQueryLogic$10.class
├── OfflineQueryLogic$11$1.class
├── OfflineQueryLogic$11.class
├── OfflineQueryLogic$12.class
├── OfflineQueryLogic$13.class
├── OfflineQueryLogic$14$1.class
├── OfflineQueryLogic$14.class
├── OfflineQueryLogic$15.class
├── OfflineQueryLogic$16.class
├── OfflineQueryLogic$17.class
├── OfflineQueryLogic$18.class
├── OfflineQueryLogic$19.class
├── OfflineQueryLogic$2.class
├── OfflineQueryLogic$20$1.class
├── OfflineQueryLogic$20.class
├── OfflineQueryLogic$21.class
├── OfflineQueryLogic$3.class
├── OfflineQueryLogic$4.class
├── OfflineQueryLogic$5.class
├── OfflineQueryLogic$6.class
├── OfflineQueryLogic$7$1.class
├── OfflineQueryLogic$7.class
├── OfflineQueryLogic$8.class
├── OfflineQueryLogic$9$1.class
├── OfflineQueryLogic$9.class
├── OfflineQueryLogic$ConstraintMatcher.class
├── OfflineQueryLogic$Decider.class
├── OfflineQueryLogic$SubQueryMatcher$1.class
├── OfflineQueryLogic$SubQueryMatcher.class
├── OfflineQueryLogic.class
├── OfflineSQLiteOpenHelper.class
├── OfflineStore$1.class
├── OfflineStore$10.class
├── OfflineStore$11$1.class
├── OfflineStore$11$2.class
├── OfflineStore$11.class
├── OfflineStore$12.class
├── OfflineStore$13.class
├── OfflineStore$14.class
├── OfflineStore$15.class
├── OfflineStore$16.class
├── OfflineStore$17.class
├── OfflineStore$18.class
├── OfflineStore$19.class
├── OfflineStore$2.class
├── OfflineStore$20.class
├── OfflineStore$21.class
├── OfflineStore$22.class
├── OfflineStore$23.class
├── OfflineStore$24.class
├── OfflineStore$25.class
├── OfflineStore$26$1$1$1.class
├── OfflineStore$26$1$1$2.class
├── OfflineStore$26$1$1.class
├── OfflineStore$26$1.class
├── OfflineStore$26.class
├── OfflineStore$27.class
├── OfflineStore$28.class
├── OfflineStore$29$1$1.class
├── OfflineStore$29$1$2.class
├── OfflineStore$29$1.class
├── OfflineStore$29.class
├── OfflineStore$3.class
├── OfflineStore$30.class
├── OfflineStore$31$1.class
├── OfflineStore$31$2.class
├── OfflineStore$31.class
├── OfflineStore$32.class
├── OfflineStore$33.class
├── OfflineStore$34.class
├── OfflineStore$35.class
├── OfflineStore$36.class
├── OfflineStore$37.class
├── OfflineStore$38.class
├── OfflineStore$39.class
├── OfflineStore$4.class
├── OfflineStore$40.class
├── OfflineStore$41.class
├── OfflineStore$42.class
├── OfflineStore$43.class
├── OfflineStore$44.class
├── OfflineStore$45.class
├── OfflineStore$46$1.class
├── OfflineStore$46.class
├── OfflineStore$47$1.class
├── OfflineStore$47.class
├── OfflineStore$48$1$1.class
├── OfflineStore$48$1$2.class
├── OfflineStore$48$1.class
├── OfflineStore$48.class
├── OfflineStore$5$1.class
├── OfflineStore$5$2.class
├── OfflineStore$5.class
├── OfflineStore$6$1.class
├── OfflineStore$6$2.class
├── OfflineStore$6$3.class
├── OfflineStore$6$4.class
├── OfflineStore$6.class
├── OfflineStore$7.class
├── OfflineStore$8.class
├── OfflineStore$9.class
├── OfflineStore$OfflineDecoder.class
├── OfflineStore$OfflineEncoder$1.class
├── OfflineStore$OfflineEncoder$2.class
├── OfflineStore$OfflineEncoder.class
├── OfflineStore$SQLiteDatabaseCallable.class
├── OfflineStore.class
├── PLog.class
├── PPNSUtil.class
├── Parse$1.class
├── Parse$2.class
├── Parse$3.class
├── Parse$ParseCallbacks.class
├── Parse.class
├── ParseACL$Permissions.class
├── ParseACL$UserResolutionListener.class
├── ParseACL.class
├── ParseAWSRequest$1.class
├── ParseAWSRequest.class
├── ParseAddOperation.class
├── ParseAddUniqueOperation.class
├── ParseAnalytics$1.class
├── ParseAnalytics$2.class
├── ParseAnalytics$3.class
├── ParseAnalytics.class
├── ParseAnalyticsController.class
├── ParseAnonymousUtils.class
├── ParseApacheHttpClient$1.class
├── ParseApacheHttpClient$ParseApacheHttpEntity.class
├── ParseApacheHttpClient.class
├── ParseAuthenticationManager$1.class
├── ParseAuthenticationManager$2.class
├── ParseAuthenticationManager$3.class
├── ParseAuthenticationManager.class
├── ParseBroadcastReceiver.class
├── ParseByteArrayHttpBody.class
├── ParseCallback1.class
├── ParseCallback2.class
├── ParseClassName.class
├── ParseCloud$1.class
├── ParseCloud.class
├── ParseCloudCodeController$1.class
├── ParseCloudCodeController.class
├── ParseCommandCache$1$1.class
├── ParseCommandCache$1.class
├── ParseCommandCache$2.class
├── ParseCommandCache$3.class
├── ParseCommandCache$4.class
├── ParseCommandCache.class
├── ParseConfig$1.class
├── ParseConfig$2$1.class
├── ParseConfig$2.class
├── ParseConfig.class
├── ParseConfigController$1$1.class
├── ParseConfigController$1.class
├── ParseConfigController.class
├── ParseCorePlugins.class
├── ParseCountingByteArrayHttpBody.class
├── ParseCountingFileHttpBody.class
├── ParseCurrentConfigController$1.class
├── ParseCurrentConfigController$2.class
├── ParseCurrentConfigController.class
├── ParseCurrentInstallationController.class
├── ParseCurrentUserController.class
├── ParseDateFormat.class
├── ParseDecoder.class
├── ParseDecompressInterceptor.class
├── ParseDefaultACLController.class
├── ParseDeleteOperation.class
├── ParseDigestUtils.class
├── ParseEncoder.class
├── ParseEventuallyQueue$1.class
├── ParseEventuallyQueue$TestHelper.class
├── ParseEventuallyQueue.class
├── ParseException.class
├── ParseExecutors.class
├── ParseFieldOperation.class
├── ParseFieldOperations$1.class
├── ParseFieldOperations$2.class
├── ParseFieldOperations$3.class
├── ParseFieldOperations$4.class
├── ParseFieldOperations$5.class
├── ParseFieldOperations$6.class
├── ParseFieldOperations$7.class
├── ParseFieldOperations$8.class
├── ParseFieldOperations$ParseFieldOperationFactory.class
├── ParseFieldOperations.class
├── ParseFile$1$1.class
├── ParseFile$1.class
├── ParseFile$2$1.class
├── ParseFile$2.class
├── ParseFile$3.class
├── ParseFile$4.class
├── ParseFile$5.class
├── ParseFile$6$1.class
├── ParseFile$6.class
├── ParseFile$7.class
├── ParseFile$8.class
├── ParseFile$State$Builder.class
├── ParseFile$State.class
├── ParseFile.class
├── ParseFileController$1.class
├── ParseFileController$2.class
├── ParseFileController$3$1.class
├── ParseFileController$3.class
├── ParseFileController$4.class
├── ParseFileController.class
├── ParseFileHttpBody.class
├── ParseFileUtils.class
├── ParseGeoPoint$1.class
├── ParseGeoPoint$2.class
├── ParseGeoPoint.class
├── ParseHttpClient$ParseNetworkInterceptorChain.class
├── ParseHttpClient.class
├── ParseIOUtils.class
├── ParseImpreciseDateFormat.class
├── ParseIncrementOperation.class
├── ParseInstallation$1.class
├── ParseInstallation$2.class
├── ParseInstallation$3.class
├── ParseInstallation.class
├── ParseJSONCacheItem.class
├── ParseJSONUtils$1.class
├── ParseJSONUtils.class
├── ParseKeyValueCache$1.class
├── ParseKeyValueCache$2.class
├── ParseKeyValueCache.class
├── ParseMulticastDelegate.class
├── ParseNotificationManager$Singleton.class
├── ParseNotificationManager.class
├── ParseObject$1.class
├── ParseObject$10$1.class
├── ParseObject$10.class
├── ParseObject$11.class
├── ParseObject$12$1.class
├── ParseObject$12.class
├── ParseObject$13.class
├── ParseObject$14.class
├── ParseObject$15$1.class
├── ParseObject$15.class
├── ParseObject$16.class
├── ParseObject$17.class
├── ParseObject$18.class
├── ParseObject$19.class
├── ParseObject$2.class
├── ParseObject$20.class
├── ParseObject$21.class
├── ParseObject$22.class
├── ParseObject$23.class
├── ParseObject$24.class
├── ParseObject$25.class
├── ParseObject$26.class
├── ParseObject$27$1.class
├── ParseObject$27.class
├── ParseObject$28$1.class
├── ParseObject$28.class
├── ParseObject$29.class
├── ParseObject$3.class
├── ParseObject$30.class
├── ParseObject$31.class
├── ParseObject$32$1.class
├── ParseObject$32.class
├── ParseObject$33.class
├── ParseObject$34$1$1.class
├── ParseObject$34$1.class
├── ParseObject$34.class
├── ParseObject$35.class
├── ParseObject$36.class
├── ParseObject$37.class
├── ParseObject$38.class
├── ParseObject$39.class
├── ParseObject$4.class
├── ParseObject$40.class
├── ParseObject$41$1.class
├── ParseObject$41.class
├── ParseObject$42$1$1.class
├── ParseObject$42$1.class
├── ParseObject$42.class
├── ParseObject$43.class
├── ParseObject$44$1.class
├── ParseObject$44.class
├── ParseObject$45$1.class
├── ParseObject$45.class
├── ParseObject$46.class
├── ParseObject$47.class
├── ParseObject$48.class
├── ParseObject$49.class
├── ParseObject$5.class
├── ParseObject$50.class
├── ParseObject$6.class
├── ParseObject$7.class
├── ParseObject$8.class
├── ParseObject$9.class
├── ParseObject$State$Builder.class
├── ParseObject$State$Init.class
├── ParseObject$State.class
├── ParseObject.class
├── ParseObjectCoder.class
├── ParseObjectController.class
├── ParseObjectCurrentCoder.class
├── ParseObjectCurrentController.class
├── ParseObjectStore.class
├── ParseOkHttpClient$1$1.class
├── ParseOkHttpClient$1$2.class
├── ParseOkHttpClient$1.class
├── ParseOkHttpClient$2.class
├── ParseOkHttpClient$ParseOkHttpRequestBody.class
├── ParseOkHttpClient.class
├── ParseOperationSet.class
├── ParsePin.class
├── ParsePinningEventuallyQueue$1.class
├── ParsePinningEventuallyQueue$10$1.class
├── ParsePinningEventuallyQueue$10.class
├── ParsePinningEventuallyQueue$11.class
├── ParsePinningEventuallyQueue$12.class
├── ParsePinningEventuallyQueue$13$1$1.class
├── ParsePinningEventuallyQueue$13$1$2.class
├── ParsePinningEventuallyQueue$13$1.class
├── ParsePinningEventuallyQueue$13.class
├── ParsePinningEventuallyQueue$14$1$1.class
├── ParsePinningEventuallyQueue$14$1.class
├── ParsePinningEventuallyQueue$14.class
├── ParsePinningEventuallyQueue$15.class
├── ParsePinningEventuallyQueue$2$1.class
├── ParsePinningEventuallyQueue$2.class
├── ParsePinningEventuallyQueue$3$1.class
├── ParsePinningEventuallyQueue$3.class
├── ParsePinningEventuallyQueue$4.class
├── ParsePinningEventuallyQueue$5$1$1.class
├── ParsePinningEventuallyQueue$5$1.class
├── ParsePinningEventuallyQueue$5.class
├── ParsePinningEventuallyQueue$6.class
├── ParsePinningEventuallyQueue$7.class
├── ParsePinningEventuallyQueue$8.class
├── ParsePinningEventuallyQueue$9$1.class
├── ParsePinningEventuallyQueue$9.class
├── ParsePinningEventuallyQueue$PauseException.class
├── ParsePinningEventuallyQueue.class
├── ParsePlugins$1.class
├── ParsePlugins$Android.class
├── ParsePlugins.class
├── ParsePush$1.class
├── ParsePush$State$Builder.class
├── ParsePush$State.class
├── ParsePush.class
├── ParsePushBroadcastReceiver.class
├── ParsePushChannelsController$1.class
├── ParsePushChannelsController$2.class
├── ParsePushChannelsController.class
├── ParsePushController.class
├── ParsePushUnityHelper.class
├── ParseQuery$1.class
├── ParseQuery$10$1$1.class
├── ParseQuery$10$1.class
├── ParseQuery$10.class
├── ParseQuery$2.class
├── ParseQuery$3$1.class
├── ParseQuery$3.class
├── ParseQuery$4.class
├── ParseQuery$5$1.class
├── ParseQuery$5.class
├── ParseQuery$6.class
├── ParseQuery$7.class
├── ParseQuery$8$1.class
├── ParseQuery$8.class
├── ParseQuery$9.class
├── ParseQuery$CachePolicy.class
├── ParseQuery$CacheThenNetworkCallable.class
├── ParseQuery$KeyConstraints.class
├── ParseQuery$QueryConstraints.class
├── ParseQuery$RelationConstraint.class
├── ParseQuery$State$Builder.class
├── ParseQuery$State.class
├── ParseQuery.class
├── ParseQueryController.class
├── ParseRESTAnalyticsCommand.class
├── ParseRESTCloudCommand.class
├── ParseRESTCommand$Builder.class
├── ParseRESTCommand$Init.class
├── ParseRESTCommand.class
├── ParseRESTConfigCommand.class
├── ParseRESTFileCommand$Builder.class
├── ParseRESTFileCommand.class
├── ParseRESTObjectBatchCommand$1.class
├── ParseRESTObjectBatchCommand.class
├── ParseRESTObjectCommand.class
├── ParseRESTPushCommand.class
├── ParseRESTQueryCommand.class
├── ParseRESTSessionCommand.class
├── ParseRESTUserCommand.class
├── ParseRelation.class
├── ParseRelationOperation.class
├── ParseRemoveOperation.class
├── ParseRequest$1.class
├── ParseRequest$2.class
├── ParseRequest$3.class
├── ParseRequest$4$1$1.class
├── ParseRequest$4$1.class
├── ParseRequest$4.class
├── ParseRequest$5.class
├── ParseRequest$ParseRequestException.class
├── ParseRequest.class
├── ParseRole.class
├── ParseSQLiteCursor$1.class
├── ParseSQLiteCursor.class
├── ParseSQLiteDatabase$1.class
├── ParseSQLiteDatabase$10.class
├── ParseSQLiteDatabase$11.class
├── ParseSQLiteDatabase$12.class
├── ParseSQLiteDatabase$13.class
├── ParseSQLiteDatabase$14.class
├── ParseSQLiteDatabase$15.class
├── ParseSQLiteDatabase$16.class
├── ParseSQLiteDatabase$17.class
├── ParseSQLiteDatabase$18.class
├── ParseSQLiteDatabase$19.class
├── ParseSQLiteDatabase$2.class
├── ParseSQLiteDatabase$20.class
├── ParseSQLiteDatabase$21.class
├── ParseSQLiteDatabase$22.class
├── ParseSQLiteDatabase$23.class
├── ParseSQLiteDatabase$24.class
├── ParseSQLiteDatabase$25.class
├── ParseSQLiteDatabase$26.class
├── ParseSQLiteDatabase$27.class
├── ParseSQLiteDatabase$28.class
├── ParseSQLiteDatabase$3.class
├── ParseSQLiteDatabase$4.class
├── ParseSQLiteDatabase$5.class
├── ParseSQLiteDatabase$6.class
├── ParseSQLiteDatabase$7.class
├── ParseSQLiteDatabase$8.class
├── ParseSQLiteDatabase$9.class
├── ParseSQLiteDatabase.class
├── ParseSQLiteOpenHelper$1.class
├── ParseSQLiteOpenHelper.class
├── ParseSession$1$1.class
├── ParseSession$1.class
├── ParseSession$2.class
├── ParseSession.class
├── ParseSessionController.class
├── ParseSetOperation.class
├── ParseTaskUtils$1.class
├── ParseTaskUtils$2$1.class
├── ParseTaskUtils$2.class
├── ParseTaskUtils.class
├── ParseTextUtils.class
├── ParseTraverser.class
├── ParseURLConnectionHttpClient.class
├── ParseUser$1.class
├── ParseUser$10$1.class
├── ParseUser$10.class
├── ParseUser$11$1$1.class
├── ParseUser$11$1.class
├── ParseUser$11.class
├── ParseUser$12$1$1.class
├── ParseUser$12$1$2.class
├── ParseUser$12$1.class
├── ParseUser$12$2.class
├── ParseUser$12.class
├── ParseUser$13.class
├── ParseUser$14.class
├── ParseUser$15.class
├── ParseUser$16$1$1.class
├── ParseUser$16$1$2.class
├── ParseUser$16$1.class
├── ParseUser$16.class
├── ParseUser$17.class
├── ParseUser$18.class
├── ParseUser$19.class
├── ParseUser$2.class
├── ParseUser$20.class
├── ParseUser$3.class
├── ParseUser$4.class
├── ParseUser$5.class
├── ParseUser$6.class
├── ParseUser$7.class
├── ParseUser$8$1$1.class
├── ParseUser$8$1.class
├── ParseUser$8.class
├── ParseUser$9$1.class
├── ParseUser$9.class
├── ParseUser$State$Builder.class
├── ParseUser$State.class
├── ParseUser.class
├── ParseUserController.class
├── ParseUserCurrentCoder.class
├── ParseWakeLock.class
├── PointerEncoder.class
├── PointerOrLocalIdEncoder.class
├── ProgressCallback.class
├── ProxyService.class
├── PushHistory$Entry.class
├── PushHistory.class
├── PushRouter.class
├── PushService$1.class
├── PushService$ServiceLifecycleCallbacks.class
├── PushService.class
├── PushType.class
├── RefreshCallback.class
├── RequestPasswordResetCallback.class
├── SaveCallback.class
├── SendCallback.class
├── ServiceUtils.class
├── SignUpCallback.class
├── TaskQueue$1.class
├── TaskQueue$2$1.class
├── TaskQueue$2.class
├── TaskQueue.class
├── TaskStackBuilderHelper.class
├── WeakValueHashMap.class
└── http
├── ParseHttpBody.class
├── ParseHttpRequest$1.class
├── ParseHttpRequest$Builder.class
├── ParseHttpRequest$Method.class
├── ParseHttpRequest.class
├── ParseHttpResponse$1.class
├── ParseHttpResponse$Builder.class
├── ParseHttpResponse.class
├── ParseNetworkInterceptor$Chain.class
└── ParseNetworkInterceptor.class
Note that there are some .class
files included in ParsePush.jar
that are also included in Parse-1.10.2.jar
.
from parse-sdk-dotnet.
Yes, it's intended that ParsePush.jar
to only contain the minimum amount of classes that allows the Unity SDK to receive a push notification. You will not need Parse-1.10.2.jar.
from the Android SDK. Or to be precisely, adding both ParsePush.jar
and Parse-1.10.2.jar.
will break the app.
When you only use ParsePush.jar
what's the error shown in ADB LogCat after the Unfortunately, <app> has stopped.
message is shown?
Sorry for the inconvenience.
from parse-sdk-dotnet.
Thanks for the response @hallucinogen .
I haven't seen any output using the usual adb logcat -s "Unity"
command, but I can try it again.
Note, however, that my application also uses Parse to retrieve application data from Parse Core (ParseQuery, etc.). In this case looks like removing Parse-1.10.2.jar
would not be the way to go.
If I keep Parse-1.10.2.jar
on the project without the ParsePush.jar
, the application runs perfectly, despite of the AndroidJavaException: java.lang.ClassNotFoundException: com.parse.ParsePushUnityHelper
error that is new and is bothering me.
from parse-sdk-dotnet.
If you use the Unity project and write your code in C#, you can remove Parse-1.10.2.jar
and just use Parse.dll
inside Assets/Parse
. Take a look at our starter project: https://github.com/ParsePlatform/Parse-SDK-dotNET/tree/master/Parse.StarterProjects/CSharp/ParseUnityPushSample (or download it with the exact .dll
here https://parse.com/downloads/windows/ParseUnityPushSample-CSharp/latest)
from parse-sdk-dotnet.
Thanks @hallucinogen.
My current project structure mimics the ParseUnityPushSample
project, it can be built and deployed to the android device.
However, now I'm getting the following error:
AndroidJavaException: java.lang.ClassNotFoundException: com.parse.ParseInstallation
I/Unity (10466): at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <filename unknown>:0
I/Unity (10466): at UnityEngine.AndroidJNISafe.CallStaticObjectMethod (IntPtr clazz, IntPtr methodID, UnityEngine.jvalue[] args) [0x00000] in <filename unknown>:0
I/Unity (10466): at UnityEngine.AndroidJavaObject._CallStatic[AndroidJavaObject] (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
I/Unity (10466): at UnityEngine.AndroidJavaObject.CallStatic[AndroidJavaObject] (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
I/Unity (10466): at UnityEngine.AndroidJavaObject.FindClass (System.String name) [0x00000] in <filename unknown>:0
I/Unity (10466): at UnityEngine.AndroidJavaClass._AndroidJavaClass (System.String className) [0x00000] in <filename unknown>:0
I/Unity (10466): at UnityEngine.AndroidJavaClass..ctor (System.String className) [0x00000] in <filename unknown>:0
I/Unity (10466): at Redstone.Common.Parse.Impl.Push.ParsePushAndroidProxy.GetInstallationStringValueForKey
The C# code the invokes this native code is as follows:
class ParsePushAndroidProxy
{
public void SubscribeInstallationToChannel (string channel)
{
if (Application.platform == RuntimePlatform.Android) {
// Obtain a reference to the 'Parse' class.
// http://www.parse.com/docs/android/api/
using (var parsePushClass = new AndroidJavaClass ("com.parse.ParsePush")) {
if (parsePushClass != null) {
parsePushClass.CallStatic ("subscribeInBackground", channel, null);
}
}
}
}
public string GetInstallationStringValueForKey (string key)
{
if (Application.platform == RuntimePlatform.Android) {
// Obtain a reference to the 'ParseInstallation' class.
// http://www.parse.com/docs/android/api/
using (var parseInstallationClass = new AndroidJavaClass ("com.parse.ParseInstallation")) {
if (parseInstallationClass != null) {
// Obtain a reference to the 'currentInstallation' instance.
AndroidJavaObject currentInstallation = parseInstallationClass.CallStatic<AndroidJavaObject> ("getCurrentInstallation");
// check whether the current installation contains the 'language' key.
bool containsLangKey = currentInstallation.Call<bool> ("containsKey", key);
if (containsLangKey) {
// retrieve and return the current language value.
string value = currentInstallation.Call<string> ("get", key);
return value;
}
}
}
}
return null;
}
public void SetInstallationStringValueForKey (string key, string value)
{
if (Application.platform == RuntimePlatform.Android) {
// Obtain a reference to the 'ParseInstallation' class.
// http://www.parse.com/docs/android/api/
using (var parseInstallationClass = new AndroidJavaClass ("com.parse.ParseInstallation")) {
if (parseInstallationClass != null) {
// Obtain a reference to the 'currentInstallation' instance.
AndroidJavaObject currentInstallation = parseInstallationClass.CallStatic<AndroidJavaObject> ("getCurrentInstallation");
// set the language key value.
currentInstallation.Call ("put", key, value);
currentInstallation.Call ("saveInBackground", null);
}
}
}
}
}
Looks like removing the Parse-1.10.2.jar
and just using Parse.dll
inside Assets/Parse caused the java.lang.ClassNotFoundException:
errors to occur.
from parse-sdk-dotnet.
That's very interesting. Yes, ParsePush.jar
doesn't have ParseInstallation
. You can directly call this from C#
var installation = ParseInstallation.CurrentInstallation;
var val = installation[key];
Can try it and see if it works with you (and your requirement)
from parse-sdk-dotnet.
Thank you for your feedback. We prioritize issues that have clear and concise repro steps. Please see our Bug Reporting Guidelines about what information should be added to this issue.
Please try the latest SDK. Our release notes have details about what issues were fixed in each release.
In addition, you might find the following resources helpful:
- Documentation: https://www.parse.com/docs
- Google Groups: https://groups.google.com/forum/#!forum/parse-developers
- Stack Overflow: http://stackoverflow.com/tags/parse.com
from parse-sdk-dotnet.
Thanks for the reply @hallucinogen.
I replaced my native plugins (iOS and Android) in favor of the C# API, e.g.:
public override void SubscribeInstallationToChannel (string channel)
{
try {
var installation = ParseInstallation.CurrentInstallation;
installation.AddUniqueToList ("channels", channel);
installation.SaveAsync ();
} catch (Exception ex) {
Debug.LogException (ex);
}
}
public override string GetInstallationStringValueForKey (string key)
{
try {
var installation = ParseInstallation.CurrentInstallation;
if (installation.ContainsKey (key))
return installation[key] as string;
} catch (Exception ex) {
Debug.LogException (ex);
}
return null;
}
public override void SetInstallationStringValueForKey (string key, string value)
{
try {
var installation = ParseInstallation.CurrentInstallation;
installation [key] = value;
installation.SaveAsync ();
} catch (Exception ex) {
Debug.LogException (ex);
}
}
However, I'm still getting the following error (right on the Unity Editor Console).
get_bundleIdentifier can only be called from the main thread.
Constructors and field initializers will be executed from the loading thread when loading a scene.
Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.
I also tried invoking such methods using a MainThreadHelper
class (that invokes actions in a MonoBehaviour Update()
loop). So this looks like ParseInstallation
still does not work with my Unity version. I'm using Unity 5.2.0f3 and Parse 1.6.0. I'll try to install Unity patch 5.2.1p1
...
from parse-sdk-dotnet.
I updated Unity to 5.2.1p1
, no luck. I still get the:
get_bundleIdentifier can only be called from the main thread.
Constructors and field initializers will be executed from the loading thread when loading a scene.
Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.
Maybe I should create another thread for this problem since it's not related to java.lang.ClassNotFoundException: com.parse.ParsePushUnityHelper
.
from parse-sdk-dotnet.
I tried downloading previous versions of the Parse Unity SDK (1.5.5, 1.5.4, 1.5.3, 1.5.2, 1.5.1).
The previous versions does not have the can only be called from the main thread.
error, however if I look in the _Installation
entity in the Parse dashboard the timeZone
column isn't filled.
I'm really having a hard time using Parse and Unity5.
The only working solution I've found so far was using the Android SDK and invoking methods through JNI because the UnitySDK does not work at all (every released version have different bugs).
Nonetheless, even though I get the above issues working, AFAIK I'll have to write an Android native plugin again in order to open/track the app when the push notification is touched.
E.g.:
public class AppParseReceiver extends ParsePushBroadcastReceiver {
public static final String LogTag = "Unity";
@Override
public void onPushOpen (Context context, Intent intent) {
ParseAnalytics.trackAppOpenedInBackground (intent);
Intent i = new Intent (context, UnityPlayerNativeActivity.class);
i.putExtras (intent.getExtras());
i.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
It's really hard to have things working.
from parse-sdk-dotnet.
Sorry for the inconvenience. This seems like a valid bug. We'll try to fix it and let you know how it goes.
from parse-sdk-dotnet.
Hi @eduardocoelho, we have fixed the issue in #15 and the fix will be included in 1.6.1. We'll try to build 1.6.1 SDK as soon as possible. Feel free to reopen the bug if the problem persists.
from parse-sdk-dotnet.
Hey guys -
I am having this issue with Unity 4.6.9p2 but the latest SDK requires Unity 5.2.3. Is there any workaround for this older version of Unity?
from parse-sdk-dotnet.
@deekpyro Funny that you mention it, we actually dropped support for unity 4.x because push was not working on either version with IL2CPP.
IIRC, There's nothing that stops the SDK from working if you want it to work on Unity 4.x, at least in android-land. Feel free to compile your own version of the SDK and use that.
from parse-sdk-dotnet.
Related Issues (20)
- Parse .NET SDK doesn't work as expected for heroku server HOT 1
- Parse .NET Standard NuGet bounty ... HOT 2
- Allow Custom Object Id HOT 1
- My Winform app can not work with self-signed SSL HOT 1
- saveEventually offline saving feature not implemented for Unity dotnet HOT 1
- [v2.0.0-develop-1][Xamarin] User SignUp HOT 4
- Ability to compile dotNET SDK within Unity HOT 4
- .NET client not able to connect to parse-server anymore HOT 1
- Readme improvements for Xamarin clients
- Preventing initialization exceptions in Xamarin client HOT 1
- How to implement offline storage? HOT 2
- The name 'ParseCloud' does not exist in the current context HOT 2
- Await _parseClient.GetCurrentUser is null after login HOT 1
- I can't Load a scene through SceneManager when I use the Async Parse Method
- Error: ArgumentException: Input JSON was invalid. HOT 1
- ParseClient.Instance.GetCurrentUser() returns null when closing and restarting the app
- Add auto-release HOT 4
- The automated release is failing 🚨 HOT 1
- The automated release is failing 🚨 HOT 3
- Instant exceptions when building to WebGL on Unity. HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from parse-sdk-dotnet.