我正在为移动设备开发基于位置的Q&A SDK。
当询问有关特定位置的问题时,服务器端将最相关的用户作为目标并将该问题发送给该用户。如果用户未能回答,则将问题发送给第二好的用户,依此类推。
问题是我的SDK可能安装在设备上的多个应用程序上,这意味着用户可以多次获得一个问题。
有没有一种方法可以检测我的SDK是否安装在多个应用程序中?我以为将UDID发送到服务器可能可行,但是iOS UDID在应用程序之间有所不同。
您可以使用UIPasteboard在设备上的应用程序之间共享数据。
UIPasteboard类使一个应用程序可以在该应用程序内以及与另一个应用程序共享数据。要与其他任何应用共享数据,可以使用系统范围内的粘贴板;要与具有与您的应用程序相同的团队ID的另一个应用程序共享数据,可以使用特定于应用程序的粘贴板。
在您的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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句