नहीं, आपको इस उद्देश्य के लिए किसी भी बैकएंड की आवश्यकता नहीं है। प्रत्येक प्रमाणीकृत उपयोगकर्ता के पास ऐप में स्वयं की स्ट्रीम हो सकती है। कोड स्निपेट निम्नलिखित है जो मैं अपने आवेदन में उपयोग कर रहा हूं।
मुझे लगता है कि उपयोगकर्ता उन उपयोगकर्ताओं का अनुसरण कर रहा है। यदि वे अनुसरण नहीं कर रहे हैं तो उन्हें अपनी स्ट्रीम में उनसे कोई ट्वीट नहीं मिलेंगे।
यदि आप कुछ उपयोगकर्ताओं से ट्वीट्स चाहते हैं तो इस तथ्य के बावजूद कि वे उन निश्चित उपयोगकर्ताओं का पालन कर रहे हैं या नहीं, तो आपको सार्वजनिक स्ट्रीम खोलनी होगी। यह ऐप में ही नहीं किया जा सकता है और इसलिए आपको उस मामले में बैकएंड की आवश्यकता होगी। उस स्थिति में धारा का केवल एक उदाहरण खोला जाना चाहिए और जब भी उन उपयोगकर्ताओं से एक ट्वीट आता है, तो ट्वीट को आपके ऐप के प्रत्येक उपयोगकर्ता को सूचित किया जाना चाहिए।
मुझे उम्मीद है कि मैं अपनी व्याख्या के साथ स्पष्ट हूं।
इस कोड में आपको केवल उन चयनित उपयोगकर्ताओं के लिए ट्वीट फ़िल्टर करना होगा।
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);
}
};
हां इसे विशिष्ट उपयोगकर्ताओं से नई ट्वीट्स के सभी ऐप उपयोगकर्ताओं को सूचित करने की आवश्यकता होगी भले ही ऐप उपयोगकर्ता उनका अनुसरण कर रहा हो या नहीं। – Orbit
फिर आपको बैकएंड की आवश्यकता है। क्योंकि उन उपयोगकर्ताओं को ट्वीट्स प्राप्त नहीं होंगे यदि वे उन उपयोगकर्ताओं का पालन नहीं कर रहे हैं। आपको स्ट्रीमिंग का उपयोग करके अपने बैकएंड सर्वर में सभी ट्वीट्स प्राप्त करना होगा और प्रत्येक प्रासंगिक ट्वीट पर पुश मैसेजिंग का उपयोग करके सभी उपयोगकर्ता को सूचित किया जाएगा। – sahu