[Paid Software Announcement and Discussion] klinkdawg24:
Frequently Asked Questions

Frequently Asked Questions

1.) Push Notifications

I am just going to say this now, before anyone asks: Push notifications will not be coming to Talon unless something changes with the Twitter APIs. I have created "Talon Pull" with is simply an always on, listening/streaming service that will receive new tweets from Twitter whenever your Twitter handle is included. To read more about this option, look at the "Talon Pull" section below the "Reasons" section.

Reasons

This will be the more technical part of this post, if you don't want to read and understand it, then you will have to just accept my answer from above. If you don't accept that I know what I am talking about... Then by all means, read on, I will try to keep it as simple as possible.

To access Twitter, they have provided us with the REST APIs (currently version 1.1). These APIs allow developers to communicate with Twitter in real time by just submitting requests to get data from the network. They make it relatively simple - if you know what your doing - to obtain the data that they allow you to get and store, but there are plenty of limitations to these APIs, which make sense: Twitter is a completely free service and make their money off of advertisements. They want people to use their official Twitter products (such as the web or their own Android app) to access their services because they are able to place advertisements in them and that is the only way they make money. So they just aren't going to make some things available for 3rd party developers.

One of those things is their push notification system. As I said before, they allow us to access their services with these REST APIs, but they also have a Streaming API available so that a 3rd party service, such as this one, could be "always connected". Sounds great right? Maybe, maybe not. More testing probably needs to go into it, because it is very new in Talon. For the past few weeks though, I can say that it doesn't seem to take up much more battery than sycning on an intervol does. So try it and let me know. I have done the best I can to optimize this service, but if you want to know more about it, read below in the "Talon Pull" section

What these streaming APIs should be used for is a server side interaction that would then connect to GCM (Google Cloud Messaging) and send push notifications from there. I would love to say I am working on something like this, but it isn't possible for a developer like me. I don't have the time, resources, or knowledge to set up a complex server like this. The knowledge I could get, but I am a 20 year old kid, working off of this 1 MB/sec internet connection while being a full time college student at the University of Iowa. I wouldn't be able to handle the upkeep of the system like this or the traffic. I just don't have the backend necessary for this type of thing, and there aren't many developers who do. So push notifications from the server side? Way out of the question.

That leaves only one thing to do: wait. Maybe Twitter will open up some kind of push notification service to it's developers, but I wouldn't count on that. The ideal thing for them to do would be to set up their own GCM server for us to communicate with, but I don't see that as being likely at all because of the advertising. That would take away one of the main draws for their app, leaving it with almost nothing that 3rd party developers can't do. For now though, "Talon Pull" seems to be working well and I would encourage you all to try it out. Battery seems to be fine, the one drawback is that you must be connected to a datasource right when the interaction happens or it won't be saved or shown.

Talon Pull

- My solution/workaround

As I said before, this is NOT push notifications. Push notifications are sent to your device to notify you from some kind of server. They aren't always on, and only turn on when your device receives the info from the web service.

Talon Pull on the other hand, uses Twitter's Streaming API to just create an "always on" service to be constantly listening for and streaming tweets that contain your Twitter Handle. The way this works is that you are signed in with your API keys after you turn on the option to enable Talon Pull. I then just create this "listener" that Twitter's servers will send new tweets to. Luckily, they will take care of most of the filtering of those tweets on their end, to reduce the load as much as possible on your device (because before the filtering, it literally will receive every single public tweet that is happening. It was amazing when I first flipped and saw the tweets flowing over my log haha). So we filter it down to as few of tweets actually reaching your device as possible, then I start broadcasting the notifications when you receive the new ones.

Overall, it is a relatively simple process, the problem with it though, you have probably already realized, you have to be constantly connected with a data service or the app won't know when to receive the new tweets. Obviously that is the part that is going to end up taking the battery (if it does), not "bloated" or "un-optimized" code as some of you I sure believed. So far though, through my testing, it doesn't seem to have a very big impact on battery overall, but I suppose that it potentially could if you are using Twitter that much more than I do.

If there was a better way, I wish I could find it. I think that this is the method that most 3rd party services use to send you those fake "push notifications". So there ya have it, hope you learned something. It works well and it is the only way to get a lot of information like who favorited or retweeted your statuses

Conclusion

Thanks for the read, if you made it all the way, hope that gives you an idea as to why push notifications just aren't even an option at this point and what my solution to that problem has been, even if it is not ideal.﻿ It works, and it seems to be working quite well for me.

So just know: "Talon Pull" isn't quite the same as push notifications, but it is as close as you are going to get and is working better for me than I would have ever imagined. Enjoy!

2.) Translucency

Why aren’t my status bar and navigation bar translucent like in all of the screenshots?!?

This is an Android 4.4 KitKat feature only. Get a new phone/ROM if you want it.

3.) Theming Support and Limitations

We have created a pretty powerful theme engine for Talon and EvolveSMS this time around, but it isn't without its limitations.

The main app color will always be orange. Don't ask to change it. That isn't something I can theme dynamically or read from an add on package, themers can change the orange glow on the in-line buttons (favorite, retweet, and send), but that is as much as your are going to get with that one.﻿

4.) Viewing users who "retweet" and "favorite" your statuses

This is another thing that isn't going to happen at this point. It isn't possible to get the user ID's or their names with the current version of the API's.

Maybe Twitter will open this up in the future, but I wouldn't get your hopes up.﻿For now, the best you will get is the numbers on them

The only way to get this information is through the use of "Talon Pull" and the Streaming API's. When you get a retweet or favorite, it will be put in the interactions drawer on the right side of any activities with drawers.The only way to get this information is through the use of "Talon Pull" and the Streaming API's. When you get a retweet or favorite, it will be put in the interactions drawer on the right side of any activities with drawers.

5.) Clearing the Cache

If you know much about caching in Android, then you may wonder why in the world I would want to clear it every time you switch themes.

The answer is pretty simple: to vastly improve the performance and the smooth scrolling in the app, I save the profile pictures according to the current theme's style, whether that is circle (like the "Talon" layout) or square (like the "Hangouts" layout). This preference is also available to themers in the add-on themes.

By caching them directly as circles, it alleviates the need to do it on the fly which could consume quite a bit of processing power on older phones and would just be a complete waste to render them like that every time.﻿

You may think it is a hassle, but you would be thanking me if you knew the difference it makes.

You can also view the current cache size and clear it manually from "Advanced Settings".﻿

6.) Battery Consumption

If you use Talon a lot throughout the day, it is going to take up battery, simple as that. I find that on a 30 min refresh intervol for the different timelines and manually going in and browsing/updating throughout the day, it takes about 4-5% of my battery. I would say this is pretty normal because there are days that Google+ takes up to 10% with just casual browsing.

If that isn't acceptable for you though, then there are a few things you can do to reduce battery consumption:

1.) Turn down the refresh interval on the timelines. This is the big one. It is those background services that are going to drain your battery.

2.) Turn off "Refresh on Startup".

3.) Turn off "Talon Pull" and "Live Streaming"

4.) Don't have it sync the second account's mentions

And if all else fails... Get off Twitter and do something productive for awhile =D haha any app that accesses the internet and refreshes as much as a Twitter client is inherently going to use more battery in the background. There are ways to reduce it, but not always ways around it!

7.) Custom ROMs Immersive Mode

My custom ROM has "Immersive Mode" and Talon doesn't seem to play nice with it! What's up with that?!

The way that immersive mode works in your ROMs currently isn't so hot unfortunately. There is a reason Google didn't put it into the whole system because app developers would have problems implementing the "translucency" with conflicting system stuff.

Not to fret to much though, I was able to get things working smoothly with it in Talon. The problem was that my ListView's are expanded through the different system bars. This can be a big problem if you try to switch to "Immersive" in the middle of doing something in the app. You will notice the margins get all wanky on the top and the bottom of your lists.

It can be easily solve though by just restarting the app by swiping it out of your recent apps screen. Sorry, but that is the best I am going to be able to do here, Translucent bars an "Immersive Mode" just weren't meant to work together.