我目前正在尝试做的基本上是我有 2 个应用程序,并根据是否安装了另一个应用程序,以某种方式运行。我发现 Pasteboard 用于应用程序间通信,所以我认为我应该使用它们。那么问题来了,两个应用程序都做这样的事情
UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@"com.company.app.key" create:YES];
[pasteboard setPersistent:YES];
NSData *data = [pasteboard dataForPasteboardType:@"com.company.otherapp"];
if(data != nil)
{
// Do stuff
}
NSData *selfKey = [pasteboard dataForPasteboardType:@"com.company.thisapp"];
if(data == nil)
{
[pasteboard setValue:@"string" forPasteboardType:@"com.company.thisapp"];
}
所以我安装了一个应用程序并运行另一个应用程序,第一次工作时,数据不是零,如果我使用带有 NSData 的 NSString 初始化程序将 NSData 转换为 NSString,我会读取“字符串”。
问题是我所做的只是关闭第二个应用程序,再次运行它,突然数据为零。我一开始以为我访问后粘贴板只是删除它,所以我在 // Do stuff 中添加了以下行
[pasteboard setValue@"string" forPasteboardType:@"com.company.otherapp"];
如果我第二次运行该应用程序,则没有数据仍然为零。我需要字符串永远留在粘贴板中,因为我必须告诉我是否安装了我的其他应用程序,所以有人知道为什么数据仅在 1 次运行后返回 nil 吗?
我必须注意,我所做的只是按下主页按钮,然后再次运行应用程序,所以情况是
-运行应用程序1
- 运行 app2(从粘贴板获取数据)
- 按主页按钮
- 运行 app2(数据现在为零)