小编me-*_*e--的帖子

Contact Framework等效于ABAddressBook.ABAddressBookRegisterExternalChangeCallback

我正在将已弃用的通讯簿框架中的应用程序迁移到新的"联系人框架".该应用程序使用ABAddressBookRegisterExternalChangeCallback时,另一个应用程序更改联系人通知.

我无法在Contacts Framework中找到相同的功能.苹果文件说,将使用与默认通知中心CNContactStoreDidChangeNotification通知:

在另一个更改发生时发布通知CNContactStore.

根据Apple的建议,我的代码如下:

NSNotificationCenter.defaultCenter().addObserver(
    self,
    selector: "contactsChanged:",
    name: CNContactStoreDidChangeNotification,
    object: nil)
Run Code Online (Sandbox Code Playgroud)

但是,我发现这种方法存在两个问题:

  1. 我收到所有更改通知,包括我自己的应用程序所做的更改.
  2. 通知是虚假的 - 我收到许多通知,只需一次更改.

如果我在我的应用程序中进行更改时记录通知的调试描述,我会得到如下内容:

NSConcreteNotification 0x7d3370e0 {name = CNContactStoreDidChangeNotification; userInfo = {
    CNNotificationOriginationExternally = 1;
    CNNotificationSourcesKey =     (
    );
}}
Run Code Online (Sandbox Code Playgroud)

如果更改是在外部进行的:

NSConcreteNotification 0x7bf7a690 {name = CNContactStoreDidChangeNotification; userInfo = {
    CNNotificationOriginationExternally = 1;
    CNNotificationSourcesKey =     (
    );
}}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,没有什么明显可以区分它们.

任何人都可以告诉我如何从联系人框架中获得相同的行为,因为人们可以得到ABAddressBookRegisterExternalChangeCallback

abaddressbook ios swift cncontact cncontactstore

22
推荐指数
1
解决办法
1127
查看次数

为什么Facebook身份验证SDK的行为因其模式而如此不同?

我在App Store中有一个Android应用。它在后端使用Firebase,并通过Facebook(和Google)提供社交登录。

最近,Facebook联系我,警告我通过Facebook登录时我的应用程序崩溃/无响应。感到困惑,我开始进行一些测试。

我发现,如果我在未安装Facebook应用程序的情况下使用Facebook登录名,则一切运行正常。向用户显示一个浏览器窗口,可以登录,他们被重定向回我的应用程序,并且我具有他们的身份。当然,我在开发过程中发现了所有这些内容,但只是想确认一切仍然正常。

但是,当我安装Facebook应用程序时(在开发过程中我忽略了这一点),我发现它不再起作用。而是,用户被重定向到此页面:

在此处输入图片说明

为了便于搜索和访问,该图像中的文字为:

登录错误:将您登录到此应用程序时出错。请稍后再试。

发生这种情况时,我已经检查了日志,发现以下内容可能相关,但我不确定:

07-05 15:36:28.468   908  5828 I ActivityManager: START u0 {act=NATIVE_WITH_FALLBACK cmp=<<redacted>>/com.facebook.FacebookActivity (has extras)} from uid 10264
07-05 15:36:28.469   665   665 D QCOM PowerHAL: LAUNCH HINT: ON
07-05 15:36:28.470   665   665 D QCOM PowerHAL: Activity launch hint handled
07-05 15:36:28.495  4837  4837 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@e64bd3e
07-05 15:36:28.689   665   665 D QCOM PowerHAL: LAUNCH HINT: OFF
07-05 15:36:28.946 29406  4941 W fb4a.BlueServiceQueue: Exception during service
07-05 15:36:28.946 29406 …
Run Code Online (Sandbox Code Playgroud)

android facebook facebook-authentication firebase firebase-authentication

21
推荐指数
2
解决办法
566
查看次数

在反应流水线中执行TPL代码并通过测试调度程序控制执行

我很难理解以下测试不起作用的原因:

[Fact]
public void repro()
{
    var scheduler = new TestScheduler();
    var count = 0;

    // this observable is a simplification of the system under test
    // I've just included it directly in the test for clarity
    // in reality it is NOT accessible from the test code - it is
    // an implementation detail of the system under test
    // but by passing in a TestScheduler to the sut, the test code
    // can theoretically control the execution of …
Run Code Online (Sandbox Code Playgroud)

.net c# task-parallel-library system.reactive

14
推荐指数
1
解决办法
1196
查看次数

Google Drive使用当前活动进行整合

是否可以在不创建自己的活动的情况下与Google云端硬盘集成,而只是使用应用程序的当前活动而不会使用与Google云端硬盘相关的代码进行污染?

我有一个后台"服务"(不是Android服务 - 只是一个与UI无关的类),负责从Google云端硬盘加载一些数据.作为一项服务,它没有真正的业务是一项活动.但是,Drive集成示例具有覆盖onActivityResult以处理需要身份验证的情况.如果我的服务没有作为一项活动实施,我不确定如何掌握这些信息.

假设我可以Activity从我的"服务"中获得对当前电流的参考,我是否可以通过某种方式以完全独立的方式实施Google Drive集成?

java android google-drive-android-api

13
推荐指数
2
解决办法
486
查看次数

SQLite数据库的定期iCloud备份

现在让我解决这个问题:是的,不使用Core Data几乎肯定是错误的.但是,当我做出这些决定时,我是iOS开发的新手,我不知道我会像这样陷入困境.此外,该应用程序也打算在Android(最终)上运行,因此我尽可能避免使用特定于平台的API.

我有一个iOS应用程序,可以将数据存储在本地SQLite数据库文件中.存储在文件中的数据由用户提供,因此保持安全非常重要.我有计划"稍后再做",后来现在在这里.我很快意识到它不会像我希望的那样直截了当......

我现在明白,无法跨设备无缝同步数据,我愿意接受这个限制,直到我设法迁移到Core Data.但是,与此同时,我至少要定期备份SQLite数据库,这样用户可以在单个设备上使用该应用程序感到安全.我以为我会这样做:

  • 定期(例如每周一次)将SQLite文件从本地存储复制到云存储中,从而确保备份
  • 当应用程序启动时,如果本地存储丢失或损坏但文件存在于云存储中,请询问用户是否要将其复制

这种方法的最大问题是用户可以在多个设备上运行应用程序,因此存储在iCloud中的数据可以来自这些设备中的任何一个,但只有一个.为了解决这个问题,我想我可以在云存储中使用每个设备的唯一名称.我会生成这个使用UIDevice.identifierForVendor.

所以我的启动逻辑是:

  1. 确定云文件的唯一名称.
  2. 本地文件是丢失还是损坏,如果是,云文件是否存在?

    2.1.询问用户是否要从云文件中恢复.使它真的很难让他们说没有,因为这样做会失去他们的所有数据.

    2.2.如果他们说是,请将云文件复制到本地文件存储.

  3. 打开本地数据库文件.

在后台运行我偶尔会将数据库文件从本地复制到云存储.

在我进行核心数据集成之前,我想知道这是否是一种合理的方法.还有,我可能会遗漏任何隐藏的"陷阱"吗?

更新:正如@TomHarrington在评论中指出的那样,我的数据库文件已经存在/Documents,它已备份到iTunes和任何iCloud帐户.所以我的问题变成了这样:

我是否应该简单地确保我的数据库具有特定于设备的名称,以便在连接到同一iCloud帐户的另一台设备上运行的应用程序不会破坏它?

sqlite core-data ios

13
推荐指数
1
解决办法
640
查看次数

从命令行更改 Azure 目录

我正在尝试az针对我的 Azure 帐户使用。我的帐户有两个目录:一个用于个人(默认)和一个用于企业。我需要“切换到”业务目录,以便可以az访问正确的资源。但是,我找不到通过命令行实现此目的的任何方法,因此当我这样做时,我会az group list从我的个人目录中看到资源组,而不是业务组。

如何从 CLI 切换 Azure 目录?

command-line-interface azure az

12
推荐指数
3
解决办法
1万
查看次数

Android图标:避免白边

我的应用程序图标已基本上是一个圆圈.Android坚持将其放入另一个圈子会产生非常难看的结果,所以我试图找出如何告诉它的行为.

例如,如果我的图标是(并且这不是我的实际图标,但这无关紧要):

图标

然后Android呈现如下:

在此输入图像描述

:内容圈内是非常重要的.没有这个,Android似乎明白我的图标已经是圆形的,不应该包裹在另一个圆圈中.

我已经看到了这个问题和答案,但我对行为和提议的修复对我没有用的事实感到困惑.

当我运行Image Asset Studio工具生成图标时,我会经历选择遗产并让它看起来完全符合我想要的过程,然后单击"完成"......没有任何反应.没有生成任何图像.我知道这是因为我看到git没有检测到任何变化,我的应用程序的图标图像也没有任何不同.

我的gradle包括:

compileSdkVersion 27 minSdkVersion 16 targetSdkVersion 27

任何人都可以告诉我如何让Android了解我的图标仍然基本上是一个圆圈?当然,它在圆圈之外有一些内容,但它仍然在包围圆圈的方形范围内......

icons android

8
推荐指数
1
解决办法
1115
查看次数

AutoMapper 与 Google Protocol Buffers 3 的实用使用

我想将 AutoMapper 与 proto3 一起使用,但我遇到的最大问题是从可能允许的源属性映射null到从不允许的原型。手动进行此类填充时,必须执行以下操作:

var proto = new Proto();

if (source.Field != null)
{
    proto.Field = source.Field;
}
Run Code Online (Sandbox Code Playgroud)

我仍然觉得这很荒谬,但 proto3 显然就是这样。

无论如何,这意味着映射必须有条件,以确保null值不会传播到原型:

config
    .CreateMap<Source, Proto>()
    .ForMember(
        x => x.Field,
        options => options.Condition(source => source.Field != null));
Run Code Online (Sandbox Code Playgroud)

我能感觉到它变老的速度非常快,因为我的原型中有很多属性。

我想知道是否有办法让我在更高的抽象级别上处理这个问题?

c# protocol-buffers automapper proto3

7
推荐指数
1
解决办法
4145
查看次数

为什么不能将Kubernetes支持添加到.NET Core Console项目?

我正在尝试Visual StudioKubernetes工具。我想在控制台应用程序上启用Kubernetes支持,但它不允许我这样做。它似乎仅支持ASP.NET应用程序(Web / API)。

为什么是这样?

我的项目由许多支持gRPC端点进行通信的控制台程序组成。为什么该工具似乎仅能促进ASP.NET?有办法解决吗?

.net visual-studio kubernetes .net-core

7
推荐指数
1
解决办法
183
查看次数

为什么 iOS 上的 OpenGL ES 渲染会垂直翻转?

我有一些 C 代码来渲染一些 OpenGL 内容,它可以在 Android 和 iOS 上运行。在 Android 上看起来不错。但在 iOS 上它是垂直翻转的。

下面是一些简单的代码来演示(因为OpenGL C代码很啰嗦,所以只复制了相关部分):

GLfloat vVertices[] = {
    0.0f,  0.5f,
    -0.5f, -0.5f,
    0.5f, -0.5f
};

glViewport(0, 0, context->width, context->height);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glUseProgram(data->programObject);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vVertices);
glEnableVertexAttribArray(0);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableVertexAttribArray(0);
Run Code Online (Sandbox Code Playgroud)

在 Android 上它看起来像这样:

在此输入图像描述

但在 iOS 上它看起来像这样:

在此输入图像描述

两个平台之间唯一的区别是 OpenGL ES 的初始化代码,因为所有 OpenGL 代码都是共享的 C 代码。但是,我看不出初始化代码有任何明显的错误。

这是初始化代码(我删除了大部分错误处理,因为除了我留下的错误之外,没有任何错误被触发):

- (void)initGL {
    _context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];

    [EAGLContext setCurrentContext:_context];
    [self createCVBufferWithSize:_renderSize withRenderTarget:&_target withTextureOut:&_texture];

    glBindTexture(CVOpenGLESTextureGetTarget(_texture), CVOpenGLESTextureGetName(_texture));

    glTexImage2D(GL_TEXTURE_2D,         // target
                 0, …
Run Code Online (Sandbox Code Playgroud)

c android opengl-es ios

6
推荐指数
0
解决办法
303
查看次数