Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与iCloud相似的唯一google id_Java_Android_Ios_Swift_Cloudkit - Fatal编程技术网

Java 与iCloud相似的唯一google id

Java 与iCloud相似的唯一google id,java,android,ios,swift,cloudkit,Java,Android,Ios,Swift,Cloudkit,所以,几天来我一直在寻找解决方案,但运气不好,所以我想我会在这里发布。因此,在我的移动应用程序中,用户不会按照通常意义上的“注册”,而是他们的帐户将具有唯一的id 因此,问题在于知道哪个用户是哪个用户,并保持他们的数据不变,无论他们是否切换到新设备、是否从备份中恢复等 对于IOS,我通过使用iCloud的唯一标识符解决了这个问题。我通过api调用来获取他们的id,并检查我的后端,看看他们是否已经拥有一个帐户。(很明显,我不能解释为什么有人故意登录只是为了搞乱它。有些边缘案例不值得争论。)下面是用

所以,几天来我一直在寻找解决方案,但运气不好,所以我想我会在这里发布。因此,在我的移动应用程序中,用户不会按照通常意义上的“注册”,而是他们的帐户将具有唯一的id

因此,问题在于知道哪个用户是哪个用户,并保持他们的数据不变,无论他们是否切换到新设备、是否从备份中恢复等

对于IOS,我通过使用iCloud的唯一标识符解决了这个问题。我通过api调用来获取他们的id,并检查我的后端,看看他们是否已经拥有一个帐户。(很明显,我不能解释为什么有人故意登录只是为了搞乱它。有些边缘案例不值得争论。)下面是用swift编写的对iCloud的api调用

  CKContainer.defaultContainer().fetchUserRecordIDWithCompletionHandler({ (recordID, error) -> Void in

            dispatch_async(dispatch_get_main_queue()) { () -> Void in
                if error ==  nil
                {
                    if recordID != nil
                    {
                        self.rid = recordID!.recordName

                        let json = ["user":self.rid]

                        networkController.newUser(json)
                    }
                    else
                    {
                        // Just a random string
                        self.rid = randomID()

                        let json = ["userID":self.rid]

                        networkController.newUser(json)
                    }
                }
                else
                {
                    MBProgressHUD.hideHUDForView(self.view, animated: true)

                    let alert = UIAlertController(title: "Uh Oh", message: error!.localizedDescription, preferredStyle: .Alert)

                    let okayAction = UIAlertAction(title: "Okay", style: .Cancel, handler: nil)

                    alert.addAction(okayAction)

                    self.presentViewController(alert, animated: true, completion: nil)
                }
            }
        })
这保证了当用户登录到他们的iCloud帐户时,会有一个唯一的CloudKit记录,因此在恢复备份或获取新设备时,无需创建新帐户

我的问题是,谷歌/安卓是否有类似的东西,不一定是他们的电子邮件地址或任何个人信息。因为安卓设备价格便宜,而且经常交换,我想找到一种方法来保持用户数据同步。非常感谢您的帮助或反馈。

Andrew

我想你问题的答案在这里

在这里


总之,“UUID”是你问题的答案

好的,我明白你的意思了。我现在唯一的问题是android uuid,如果用户获得新设备,我如何确定用户帐户已经存在?当应用程序首次启动时,我需要一些东西作为基础。在iCloud中,他们登录应用商店和其他服务是基于他们的帐户。UUID只有在他们从未换过新设备的情况下才会起作用;对不起,我不是机器人人;但是一个简单的家伙。你不能用谷歌硬盘做点什么吗?谷歌毕竟是安卓系统的所有者。我不确定,我只是进入安卓系统的开发阶段,我宁愿不保留用户的电子邮件。但看起来我可能不得不这么做。