Xamarin iOS提交被拒绝,Call Kit功能/ API

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xamarin iOS提交被拒绝,Call Kit功能/ API相关的知识,希望对你有一定的参考价值。

试图使用Visual Studio for Mac(版本7.3.2),ios本机(不是Xamarin.Form)将我的应用程序提交到iTunes版本。应用程序被拒绝,并显示以下消息:

用户在哪里可以在您的应用中找到Call Kit功能。如果您不打算在应用中使用Call Kit API,请将其删除并重新上传您的应用以供审核。

我知道还有另一个post谈论类似的问题,但解决方案对我的情况没有帮助,因为我已经将链接器配置为“仅限链接框架SDK”。是的,我使用此设置重建相同的应用程序两次,并被相同的消息拒绝。

然后我使用otool检查我的应用程序包,并意识到应用程序中仍然存在一堆框架/ API,以下是列表:

/System/Library/Frameworks/Security.framework/Security (compatibility version 1.0.0, current version 58286.32.2)
/System/Library/Frameworks/AVFoundation.framework/AVFoundation (compatibility version 1.0.0, current version 2.0.0)
/System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 3698.33.6)
/System/Library/Frameworks/WebKit.framework/WebKit (compatibility version 1.0.0, current version 604.4.7)
/System/Library/Frameworks/HomeKit.framework/HomeKit (compatibility version 1.0.0, current version 475.2.40)
/System/Library/Frameworks/AVKit.framework/AVKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/PassKit.framework/PassKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreBluetooth.framework/CoreBluetooth (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreSpotlight.framework/CoreSpotlight (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/MediaPlayer.framework/MediaPlayer (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1450.14.0)
/System/Library/Frameworks/CoreVideo.framework/CoreVideo (compatibility version 1.2.0, current version 1.5.0)
/System/Library/Frameworks/MessageUI.framework/MessageUI (compatibility version 1.0.0, current version 3445.5.17)
/System/Library/Frameworks/SceneKit.framework/SceneKit (compatibility version 1.0.0, current version 432.3.0)
/System/Library/Frameworks/Metal.framework/Metal (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/GameKit.framework/GameKit (compatibility version 1.0.0, current version 559.3.0)
/System/Library/Frameworks/EventKit.framework/EventKit (compatibility version 1.0.0, current version 100.0.0)
/System/Library/Frameworks/SpriteKit.framework/SpriteKit (compatibility version 1.0.0, current version 2.0.0)
/System/Library/Frameworks/AddressBook.framework/AddressBook (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/AddressBookUI.framework/AddressBookUI (compatibility version 1.0.0, current version 33.0.0)
/System/Library/Frameworks/iAd.framework/iAd (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CloudKit.framework/CloudKit (compatibility version 1.0.0, current version 735.0.0)
/System/Library/Frameworks/EventKitUI.framework/EventKitUI (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Contacts.framework/Contacts (compatibility version 0.0.0, current version 0.0.0)
/System/Library/Frameworks/ExternalAccessory.framework/ExternalAccessory (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/QuartzCore.framework/QuartzCore (compatibility version 1.2.0, current version 1.11.0)
/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (compatibility version 64.0.0, current version 1129.2.1)
/System/Library/Frameworks/CoreLocation.framework/CoreLocation (compatibility version 1.0.0, current version 2237.0.22)
/System/Library/Frameworks/PhotosUI.framework/PhotosUI (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/PushKit.framework/PushKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/QuickLook.framework/QuickLook (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/ReplayKit.framework/ReplayKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/ContactsUI.framework/ContactsUI (compatibility version 1.0.0, current version 33.0.0)
/System/Library/Frameworks/SafariServices.framework/SafariServices (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/MapKit.framework/MapKit (compatibility version 1.0.0, current version 14.0.0)
/System/Library/Frameworks/CoreMedia.framework/CoreMedia (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/OpenGLES.framework/OpenGLES (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/MultipeerConnectivity.framework/MultipeerConnectivity (compatibility version 1.0.0, current version 150.0.0)
/System/Library/Frameworks/NetworkExtension.framework/NetworkExtension (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration (compatibility version 1.0.0, current version 963.30.1)
/System/Library/Frameworks/WatchConnectivity.framework/WatchConnectivity (compatibility version 1.0.0, current version 159.0.0)
/System/Library/Frameworks/MetalKit.framework/MetalKit (compatibility version 1.0.0, current version 98.3.0)
/System/Library/Frameworks/CoreData.framework/CoreData (compatibility version 1.0.0, current version 849.2.0)
/System/Library/Frameworks/GameplayKit.framework/GameplayKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/GLKit.framework/GLKit (compatibility version 1.0.0, current version 92.0.0)
/System/Library/Frameworks/StoreKit.framework/StoreKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CallKit.framework/CallKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/IOSurface.framework/IOSurface (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/VideoSubscriberAccount.framework/VideoSubscriberAccount (compatibility version 1.0.0, current version 238.1.0)
/System/Library/Frameworks/Intents.framework/Intents (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Speech.framework/Speech (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/UserNotifications.framework/UserNotifications (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0, current version 1450.14.0)
/System/Library/Frameworks/CFNetwork.framework/CFNetwork (compatibility version 1.0.0, current version 893.14.0)
/usr/lib/libsqlite3.dylib (compatibility version 9.0.0, current version 274.6.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.1)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.0.0)
/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony (compatibility version 1.0.0, current version 0.0.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

任何人都知道如何解决这个问题?我尝试了“全部链接”,结果类似,使用otool时列出的未使用的框架仍然显示。

谢谢。

编辑#1 我确保将链接器设置传递给后端。以下是输出文件的一部分:

MtouchArch                     = ARMv7, ARM64
MtouchDebug                    = False
MtouchEnableBitcode            = False
MtouchEnableGenericValueTypeSharing = True
MtouchEnableSGenConc           = False
MtouchExtraArgs                = 
MtouchFastDev                  = False
MtouchFloat32                  = False
MtouchHttpClientHandler        = HttpClientHandler
MtouchLink                     = SdkOnly
MtouchLinkerDumpDependencies   = False
MtouchNoSymbolStrip            = False
MtouchProfiling                = False
MtouchProjectDirectory         = /Volumes/BOOTCAMP/Shared/Projects/Bugko/Source/Bugko/Bugko.XIOS
MtouchTargetsEnabled           = true
MtouchUseLlvm                  = true
MtouchUseThumb                 = False
MtouchVerbosity                = 4

编辑#2 我已经使用链接器运行相同的构建,并与仅设置为SDK的链接器进行比较。然后运行otool。它们显示完全相同的列表。

答案

经过精心撕毁整个项目并将一个包裹放回一个包裹后。问题是由ReactiveUI.Events nuget包(当前版本7.4.0)引起的,包括包不会引起任何问题,但是一旦调用任何扩展API,链接器将跳过所有iOS框架。例如

NewButton.Events().Clicked
     .Subscribe(_ => DoSomething());

跳过这个nuget并用可观察的事件模式替换所有事件扩展api将解决问题。例如

Observable.FromEventPattern<EventHandler, EventArgs>(
    ev => NewButton.Clicked += ev,
    ev => NewButton.Clicked -= ev
    ).Subscribe(_ => DoSomething());

错误报告提交https://github.com/reactiveui/ReactiveUI/issues/1558

另一答案

我可以从日志中看到:

/system/library/frameworks/call kit.framework/call kit

您已在框架部分添加了CallKit。可能是你没有使用它可能是任何第三方框架在你的项目内部使用它。

如果不是这种情况,只需删除CallKit并重新提交应用程序。

如果您正在使用请参考以下名称,他们需要在info.plist中为该应用程序提供隐私条目和说明:

日历,联系人,提醒,照片,蓝牙共享,麦克风,相机,位置,荒地,HomeKit,媒体库,议案,CallKit,语音识别,SiriKit,电视提供商。

在您的情况下,NSVoIPUsageDescription应作为密钥和描述引入,以防止在您的应用程序中使用。

谢谢

以上是关于Xamarin iOS提交被拒绝,Call Kit功能/ API的主要内容,如果未能解决你的问题,请参考以下文章

由于 HEALTHKIT 参考,Xamarin.ios 构建被拒绝

由于 HEALTHKIT 参考,Xamarin.ios 构建被拒绝

Twitter Kit RestAPI不支持IPv6? - 拒绝了Apple

IPA(由 Xamarin.iOS 构建)被 Apple Store 拒绝

iOS 应用提交二进制被拒绝 (2.16) + UIBackgroundModes

Xamarin.Forms/iOS,出现异常,“You_Should_Not_Call_Base_In_This_Method”?