General Troubleshooting
This page contains common issues integrating with the Fire TV Integration SDK.
- SDK logs are not generating on the device
- App is calling the SDK and generating SDK logs but no content appears in the Continue Watching Row
- The data integration service is not being called by the Fire TV system
- The SDK feature check is returning true but the device is not showing the Continue Watching Row
- The Continue Watching Row is not working as expected
- Handling scenarios where background processes end
SDK logs are not generating on the device
- Device is not supported
- Make sure you are using a supported device. Check with your Amazon contact for a list of device types currently supported.
- Device software is outdated
- If you are using a supported device, make sure that you have installed the latest software. Navigate to Settings > My Fire TV > About and then click Check for Updates.
- Artifact not included in app correctly
- If you are using a supported device and have the latest software, double check that you have the artifact included in your app correctly. For additional details, see Include the SDK in your app.
App is calling the SDK and generating SDK logs but no content appears in the Continue Watching Row
- Checkpoint #1 - Confirm feature is enabled
- Validate that your CustomerID is enabled for the Content Personalization feature by navigating to Settings > Preferences > Privacy Settings > Manage Sharing from Apps. If the Manage Sharing from Apps option is missing, contact your Amazon contact and provide your CustomerID and DSN.
- Checkpoint #2 - Confirm your app is allowlisted
- Confirm that your app is allowlisted by navigating to Settings > Preferences > Privacy Settings > Manage Sharing from Apps > Manage by App. If your app is not included:
- Make sure your app is installed on the device, this list only shows installed apps.
- Select Sync Amazon Content and wait up to 15 minutes before checking the list again.
- If the app is still missing from the list, reach out to your Amazon contact and provide your CustomerID, DSN, and the package name you are using for development.
- Checkpoint #3 - Confirm the feature is turned on
- Once you have confirmed your app is allowlisted, make sure you have enabled the feature by navigating to Settings > Preferences > Privacy Settings > Manage Sharing from Apps and setting the Share App Viewing and Content Info feature to ON.
- I still can’t find my app
- Confirm that you have met all of the following:
- are using a supported device with all of the latest updates
- have completed up to Get Started with the Fire TV Integration SDK - Step 4
- have confirmed feature enablement and app allowlisting in Checkpoint #3
- have confirmed that you are using a CDF ID that appears in your catalog file
If you’re still unable to see content appear in the Continue Watching Row, report a bug through your Amazon contact.
The data integration service is not being called by the Fire TV system
This capability has not yet been enabled but you must implement this as part of the integration. Amazon will validate the implementation internally.
The SDK feature check is returning true but the device is not showing the Continue Watching Row
Some devices may be capable of loading the SDK library but are not fully supported yet for the Continue Watching experience. The feature check only indicates if the library is available and does not guarantee feature availability. We recommend you still include calls to the SDK on device as these devices may be supported in the future. Your Amazon contact can share the list of current devices supporting the Continue Watching Feature.
The Continue Watching Row is not working as expected
See Troubleshooting.
Handling scenarios where background processes end
When foreground processes need memory, Android OS stops other processes to free up memory. However, the activity history stays in the activity stack. The next time the activity is started, it is launched using the original launch intent prior to when the process was stopped. The second, most up-to-date intent, occurs next using the onNewIntent()
callback.
Background information
Android's process flow
Knowing the process flow will help you understand how processes and intents are used by the OS.
- 3P app (Activity A) is started with a deeplink intent (Intent A).
ActivityA.onCreate()
is called, andgetIntent()
will yield Intent A.- Activity A is moved to the background, and the customer may use other apps and features.
- The Android low memory killer daemon (lmkd) stops Activity A to free up memory.
-
ActivityA.onDestroy()
is called and then the Activity A process is stopped.Important: After the Android OS stops the Activity A process, Activity A still remains in the activity stack, remembering the activity state, which includes the original launch intent. - Activity A starts later with a different use case, and a different intent (Intent B).
ActivityA.onCreate()
is called, butgetIntent()
will still yield Intent A.- If using a non-standard launch mode, such as
singleTop
,singleTask
, orsingleInstance
, Android OS will check if an activity already exists for a task, and will try to route the intent with theonNewIntent()
callback. - For standard launch mode, the you must create a new instance of the target task, and deliver the intent to that new instance.
- If using a non-standard launch mode, such as
ActivityA.onNewIntent()
is called next, with Intent B as the intent in the callback.
Saving states across instances
When a process ends in the background by Android OS, the system first calls onSaveInstanceState(Bundle)
so the activity can save state information to an instance state bundle. In onCreate()
during the next activity startup, a saved instance bundle can be used to indicate that the process is restarted after Android OS ends it, or if it is a newly started activity.
The activity won’t end to free up memory, but the process the activity runs in will be stopped. When recreating an activity, the saved instance can be recovered from the bundle.
For more information, see the following:
Using a previous intent, such as for a deeplink, does not work
If a deeplink does not seem to work, it may be because a previous intent, rather than the latest intent, has been chosen. There are two ways to fix this issue.
Option 1
The first option is to use the most up-to-date intent that’s received from your app. If deeplinks don't show the correct information, it may be because you aren't using the most recent intent. All intents other than the most recent are dropped or ignored by the system.
For more information, see onNewIntent()
.
Option 2
Instead of option 1, you can use a dedicated activity to receive and forward the deeplink. The advantage of this is that after processing the deeplink, the activity can call finish()
, removing it from the activity history. The next time it’s started, it will contain the most up-to-date intent when using getIntent()
from lifecycle callbacks like onCreate()
. Then the system won’t need to wait for an onNewIntent()
callback.
Last updated: Oct 25, 2024