2

可能な限り簡単なユーザー エクスペリエンスを作成するために、Parse + Swift を使用してユーザーを匿名ユーザーとして受け入れることを使命としています。これを実現するために、Parse の匿名ユーザー関数を使用することを考えていました。その結果、次のコードを作成しました。

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    self.setupParse()
    // self.setupAppAppearance()

この最初のセクションでは、ユーザーを作成し、プロセスのこの時点で objectId が nil であるかどうかを確認します (通常、ユーザーが最初にアプリケーションを開こうとしたときに true になります)。

    var player = PFUser.currentUser()
    if player?.objectId == nil {

    }
    else
    {
        println(player!.objectId)
    }

objectId がある場合 (以前にこの道をたどり、匿名ユーザー オブジェクトを保存したことを示します)、それをコンソールに投げて、それが何であるかを確認し、Parse ユーザー オブジェクトで確認できるようにします。クール - 今のところ良い。

次に - オブジェクトが nil かどうかを再度確認します。今回は、匿名ログインを実行するかどうかを決定します。この匿名ログイン アクション以外に、匿名ユーザーを生成するために使用するものはありません。

    if player?.objectId == nil {
        PFAnonymousUtils.logInWithBlock({
            (success, error) -> Void in
            if (error != nil)
            {
                println("Anonymous login failed.")
            }
            else
            {
                println("Anonymous login succeeded.")

匿名ログインが成功した場合 (これらのビットを実行する前に、ネットワークの利用可能チェックを行うことをまだ検討しています...ただし、ネットワークが有効であると仮定します)、ブールをサーバー上の「isAnonymous」に保存して、このユーザーが匿名として識別されていることを確認します - I後でその情報が必要になる可能性があるため、このアクションをスローする価値があるように思われました。

質問 1: サーバーに接続されている有効な anon ユーザー オブジェクトがあることを確認するために PFUser.currentUser() (プレイヤーとして知られている) を再クエリする必要がありますか、それとも以前に割り当てたプレイヤー オブジェクトが認識しますか?ログインしたことで、関連する記録に他の情報をオンラインで投入できることを認識しましたか? これはそのまま機能していると思いますが、奇妙なセッショントークンエラーが発生しています:

[エラー]: 無効なセッション トークン (コード: 209、バージョン: 1.7.5)

                player!["isAnonymous"] = true as AnyObject
                player!.saveInBackgroundWithBlock {
                    (success, error) -> Void in
                    if (error != nil)
                    {
                        println("error updating user record with isAnonymous true")
                    }
                    else
                    {
                        println("successfully updated user record with isAnonymous true")
                    }
                }
            }
        })
    }
    else
    {

    }

    return true
}

func setupParse()
{
    Parse.setApplicationId("dW1UugqmsKkQCoqlKR3hX8dISjvOuApcffGAWR2a", clientKey: "BtXxjTjBRZVnCZbJODhd3UBUU8zuoPU1HBckXh4t")

    enableAutomaticUserCreateInParse()

この次のビットは、これらのトークンの問題に対処する方法を見つけようとすることです。それが私に何か良いことをしているかどうかはわかりません。Parse接続をインスタンス化した直後にこれをオンにするように言われました。

    PFUser.enableRevocableSessionInBackgroundWithBlock({
        (error) -> Void in
        if (error != nil) {
            println(error?.localizedDescription)
        }
    })

次 - 接続して何かを保存したり、接続していなかったり、セッショントークンを失ったりするのに苦労しているため、オブジェクトを放り投げるだけです。だから - これがうまくいくまで - 私はスティックを振ることができるよりも多くのテストオブジェクトを作成しています.

    var testObject = PFObject(className: "TestObject")

    testObject["foo"] = "barnone"

    testObject.saveInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in
        println("Object has been saved.")
    }
}

質問 2: PFUser.enableAutomaticUser() は非常に便利ですが、ログインしているかオンラインであるかを判断しようとすると頭痛の種になるようです。誰でもこれについて確かな経験があり、接続されているかどうかを確認する方法について私を導くことができます-ユーザーオブジェクトにさらに多くのものを保存するかどうかを後で決定できるようにする必要があります。

func enableAutomaticUserCreateInParse() {
    if PFUser.currentUser()?.objectId == nil
    {
        myHumanGamePlayer.playerDisplayName = "Anonymous Player"
        PFUser.enableAutomaticUser()
    }
}

Parse で Swift を使用して匿名ユーザーを使用する専門家である人なら誰でも、連絡を取ってチュートリアルを投稿しましょう。

ありがとうございました!キシラス

4

1 に答える 1

1

player!["isAnonymous"] = true が AnyObject の場合、オブジェクトとして保存しないでください。bool として保存し、パースを見て bool オブジェクトかどうかを確認します。別のView Controllerで現在のユーザーを照会して、コマンドラインに出力してみてください。これが役に立ったことを願っています

于 2015-08-08T17:25:12.370 に答える