我正在尝试使用Snapchat的Bitmoji和Login SDK来允许访问用户的Bitmoji头像。但是,调用SCSDKLoginClient.login()
时,应用程序立即崩溃。
堆栈跟踪如下:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[2]'
*** First throw call stack:
(
0 CoreFoundation 0x0000000107ab16fb __exceptionPreprocess + 331
1 libobjc.A.dylib 0x0000000107055ac5 objc_exception_throw + 48
2 CoreFoundation 0x00000001079ffddc _CFThrowFormattedException + 194
3 CoreFoundation 0x0000000107b1dc31 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 321
4 CoreFoundation 0x0000000107aad3db +[NSDictionary dictionaryWithObjects:forKeys:count:] + 59
5 SCSDKLoginKit 0x0000000106f1e5e5 SCSDKLoginKit + 5605
6 SCSDKLoginKit 0x0000000106f28982 SCSDKLoginKit + 47490
7 SCSDKLoginKit 0x0000000106f28189 SCSDKLoginKit + 45449
8 MeetUp 0x0000000106398df6 $s6MeetUp10ImageUtilsC16getBitmojiAvatar2onSo7UIImageCSo16UIViewControllerC_tFZ + 358
9 MeetUp 0x00000001063a8632 $s6MeetUp27CreateProfileViewControllerC11fromBitmojiyySo13UIAlertActionCF + 274
10 MeetUp 0x00000001063ac79c $sTA + 28
11 MeetUp 0x00000001063a0462 $sSo13UIAlertActionCIegg_ABIeyBy_TR + 66
12 UIKitCore 0x000000010cf3e1d9 -[UIAlertController _invokeHandlersForAction:] + 105
13 UIKitCore 0x000000010cf3eb6d __103-[UIAlertController _dismissAnimated:triggeringAction:triggeredByPopoverDimmingView:dismissCompletion:]_block_invoke.461 + 16
14 UIKitCore 0x000000010d165ec4 -[UIPresentationController transitionDidFinish:] + 1325
15 UIKitCore 0x000000010d169f7c __56-[UIPresentationController runTransitionForCurrentState]_block_invoke.425 + 183
16 UIKitCore 0x000000010d2749dc -[_UIViewControllerTransitionContext completeTransition:] + 102
17 UIKitCore 0x000000010dd0cf3b -[UIViewAnimationBlockDelegate _didEndBlockAnimation:finished:context:] + 847
18 UIKitCore 0x000000010dce08ff -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 343
19 UIKitCore 0x000000010dce0f21 -[UIViewAnimationState animationDidStop:finished:] + 293
20 UIKit 0x000000012a60ba91 -[UIViewAnimationStateAccessibility animationDidStop:finished:] + 118
21 UIKitCore 0x000000010dce0fd5 -[UIViewAnimationState animationDidStop:finished:] + 473
22 UIKit 0x000000012a60ba91 -[UIViewAnimationStateAccessibility animationDidStop:finished:] + 118
23 QuartzCore 0x000000010c080de7 _ZN2CA5Layer23run_animation_callbacksEPv + 321
24 libdispatch.dylib 0x000000010b548db5 _dispatch_client_callout + 8
25 libdispatch.dylib 0x000000010b556080 _dispatch_main_queue_callback_4CF + 1540
26 CoreFoundation 0x0000000107a188a9 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
27 CoreFoundation 0x0000000107a12f56 __CFRunLoopRun + 2310
28 CoreFoundation 0x0000000107a12302 CFRunLoopRunSpecific + 626
29 GraphicsServices 0x00000001119192fe GSEventRunModal + 65
30 UIKitCore 0x000000010d84bba2 UIApplicationMain + 140
31 MeetUp 0x00000001063a4c7b main + 75
32 libdyld.dylib 0x000000010b5bd541 start + 1
33 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
由于SnapSDK需要修改Plist,因此这也是我的info.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>login</string>
<key>CFBundleURLSchemes</key>
<array>
<string>com.MYNAME.APPNAME</string>
<string>APPNAME</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>SCSDKScopes</key>
<array>
<string>https://auth.snapchat.com/oauth2/api/user.external_id</string>
<string>https://auth.snapchat.com/oauth2/api/user.display_name</string>
<string>https://auth.snapchat.com/oauth2/api/user.bitmoji.avatar</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>NSCameraUsageDescription</key>
<string>Allows access to uplaod a profile picture from your camera</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>SCSDKRedirectURL</key>
<string>APPNAME://app</string>
<key>SCSDKClientId</key>
<string>***PRIVATE_KEY***
</string>
<key>LSApplicationQueriesSchenes</key>
<array>
<string>itms-apps</string>
<string>snapchat</string>
<string>bitmoji-sdk</string>
<string>APPNAME</string>
</array>
</dict>
</plist>
当然还有我的实际函数调用:
SCSDKLoginClient.login(from: view) { (success, error) in
guard error == nil else {
fatalError(error?.localizedDescription ?? "")
}
print("success")
}
所有SDK都包含在嵌入式二进制文件和链接二进制文件和框架中
任何使它正常工作的建议都将受到赞赏。谢谢。
答案 0 :(得分:0)
我遇到了同样的问题,并且能够解决它。这是我的工作Info.plist。
注意:必须用您选择的某些值替换example
和CFBundleURLSchemes
下的SCSDKRedirectUrl
。我不确定这是否重要,但我们保留所有字母数字字符。您还必须通过开发者门户网站的客户ID替换REPLACEME
。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>example</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>SCSDKClientId</key>
<string>REPLACEME</string>
<key>SCSDKRedirectUrl</key>
<string>example://oauth2</string>
<key>SCSDKScopes</key>
<array>
<string>https://auth.snapchat.com/oauth2/api/user.display_name</string>
<string>https://auth.snapchat.com/oauth2/api/user.external_id</string>
<string>https://auth.snapchat.com/oauth2/api/user.bitmoji.avatar</string>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>snapchat</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
希望这对您有用!