问题标签 [simperium]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
simperium - 访问 Simperium 用户帐户数据库或存储桶
是否有 Simperium API 来检索所有用户名、用户 ID 和/或两者之间的映射的列表?(显然需要管理员密钥)。
我想为每个用户存储一些信息。有没有办法将它存储在用户帐户所在的存储桶中?或者我应该为此信息创建一个单独的存储桶?
我已经阅读了参考资料,我看到的只是“创建”和“授权”将返回用户 ID。一些 API 调用需要用户名。看来我的用户帐户信息应该由 userID 键入,因为这保证不会更改,而用户名可以更改。
谢谢!
ios - Simperium 收到带有键 [] 的对象的错误 [客户端错误:412]
您好 Simperium 用户,
这个错误是什么意思/如何解决这个问题?
谢谢弗兰克
ios - 如何防止 Simperium 自动授权?
在提示他们创建 Simperium 帐户之前,我想允许我的新用户使用该应用程序。如何控制授权?
我以前可以打电话:
self.simperium.authenticationEnabled = NO;
直到我希望 Simperium 提示用户登录,此时我会调用:
simperium.authenticationEnabled = YES;
[simperium authenticateIfNecessary];
唉,authenticationEnabled
好像已经没有了。我目前正在使用develop
分支。
谢谢!
android - 使用 Simperium 从 Android 更新 HTML 列表
我是使用 Simperium 的新手,但我希望它可以完成我的需要。鉴于该站点主要有IOS的教程和示例,我认为最好在这里寻求帮助。
我希望能够在我的网站上编辑和更新一个事件列表,该列表只是一个带有事件名称和日期的简单 html 列表。Simperium 是否可以做到这一点,如果可以,我将如何去做?如果那里有针对 Android 的教程,我就不必在这里问这个了,但没有。
ios - Simperium iOS:切换帐户或登录现有帐户时的数据保留问题
在我的一个 Simperium 支持的应用程序中,我目前正在尝试为用户在从同步帐户注销、使用现有数据登录同步帐户、切换帐户等时实现干净的体验。
我想要实现的是以下(欢迎提出建议,如果这没有任何意义):
- 退出同步帐户时,我不想在本地删除任何内容,因此用户可以继续使用数据(这也很重要,因为同步是一项高级功能,用户可能会取消它)。
- 创建新的同步帐户(显然不包含任何数据)时,我想保留本地数据并将其同步到新帐户(如果有人在没有同步的情况下开始使用应用程序然后稍后激活同步,这很有意义) .
- 但是,当使用现有数据登录现有同步帐户时,我需要防止本地数据和远程数据之间的地狱合并(想象有人切换帐户!)。我认为用远程数据完全覆盖本地数据是最有意义的。
Simperium 似乎并不直接支持我的方法,而只是提供在注销时删除数据。在尝试让 Simperium 满足我的需求时,我目前面临两个问题/疑问:
删除所有本地数据(包括所有 Simperium 元数据,包括用户默认数据)的首选方法是什么?注意:我需要在用户未登录 Simperium 时执行此操作,因此我无法使用
signOutAndRemoveLocalData:YES
. 我想我需要做类似[self.buckets.allValues makeObjectsPerformSelector:@selector(deleteAllObjects)];
的事情(在注销完成处理程序中完成),但我找不到任何公共接口。例如,直接通过CoreData删除所有对象是否会保存,或者是否会在用户默认值中留下任何可能导致以后出现问题的东西?我注意到 Simperium 在退出后会完整保留其幽灵数据。这在登录另一个(在我的情况下是新的)帐户时会导致大量问题,因为它不会将对象视为要同步的新对象,而是删除所有本地对象(可能是因为它在偏僻的)!
- 这真的是预期的行为吗?我希望 Simperium 在退出后删除所有同步元数据,即使数据本身没有被删除。在幽灵数据的情况下更是如此,因为该数据直接与同步帐户相关联 - 它代表对象的远程状态,我认为在注销后不再存在远程状态(因为有没有“远程”)。
- 无论如何,对我来说,将幽灵数据重置回初始干净状态的最佳方法是什么(也就是说,可能类似于
{ "key" : "...", "version" : "0" }
)?我可以手动执行此操作,但这感觉就像在严重干扰 Simperium 的内部结构。
抱歉这个冗长的问题。非常感谢任何帮助/指针,谢谢!
更新/澄清
我的目标实际上并不是将数据从一个帐户转移到另一个帐户。实际上,正如我所说,我的计划是在登录现有帐户之前删除所有本地数据,这应该可以防止任何问题,例如重复 - 客户端完全丢弃其本地状态并使用当前存储在远程同步帐户中的任何内容。保留的幽灵数据给我带来问题的唯一情况是:
- 应用当前正在与账户 A 同步。
- 用户从账户 A 注销(使用
signOutAndRemoveLocalData:NO completion:
)。 - 用户愉快地继续使用该应用程序(可能有一段时间)
- 用户创建一个新的同步帐户 B(即,一个不包含服务器上任何数据的帐户)。现在,使用默认行为,Simperium 将删除所有包含版本 > 0 的幽灵数据的本地对象(但将保留在未登录任何同步帐户时创建的任何对象,从而使数据库处于潜在的无效状态关系破裂等)。
我只是不认为这是用户所期望的行为,我相信它会导致许多支持查询......
我的身份验证流程与您建议的完全一样:我有自己的后端来管理订阅并通过 Simperium Auth API 生成身份验证令牌并将其发送到客户端。但我真的不明白这如何解决我的问题。我完全同意用户切换同步帐户不是一个常见的用例(尽管情况与邮件帐户有点不同,因为您可以在不同步的情况下使用它),我绝对不想鼓励用户这样做. 我的问题是,即使它很少发生,也不应该破坏应用程序。而且我不知道如何阻止用户这样做,因为他们总是可以自由决定注销并再次注册/登录。
你会建议什么行为来确保良好的用户体验?退出时总是删除本地数据?
simperium - 在 simperium 中共享一个对象,write_access 不做任何事情
我创建了两个用户,如果我为一个用户创建一个存储桶并在该存储桶内创建一个对象,我现在可以使用 HTTP api 共享它.. 见这里
https://simperium.com/docs/reference/http/#objectshare
但是,即使我通过 "write_access" = true 发送并因此得到 200,它似乎也不允许我写信给它。只有当我启用以允许数据双向同步的另一种方式共享时,我做错了什么?
合作还有进展吗?我可以看到有很长但还没有文档?有人知道吗?
ios - Simperium 不同步数据
我正在使用 Simperium 开发 iOS 应用程序。当我登录 simperium 时,它可以正常工作意味着它可以正确同步数据。一旦用户登录,他将保持登录状态,直到他不会注销。因此,如果应用程序进入后台,那么他将保持登录状态。好吧,问题是当应用程序进入后台或者如果在一段时间内不活动(例如 3-4 小时)并且当应用程序进入前台时,则 simperium 数据无法正确同步为按照预期,如果我注销并再次登录,则数据会正确同步。所以我认为这是因为类似会话的问题意味着 Simperium 在过期后有固定的会话时间,是这样吗?
ios - iOS推送通知未从服务器发送(Jetpack)
我正在实施一个 iOS 应用程序来管理我的自托管网站。我的应用程序利用了已经为WordPress-iOS应用程序构建的许多功能,但它有一些差异和额外的功能。
我目前遇到的问题之一是推送通知没有从 Jetpack(WordPress.com 服务器)发送到 Apple 的 APN,因为我的设备上没有收到任何通知。在应用程序启动期间,我已经在 Jetpack 中成功注册了我的设备令牌。
我的问题可能是证书密钥 (.pem) 文件没有上传到 Wordpress.com(我无权访问)。这就是我没有收到任何推送通知到我的 iPhone 的原因吗?
此外,我在NotificationsViewController
. 我还没有设置 Simperium 帐户。这可能是我在 NotificationsViewController 中没有结果的问题吗?
非常感谢。
simperium - 我应该使用 Simperium 支持的 Core Data iOS 应用程序排除 sqlite-shm 和 sqlite-wal 文件吗
我对自 iOS7 以来默认包含的 shm 和 wal 文件不了解。我只是想知道它们是否会以任何方式影响 Simperium API。如果是这样,我是否应该在为应用程序配置 sqlite 数据库时专门排除这些文件。(应用程序的部署目标是 9.0。)
ios - 向实体添加新属性时 Simperium 丢失数据
我在另一个答案中读到 Simperium 应该能够很好地处理 Core Data 轻量级迁移。但是,我目前正在为向现有实体添加(可选)属性的简单案例而苦苦挣扎。
为了让这个问题更容易理解,让我们看一个例子。假设我以前的应用程序版本是 1.0,而新版本 1.1foo
在 Core Data 实体上引入了一个新属性。
现在,让我们考虑这种情况:
- 设备 A 和 B 都运行 1.0 版并附加到同一个 Simperium 同步帐户,都是最新的。
- 设备A升级到1.1版本,在数据库中创建属性,用户在新
foo
属性中添加一些数据。此数据已正确同步到 Simperium 后端,并且foo
在 Web 数据浏览器中可见。 - 设备 B(仍在 1.0 版上,即没有
foo
)与 Simperium 同步。在这一点上我看到Simperium warning: applyDiff for a member that doesn't exist
了,这是可以理解的,因为foo
不存在。这里的一切都还不错。 - 现在设备 B 升级到 1.1。首次启动应用程序时,Core Data 会创建新
foo
列。但是,既然foo
属性已经存在,Simperium 仍然不会从后端提取其数据,因此设备 A 和 B 看不到相同的数据foo
!
我理解为什么会发生这种情况(Simperium 第一次放弃了更改,因为该属性还不存在,然后在以后可能时不会再次应用相同的更改)。但是,我认为这是非常有问题的,并且实际上即使对数据模型进行最简单的更改也非常冒险。我在这里错过了什么吗?向实体添加新属性的安全方法是什么?