不,您不需要任何后端来实现此目的。每个经过身份验证的用户都可以在应用程序本身中拥有自己的流。以下是我在自己的应用程序中使用的代码 sn-p。
我假设用户正在关注这些用户。如果他们没有关注,那么他们将不会在他们的流中从他们那里获得任何推文。
如果您希望将某些用户的推文发送给所有人,而不管他们是否关注这些特定用户,那么您必须打开一个公共流。这不能在应用程序本身中完成,因此在这种情况下您将需要后端。在这种情况下,只需打开一个流实例,并且每当来自这些特定用户的推文到达时,都必须将该推文通知给应用程序的每个用户。
我希望我的解释清楚。
在此代码中,您只需过滤那些选定用户的推文。
ConfigurationBuilder config = new ConfigurationBuilder();
config.setJSONStoreEnabled(true);
config.setOAuthConsumerKey(Keys.TWITTER_KEY);
config.setOAuthConsumerSecret(Keys.TWITTER_SECRET);
config.setOAuthAccessToken(HelperFunctions.currentSession.getAuthToken().token);
config.setOAuthAccessTokenSecret(HelperFunctions.currentSession.getAuthToken().secret);
Configuration cf = config.build();
HelperFunctions.twitter = new TwitterFactory(cf).getInstance();
HelperFunctions.twitterStream = new TwitterStreamFactory(cf).getInstance();
HelperFunctions.twitterStream.addListener(listener);
// user() method internally creates a thread which manipulates TwitterStream and calls these adequate listener methods continuously.
HelperFunctions.twitterStream.user();
private static final UserStreamListener listener = new UserStreamListener() {
@Override
public void onStatus(Status status) {
// Filter your selected users here
System.out.println("onStatus @" + status.getUser().getScreenName() + " - " + status.getText());
}
@Override
public void onFriendList(long[] friendIds) {
}
@Override
public void onFavorite(User source, User target, Status favoritedStatus) {
}
@Override
public void onUnfavorite(User source, User target, Status unfavoritedStatus) {
}
@Override
public void onFollow(User source, User followedUser) {
}
@Override
public void onUnfollow(User source, User unfollowedUser) {
}
@Override
public void onDirectMessage(DirectMessage directMessage) {
}
@Override
public void onUserListMemberAddition(User addedMember, User listOwner, UserList list) {
}
@Override
public void onUserListMemberDeletion(User deletedMember, User listOwner, UserList list) {
}
@Override
public void onUserListSubscription(User subscriber, User listOwner, UserList list) {
}
@Override
public void onUserListUnsubscription(User subscriber, User listOwner, UserList list) {
}
@Override
public void onUserListCreation(User listOwner, UserList list) {
}
@Override
public void onUserListUpdate(User listOwner, UserList list) {
}
@Override
public void onUserListDeletion(User listOwner, UserList list) {
}
@Override
public void onUserProfileUpdate(User updatedUser) {
}
@Override
public void onBlock(User source, User blockedUser) {
}
@Override
public void onUnblock(User source, User unblockedUser) {
}
@Override
public void onException(Exception ex) {
}
@Override
public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId());
}
@Override
public void onDeletionNotice(long directMessageId, long userId) {
System.out.println("Got a direct message deletion notice id:" + directMessageId);
}
@Override
public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
System.out.println("Got a track limitation notice:" + numberOfLimitedStatuses);
}
@Override
public void onScrubGeo(long userId, long upToStatusId) {
System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId);
}
@Override
public void onStallWarning(StallWarning warning) {
System.out.println("Got stall warning:" + warning);
}
};