2012-03-24 10 views
1

ユーザーが提供するデータを表示するFML、TWIなどのアプリケーションでは、「同意する」、「同意しません」、「好き」、「嫌い」などの提出をupvoteおよびdownvoteすることができます。Upvote Downvote login with without login

ユーザーは、アプリに何らかの手段でログインしていても投票することができます。匿名ユーザーは投票することができ、その投稿/エントリの投票を保存します。

パブリックユーザーが投票したときにサーバーデータベースの上向きまたは下向きの投票を増やすのに問題はありませんが、これらのアプリケーションはアプリ内でユーザーの投票を追跡してアップワードを何度も放置し続けることができません同じアイテムを表示して、その投稿に再び参加した場合にどのように投票したかを視覚的に示すことができます。

ユーザーが投票したアイテムと、登録/ログインしていないユーザーが投票する方向をサーバーに保存しません。

どのように私はこれを実装できますか?

ありがとうございました

答えて

0

各アイテムには正しいIDが必要ですか?それをあなたの投票と一緒にあなたのアプリに保存してください。あなたの店にIDが存在する場合、そのIDが投票できない場合は、投票を許可します。

+0

これは私が考えていたものです。はい、各商品にはIDがありますので、インストールした投票ごとにIDと投票の方向を保存する必要があります。これはローカルに保存する必要のある唯一のデータ形式ですが、保存するにはどのような方法が良いでしょうか?それはNSUserDefaultsのために少し過剰ですか?そして、ローカルのsqlite DBは2つの情報になるために船に乗っていますか?おそらくKEY:VALUE on ID:投票123456:はいそのようにしてif(objectForKey:ID) –

+0

私はデータベースを使用します。主にそれは非常にうまくスケーリングするからです。そして、もしあなたが多くのトランザクションを期待するなら、それは最善の方法でしょう。 NSUerDefaultsが少数(10未満)の場合は問題ありません。 –

+0

PostIDと投票に基づくローカルのSQLite DBを使って作業しています。投票状況に応じて、INSERT、UPDATE、DELETEを実行します。 (最初の投票、投票の変更、投票の削除)。ご協力いただきありがとうございます。答えとして –

2

各定格アイテムをアプリに保存する代わりに、各デバイスの一意のIDを作成し、その情報をサーバーに保存することができます。

NSUserDefaultsからユーザーIDをロードします。存在しない場合は、新しいユーザーIDを作成して保存します。

NSString *userID = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserID"]; 
if (!userID) { 
    CFUUIDRef theUUID = CFUUIDCreate(NULL); 
    userID = (__bridge_transfer NSString *)CFUUIDCreateString(NULL, theUUID); 
    CFRelease(theUUID); 
    [[NSUserDefaults standardUserDefaults] setObject:userID forKey:@"UserID"]; 
} 

編集:「どのように投票したかをユーザーに見せてください」という部分を見逃しました。とにかくローカルに保存する必要があります。

+0

あなたの答えをありがとう。私は誰がサーバー上で何に投票したのかを把握する必要はなく、現在の投票数はそのポストの両方向にあるだけです。この質問を取り巻く文脈は、ユーザーが以前にその投稿に投票したことを視覚的に見ることができ、さらに投票を増やすのを止めることができます。私は投票したすべての投稿の一意のIDと投票した方向をローカルに保存することができましたが、これはローカルに保存するのに最適な2つの小さな情報だからです。 –

+0

Matthiasは、通常の一意の識別子の代わりにAppleが使用することをお勧めしますか?ありがとう。 –