gpt4 book ai didi

iOS:检测我的SDK是否安装在设备上的其他应用程序上

转载 作者:可可西里 更新时间:2023-11-01 04:34:47 24 4
gpt4 key购买 nike

我正在为移动设备开发基于位置的问答 SDK。

当询问有关特定位置的问题时,服务器端会定位最相关的用户并将问题发送给该用户。如果用户未能回答,问题将发送给第二好的用户,依此类推。

问题是我的 SDK 可能安装在设备上的多个应用程序上,这意味着用户可能不止一次收到问题。

有没有办法检测我的 SDK 是否安装在多个应用程序上?我认为将 UDID 发送到服务器可能会起作用,但 iOS UDIDs differ between applications .

最佳答案

您可以使用 UIPasteboard 在设备上的应用程序之间共享数据。

The UIPasteboard class enables an app to share data within the app and with another app. To share data with any other app, you can use system-wide pasteboards; to share data with another app that has the same team ID as your app, you can use app-specific pasteboards.

在您的 SDK 中,执行如下操作:

@interface SDKDetector : NSObject

@end

@implementation SDKDetector

+ (void)load
{
int numberOfApps = (int)[self numberOfAppsInDeviceUsingSDK];
NSLog(@"Number of apps using sdk:%d", numberOfApps);
}

+ (NSInteger)numberOfAppsInDeviceUsingSDK
{
static NSString *pasteboardType = @"mySDKPasteboardUniqueKey";

NSData *value = [[UIPasteboard generalPasteboard] valueForPasteboardType:pasteboardType];
NSMutableArray *storedData = [[NSKeyedUnarchiver unarchiveObjectWithData:value] mutableCopy];

if (!storedData) {
storedData = [NSMutableArray new];
}

NSString *bundleId = [[NSBundle mainBundle] bundleIdentifier];
if (![storedData containsObject:bundleId]) {
[storedData addObject:[[NSBundle mainBundle] bundleIdentifier]];
}

value = [NSKeyedArchiver archivedDataWithRootObject:storedData];
[[UIPasteboard generalPasteboard] setData:value forPasteboardType:pasteboardType];

return [storedData count];
}

@end

关于iOS:检测我的SDK是否安装在设备上的其他应用程序上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24252954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com