ios: add share extension to queue and play video links
Embed an iOS and Catalyst share extension using existing discovery and player APIs. Share saved players through an App Group snapshot, preserve the queue, and verify advancing playback before reporting success. Cover URL provider transport, settings migration, discovery addresses, duplicate handling, cancellation, and partial enqueue/play outcomes with focused tests. Document authentication and signing limits.
This commit is contained in:
+23
-14
@@ -6,8 +6,10 @@ require "tempfile"
|
||||
default_platform(:ios)
|
||||
|
||||
BUNDLE_IDENTIFIER = "net.buzzert.QueueCube"
|
||||
SHARE_BUNDLE_IDENTIFIER = "net.buzzert.QueueCube.Share"
|
||||
DEVELOPMENT_TEAM = "DQQH5H6GBD"
|
||||
PROVISIONING_PROFILE_NAME = "QueueCube AppStore CI"
|
||||
SHARE_PROVISIONING_PROFILE_NAME = "QueueCube Share AppStore CI"
|
||||
CI_KEYCHAIN_NAME = "queuecube_ci_keychain"
|
||||
CI_KEYCHAIN_PASSWORD = "queuecube-ci-keychain-password"
|
||||
CI_KEYCHAIN_DB_PATH = File.expand_path("~/Library/Keychains/#{CI_KEYCHAIN_NAME}-db")
|
||||
@@ -108,6 +110,8 @@ def upload_export_options
|
||||
<dict>
|
||||
<key>#{BUNDLE_IDENTIFIER}</key>
|
||||
<string>#{PROVISIONING_PROFILE_NAME}</string>
|
||||
<key>#{SHARE_BUNDLE_IDENTIFIER}</key>
|
||||
<string>#{SHARE_PROVISIONING_PROFILE_NAME}</string>
|
||||
</dict>
|
||||
<key>manageAppVersionAndBuildNumber</key>
|
||||
<false/>
|
||||
@@ -156,18 +160,23 @@ platform :ios do
|
||||
end
|
||||
|
||||
private_lane :sync_signing do |options|
|
||||
match(
|
||||
type: "appstore",
|
||||
readonly: options.fetch(:readonly),
|
||||
app_identifier: BUNDLE_IDENTIFIER,
|
||||
team_id: DEVELOPMENT_TEAM,
|
||||
profile_name: PROVISIONING_PROFILE_NAME,
|
||||
git_url: ENV.fetch("MATCH_GIT_URL"),
|
||||
git_branch: ENV.fetch("MATCH_GIT_BRANCH", "master"),
|
||||
git_full_name: "QueueCube Release Bot",
|
||||
git_user_email: "james.magahern@me.com",
|
||||
api_key: options.fetch(:api_key)
|
||||
)
|
||||
{
|
||||
BUNDLE_IDENTIFIER => PROVISIONING_PROFILE_NAME,
|
||||
SHARE_BUNDLE_IDENTIFIER => SHARE_PROVISIONING_PROFILE_NAME
|
||||
}.each do |identifier, profile_name|
|
||||
match(
|
||||
type: "appstore",
|
||||
readonly: options.fetch(:readonly),
|
||||
app_identifier: identifier,
|
||||
team_id: DEVELOPMENT_TEAM,
|
||||
profile_name: profile_name,
|
||||
git_url: ENV.fetch("MATCH_GIT_URL"),
|
||||
git_branch: ENV.fetch("MATCH_GIT_BRANCH", "master"),
|
||||
git_full_name: "QueueCube Release Bot",
|
||||
git_user_email: "james.magahern@me.com",
|
||||
api_key: options.fetch(:api_key)
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
desc "Create or update match signing assets"
|
||||
@@ -200,12 +209,12 @@ platform :ios do
|
||||
"clean",
|
||||
"archive",
|
||||
"DEVELOPMENT_TEAM=#{DEVELOPMENT_TEAM}",
|
||||
"PRODUCT_BUNDLE_IDENTIFIER=#{BUNDLE_IDENTIFIER}",
|
||||
"MARKETING_VERSION=#{version}",
|
||||
"CURRENT_PROJECT_VERSION=#{build}",
|
||||
"CODE_SIGN_STYLE=Manual",
|
||||
"CODE_SIGN_IDENTITY=Apple Distribution",
|
||||
"PROVISIONING_PROFILE_SPECIFIER=#{PROVISIONING_PROFILE_NAME}"
|
||||
"QUEUECUBE_APP_PROFILE=#{PROVISIONING_PROFILE_NAME}",
|
||||
"QUEUECUBE_SHARE_PROFILE=#{SHARE_PROVISIONING_PROFILE_NAME}"
|
||||
))
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user