使用fastlane管理使用通知扩展的应用程序

7
我正在使用fastlane来构建并发送我的应用程序到testflight。这个过程一直很顺利,但是当我添加了通知扩展之后就出现了错误。现在它总是给我一个错误提示:
错误领域=IDEProvisioningErrorDomain Code=9,“OneSignalNotificationServiceExtension.appex”需要具有App Groups功能的配置文件。 UserInfo={NSLocalizedDescription="OneSignalNotificationServiceExtension.appex" requires a provisioning profile with the App Groups feature., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}
在Xcode中应该自动处理所有内容,我的fastfile看起来像这样:
default_platform(:ios)

platform :ios do
  before_all do
    increment_build_number
  end

  desc "Push a new beta build to TestFlight"
  lane :beta do
    get_certificates           # invokes cert
    get_provisioning_profile   # invokes sigh
    build_app(workspace: "MyApp.xcworkspace", scheme: "MyApp (Production)")
    pilot(skip_waiting_for_build_processing: true)
  end
end

我的应用程序的bundle标识符类似于com.myapp.ios,而我的通知服务的bundle标识符类似于com.myapp.ios.notificationservice。

我已经尝试手动创建不同bundle标识符的多个provisioning profiles,但fastlane只会选择一个。我该如何解决这个问题?


1
我也遇到了同样的问题,你找到解决方法了吗? - cdn34
@cdn34 是的,我刚刚在下面添加了我的答案。如果有帮助,请告诉我。 - Tometoyou
1个回答

7
我通过像这样手动指定我的fastfile中的配置文件来解决了这个问题:
default_platform(:ios)

platform :ios do
  before_all do
    increment_build_number
  end

  desc "Push a new beta build to TestFlight"
  lane :beta do
    get_certificates           # invokes cert
    get_provisioning_profile   # invokes sigh
    build_app(workspace: "MyApp.xcworkspace", 
    scheme: "MyApp (Production)", 
    export_method: "app-store",
        export_options: {
            provisioningProfiles: { 
                "com.myapp.ios" => "com.myapp.ios AppStore 1530397498",
                "com.myapp.ios.OneSignalNotificationServiceExtension" => "MyApp Notification Extension Provisioning Profile"
            }
        })
    pilot(skip_waiting_for_build_processing: true)
  end
end

如果您想使用match,可以将export_options替换为以下内容:
match(
    app_identifier:["com.myapp.ios","com.myapp.ios.OneSignalNotificationServiceExtension"],
    type: "appstore"
)

你有没有使用“match”命令的答案? - Lê Khánh Vinh
1
@LêKhánhVinh 你好,是的,我现在使用match,所以我已经在上面添加了我的匹配代码!希望这有所帮助。 - Tometoyou
谢谢。但是在CI服务器(bitrise)中,我无法使用match(需要使用2FA身份验证登录)。 - Lê Khánh Vinh
@LêKhánhVinh 我正在使用 CircleCI 进行 CI,因此它肯定有效。建议为构建服务器创建一个新的 App Store Connect 帐户并关闭 2FA。这就是我所做的! - Tometoyou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接