I am pretty sure this question might seem silly but will throw it anyway.
I have started playing around with Bluemix and its fabulous Push, Data, Analiytics and more services. The main point is to develope an Android application leveraging these services. The problem is that I haven't found consistency in the official documentation.
For instance,
Here you'll see that it makes use of some "local" (the download link can be found on the top of that page so that you can copy them into you lib folder) libraries. The push IntentService is com.ibm.mobile.services.push.IBMPushIntentService.
On the other side, in this official sample code you will notice that the IntentService is com.ibm.mobilefirstplatform.clientsdk.android.push.api.MFPPushIntentService.
I hope I have explained my point on this issue.
Both pages seem to be up-to-date so, my dumb question is, what is the difference? and which SDK should I use?
The first link you referenced is for the sun-setting, deprecated 1st generation of Moblie Cloud services on Bluemix, AKA MBaaS. The getting started documentation for MBaaS will be removed shortly. You can see the recent deprecation announcement here.
The sample you link is the correct sample for the 2nd generation, and most recent, versions of IBM MobileFirst Services (IMF). You can find the appropriate documentation for Push Notifications here. You'll notice, all the docs are now hosted on the Bluemix docs page, instead of mbaas-gettingstarted...
Apologies for any confusion this has caused.
Related
Background
I was recently tasked to work on an SDK that Android developers could use via simple dependency (got this working for Jitpack&Github, here).
One of the tasks I was given is to use Firebase for remote-config and Analytics (and maybe Crashlytics too), to be able to gather statistics and have some control of it using the cloud.
The problem
All tutorials, articles and documentations (example here) that I see of Firebase are for Android apps, and so the preparation itself requires a package-name of the app to be set.
This is impossible for an Android library that is supposed to be used as an SDK, as it's meant for many apps, each has its own package name.
What I've tried
I tried to ask Firebase support about this, but they told me they can only talk about Android apps, and gave me a Github link (here), probably hoping I could get something out of it.
I also tried to ask on reddit (here), but nobody knew the answer to this.
Looking at the list of available, official SDKs (here), I think such a thing might be possible if I register as if it's a website (or web-application), and then in code I would reach it as a website (using REST API on Retrofit), but not sure if there is a better way, whether it will work, and whether it's even according to the rules of using Firebase (I think should be ok).
There might be a way to use the C++ library that Firebase offers, too, but this would probably require a lot of adjustments.
Seeing that this might not be offered natively, I even made a request about it., here.
The questions
Is it possible to use Firebase inside Android libraries? As an SDK? Is it according to the rules of Firebase?
How do I do it? Is there perhaps a library for this? Maybe a general Java library ? I guess I should also be able to make it focus on my SDK's classes and functions, and ignore what's on the app itself.
If there is no library, where can I find the various functions that are available for the various services, so that I would implement them?
I've been looking for a way to send push notifications to Android, iOS and Windows phone devices. I've come across the Parse4cn1 library. This library uses Parse. However i saw on the Parse site that they will retire soon. I have the following questions regarding the Parse4cn1 library and the retirement of Parse.
Does the Parse4cn1 library still work after Parse's retirement?
Do i need to setup my own open source Parse server to support the push notifications and when i do this does it also support push notifications for Windows Phone? (http://blog.parse.com/announcements/parse-server-push-notifications/ says it doesn't but i'm not entirely sure.)
Kind regards,
R Visser
See this related SO question.
In any case, parse4cn1 will not support features that are not available in Parse Server. As far as I know, push is currently only supported for Android and iOS by Parse Server. So when parse4cn1 is updated, it will support those. However, I've not scheduled that update yet. Feel free to chip in if you have the time/resources to update the library and issue a pull request. I'll be glad to review and merge it.
By the way, I recently came across OneSignal which claims to offer free push notification on a wide range of platforms. I have my reservations though as they apparently sell your data and unspecified device info to third parties in return for the free push services. I'm yet to do a full evaluation so don't take my word for it. Have a look yourself and decide if it's interesting to you.
I hope this helps.
I've an app in Google Play, today I received a mail from Google saying that:
Google Play warning: You are using an unsafe implementation of
X509TrustManager
It says something about the SSL certificate issues and a way to solve the issue.
I'm asking this question because of curiosity,
Actually what is this warning all about ?
I'm not using any network related activities in my app (it's a local database driven app), so why this warning occurred for my app?
More Details:
My app was built using Appcelerator Titanium and google says this implementation is in ti.modules.titanium.network.NonValidatingTrustManager;. I'm sure that I never used such a class in my code.
Actually what is this warning all about ?
You should have been linked to this page, which explains what it is all about. In a nutshell, Google is scanning apps for people who screw up SSL, such as blindly accepting all certificates as valid.
I'm not using any network related activities in my app (it's a local database driven app), so why this warning occurred for my app?
Because something else in your APK has done this. In the case of this developer, it was a library.
My app was built using Appcelerator Titanium and google says this implementation is in ti.modules.titanium.network.NonValidatingTrustManager;. I'm sure that I never used such a class in my code.
You may not have used it directly. However, something else is using it. Or, perhaps it is there because it is just part of the overall Titanium framework and remains in your APK.
Appcelerator is tracking this issue on JIRA here:
https://jira.appcelerator.org/browse/TIMOB-20431
We also put out a blog post with information here:
http://www.appcelerator.com/blog/2016/02/google-security-alert-unsafe-implementation-of-the-interface-x509trustmanager/
The email speaks about a May 17th deadline for newly submitted (!) apps and updates. We will have a fix and instructions ready in time.
Read this:
http://docs.appcelerator.com/platform/latest/#!/guide/SSL_Certificate_Store_Support_for_HTTP_Clients
It all about the Google pushing everybody to use https. If you are using into your app the Titanium.Network.createHTTPClient object, then you will have to implement that with this:
var certificateStore = require('ti.certificatestore').
The module can be find here: https://github.com/appcelerator-modules/ti.certificatestore
The problem is not related to the js code. It is inside Titanium sdk and no matter do you use some fucntions or not.
I think the possible solution is to rewrite class
https://github.com/appcelerator/titanium_mobile/blob/bc85170157d3bebc5de1d61a9fe6e34bce84a8c9/android/modules/network/src/java/ti/modules/titanium/network/NonValidatingTrustManager.java
We should create safe implementation of X509TrustManager
I just got the same message on a my apps. Same module specified as the OP.
ti.modules.titanium.network.NonValidatingTrustManager;
A few points from my research so far:
http://docs.appcelerator.com/platform/latest/#!/guide/SSL_Certificate_Store_Support_for_HTTP_Clients does discuss the problem and provide examples for iOS and Android. However:
the examples are different for each OS and require creating or downloading modules (the Android one is a couple years old now)
the docs specifically say these methods are no longer supported and
You should instead use the HTTPClient's securityManager property to
implement support for SSL Certificate Stores.
the SecurityManagerProtocol docs, unfortunately, have no examples. The few references I could find (http://docs.appcelerator.com/platform/latest/#!/api/Modules.Https) require the use of modules.https which is a PAID module only.
I'm left with the question: If Google rejects all Appcelerator apps with this particular issue, and only developers with paid subscriptions get an officially-supported solution, does this mean Appcelerator 'community edition' is officially incompatible with Google Play? Is Appcelerator planning to support HTTPS officially for it's community members?
Anyone from Appcelerator care to comment, please?
Thank you,
David
Where can I find the SDKs (supporting .jar files) for the "bms-samples-android-bluelist" Sample applications provided by Bluemix? While searching for this I got the below thread. The page is not redirecting to the right page:
URL-> https://www.ng.bluemix.net/docs/starters/mobilefirst/gettingstarted/android_existingproject.html#gettingstarted
Note: I'm using in Eclipse
For that document try changing the "Docs customized for type" field in the top right from Java to Android. This is a known issue and will hopefully be sorted out shortly, but the Android version of the doc has working links.
For the SDKs themselves please take a look at the Bluemix Mobile Services github as they are all hosted there. Here's a link to the Bluemix Service Android Core SDK to get started.
Hope this helps
I am looking for a way to push updates from my node.js API to my android app. I'd like to find the easiest acceptable way to do it.
The GCM Client Helper library looks easy but appears to be deprecated. Is it a really bad idea to use it?
The suggested replacement seems significantly more complicated. Is there a way around this complication?
Thanks for your help!
As with any deprecated solution, it could stop working at any time and you'd be forced to rewrite your application to move to the non-deprecated solution. In this case, THe GCM Client Helper library has been deprecated for almost 2 years and I would not consider it for any new projects at this point, particularly since it is tied to ClientLogin, which, per the deprecation policy, is no longer required to work at all after April 20, 2015.
Given that, I would strongly recommend using the Google Play Services GCM API. Note that the replacement training you linked is a very full featured, detailed form. You may find the documentation on GoogleCloudMessaging to be a more minimal example of what is needed (frankly, not any more than the old model).