Coder Social home page Coder Social logo

Comments (15)

hallucinogen avatar hallucinogen commented on August 11, 2024

Hi Eduardo,

Have you tried only adding ParsePush.jar, and remove Parse-1.10.2.jar from your project?

from parse-sdk-dotnet.

eduardocoelho avatar eduardocoelho commented on August 11, 2024

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.

hallucinogen avatar hallucinogen commented on August 11, 2024

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.

eduardocoelho avatar eduardocoelho commented on August 11, 2024

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.

hallucinogen avatar hallucinogen commented on August 11, 2024

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.

eduardocoelho avatar eduardocoelho commented on August 11, 2024

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.

hallucinogen avatar hallucinogen commented on August 11, 2024

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.

parse-github-bot avatar parse-github-bot commented on August 11, 2024

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:

from parse-sdk-dotnet.

eduardocoelho avatar eduardocoelho commented on August 11, 2024

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.

eduardocoelho avatar eduardocoelho commented on August 11, 2024

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.

eduardocoelho avatar eduardocoelho commented on August 11, 2024

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.

hallucinogen avatar hallucinogen commented on August 11, 2024

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.

hallucinogen avatar hallucinogen commented on August 11, 2024

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.

deekpyro avatar deekpyro commented on August 11, 2024

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.

richardjrossiii avatar richardjrossiii commented on August 11, 2024

@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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.