Was this helpful?

About Edge API Services for App Developers

What services are provided?

Apigee Edge consists of the API, Analytics, and Developer Services that together provide a comprehensive infrastructure for API creation, security, management, and operations, as well as powerful backend services for developing client apps.

API Services includes a cloud-based backend as a service (BaaS). This provides app developers with access to a flexible data store and features such as social graphs, geolocation, user management, push notifications, and performance monitoring.

For details on all the features, see Features for app developers.

I'm an app developer. How can I use API services?

You can store data for use by your app and more easily incorporate features that are common to apps.

The free data store you receive (which is based on Cassandra database technology) is a great place to store data that needs to scale well as your app's usage grows. Your app can create, read, update, and delete data using RESTful APIs.

Using these services, your app can also incorporate valuable features to manage user data, social graphs, push notifications, performance monitoring, and more. These are also available via REST, either directly or through one of the language-specific SDKs. For more on the SDKs, see App Services SDKs. For more about the RESTful API, see REST Endpoints.

What's the difference between the API Services BaaS and Usergrid?

Usergrid is an open source project designed to provide a highly-scalable data platform for mobile applications. The BaaS available through API Services is an Apigee product based on the Usergrid open source project. API Services includes additional features, including push notifications, that are not available in Usergrid.

The BaaS is hosted by Apigee, whereas Usergrid provides source code that you can download and customize.

Usergrid's history as the core of the BaaS means that you'll still find mentions of Usergrid in Apigee documentation, samples, and elsewhere. For example, the URL for accessing your Apigee data store is still api.usergrid.com. If you have a question about a particular reference to Usergrid, please don't hesitate to comment on the documentation content using the comment feature.

You can download Apigee SDKs that function with both the API Services BaaS and Usergrid. Find out more about the SDKs at App Services SDKs. You can get the full open source distribution of Usergrid on Github.

How do I sign-up for the BaaS?

You will need a free Apigee developer account to use the BaaS available with Edge API Services. For more information, see Creating an Apigee Account.

Once you're signed-up, check out Using a Sandbox Application for tips on using your account's included sandbox application, and Creating a New Application with the Admin Console for information on how to create additional applications.

Are there SDKs?

Yes! You can access the services from your mobile or Web app through SDKs available for the following platforms:

  • Javascript/HTML5
  • iOS
  • Android
  • Node.js
  • Ruby
  • .NET

To download an SDK, visit our SDK download page.

Can collections be deleted?

Currently, collections are immutable, but you can remove all of the data entities from a collection. For more information see Default Data Entities.

About push notifications

Is there a limit to how many push notifications I can send at one time?

No, but for best performance we suggest you limit the number of push notifications to 10,000. If you need to send the same message to more than 10K devices, we suggest that you break up up the devices into batches (for example, use groups), and send each batch. You can potentially speed up the delivery of all the messages by sending notifications in parallel.

I’ve got millions of devices to send notifications to. What’s the best way to send the notifications?

To drive the most engagement, our suggestion is to send highly targeted push notifications to small groups of individuals. Also, scheduling the push notifications to be sent at certain times (for example, lunchtime, before work, or just after work) will increase the effectiveness of the notifications. You can schedule your push notifications throughout the day based on your customers' geographic locations.

What are the state stages for a notification message?

A push notification passes through the several states during its life. You can get information about a notification's current state from the admin portal, on the Message History panel.

The possible states are listed in the following table:

State Description
CREATED The notification was created in the system.
SCHEDULED The notification has been scheduled for delivery.
STARTED The system has started to send the notification.
FINISHED The system has finished sending the notification.
EXPIRED The notification time expired. The notification will no longer be sent.
CANCELED The notification was canceled and will not be sent.
FAILED The system was unable to send the notification.
The normal flow from state to state is as follows:

About app monitoring (formerly Mobile Analytics)

What happened to Mobile Analytics?

Apigee's Mobile Analytics product has now been fully integrated into API Services as app monitoring. All of the features of Mobile Analytics are fully available using the SDKs for iOS and Android.

For more information on using app monitoring features with the SDK, see Monitoring app usage data.

Why don't I see a crash report after experiencing a crash?

  • The app wasn't re-started after the crash. Crash reports are uploaded when the app is re-started after a crash.
  • iOS The app was launched by Xcode. Crash reporting is disabled when the app is launched by Xcode because the debugger interferes with crash detection.

Why don't I see errors reported?

  • iOS or JavaScript The app isn't reporting any errors. Apigee-provided macros (in iOS) or functions (in JavaScript) must be used to log errors.
  • iOS You can turn on the monitoring option (using the ApigeeMonitoringOptions class) by setting autoPromoteLoggedErrors to YES. That way, any NSLog statement whose message begins with "error:" will automatically be identified as an error and reported as such.
  • iOS If there are other crash reporting frameworks running in your app, you must disable them. Only one crash reporting framework/library can be active in your application.
  • iOS Our crash detection functionality only supports Objective-C. We cannot generate crash reports for crashes occuring in C or C++ calls.

I'm not seeing anything show up in the portal. How can I tell if the client SDK is sending any data to the server?

  • Look at the console in the developer tool you're using to see what the log messages indicate.
  • iOS You can turn on the monitoring option (using the ApigeeMonitoringOptions class) by setting showDebuggingInfo to YES. That way, you can see detailed debugging output in the Xcode console.

Why don't I see any data for my networking calls?

  • Android You must make some minor code changes to allow our Android SDK to "see" the network activity.
  • iOS If your app is using something other than NSURLConnection or NSURLSession (iOS 7), you must make some minor code changes to allow our iOS SDK to "see" the network activity.

How much lag time is there between the activity on the device and when it's displayed in the portal?

  • Crash reports are uploaded to the server when the app is re-started.
  • App usage data is uploaded to the server when the app is started.
  • Logging and network activity is uploaded to the server in intervals. That interval defaults to 60 seconds.
  • Once data is received by the server, it can take another 1 or 2 minutes before it's displayed in our portal.

What do I need to build the iOS SDK from source?

Xcode 5.0 (or later). Xcode 5 requires Mac OS X Mountain Lion (or later).

What do I need to integrate the iOS SDK into my iOS application?

  • Xcode 4.x (support for iOS 5.0 or later). Xcode requires Mac OS X.
  • Add the required frameworks to your project.
  • Add the required linker flags.

Can I get the source for your SDK?

Absolutely! It's available on github.

Add new comment

Provide your email address if you wish to be contacted offline about your comment.
We will not display your email address as part of your comment.

We'd love your feedback and perspective! Please be as specific as possible.
Type the characters you see in this picture. (verify using audio)

Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated. Not case sensitive.