fix patch
This commit is contained in:
@@ -91,3 +91,31 @@ https://raw.githubusercontent.com/bluesky-social/social-app/refs/heads/main/LICE
|
||||
|
||||
2. 年齢保証、年齢確認ページがでてくるのを削除。誕生日を入力する処理を削除。アプリ配布国は限定します。
|
||||
|
||||
|
||||
## apple review 対応
|
||||
|
||||
Step 1: Address Guideline 5.1.1 (Privacy)
|
||||
|
||||
Modify your app's code (Version 1.111.0 or newer): Change the user registration or profile flow so that entering the Date of birth is no longer a required field.
|
||||
|
||||
Deployment: Build and prepare a new version (e.g., 1.111.1) that includes this change.
|
||||
|
||||
Step 2: Address Guideline 2.1 (Information Needed)
|
||||
|
||||
Create a Demo Account: Create a dedicated user account within your app with a clear username and password (e.g., ReviewerTest / Password12345!).
|
||||
|
||||
Populate Content: Use this demo account to add sample content, connect with other test users, or perform any actions necessary to ensure that all features that rely on user data (lists, content, interactions, etc.) are visible and testable.
|
||||
|
||||
Update App Store Connect:
|
||||
|
||||
Go to your app's submission in App Store Connect.
|
||||
|
||||
Navigate to the App Review Information section.
|
||||
|
||||
Enter the username and password for the demo account you created in the designated fields.
|
||||
|
||||
Step 3: Re-submit
|
||||
|
||||
Upload the new app binary (with the privacy fix) to App Store Connect.
|
||||
|
||||
Submit the new version for review, ensuring the updated App Review Information (demo account details) is saved.
|
||||
|
||||
@@ -40,6 +40,7 @@ else
|
||||
echo "⚠️ Warning: $ASSETS_DIR not found"
|
||||
fi
|
||||
|
||||
function cleanup_build {
|
||||
# 2. Prebuild (Generate ios directory)
|
||||
echo "2. Running Expo Prebuild..."
|
||||
# Clean old ios folder to remove old entitlements/AppClip targets
|
||||
@@ -64,6 +65,13 @@ fi
|
||||
|
||||
open "$XCODE_PROJ"
|
||||
read
|
||||
}
|
||||
|
||||
case $1 in
|
||||
i)
|
||||
cleanup_build
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Building $APP_NAME for App Store upload..."
|
||||
|
||||
@@ -86,6 +94,7 @@ fi
|
||||
|
||||
cd "$BUILD_DIR"
|
||||
|
||||
|
||||
# IPA作成
|
||||
rm -rf Payload ${APP_NAME}.ipa
|
||||
mkdir -p Payload
|
||||
|
||||
101
ios/patching/027-social-app-ios-remove-birthdate.patch
Normal file
101
ios/patching/027-social-app-ios-remove-birthdate.patch
Normal file
@@ -0,0 +1,101 @@
|
||||
diff --git a/src/screens/Signup/StepInfo/index.tsx b/src/screens/Signup/StepInfo/index.tsx
|
||||
--- a/src/screens/Signup/StepInfo/index.tsx
|
||||
+++ b/src/screens/Signup/StepInfo/index.tsx
|
||||
@@ -7,11 +7,9 @@
|
||||
|
||||
import {isEmailMaybeInvalid} from '#/lib/strings/email'
|
||||
import {logger} from '#/logger'
|
||||
-import {is13, is18, useSignupContext} from '#/screens/Signup/state'
|
||||
+import {useSignupContext} from '#/screens/Signup/state'
|
||||
import {Policies} from '#/screens/Signup/StepInfo/Policies'
|
||||
import {atoms as a, native} from '#/alf'
|
||||
-import * as DateField from '#/components/forms/DateField'
|
||||
-import {type DateFieldRef} from '#/components/forms/DateField/types'
|
||||
import {FormError} from '#/components/forms/FormError'
|
||||
import {HostingProvider} from '#/components/forms/HostingProvider'
|
||||
import * as TextField from '#/components/forms/TextField'
|
||||
@@ -22,16 +20,6 @@
|
||||
import {usePreemptivelyCompleteActivePolicyUpdate} from '#/components/PolicyUpdateOverlay/usePreemptivelyCompleteActivePolicyUpdate'
|
||||
import {BackNextButtons} from '../BackNextButtons'
|
||||
|
||||
-function sanitizeDate(date: Date): Date {
|
||||
- if (!date || date.toString() === 'Invalid Date') {
|
||||
- logger.error(`Create account: handled invalid date for birthDate`, {
|
||||
- hasDate: !!date,
|
||||
- })
|
||||
- return new Date()
|
||||
- }
|
||||
- return date
|
||||
-}
|
||||
-
|
||||
export function StepInfo({
|
||||
onPressBack,
|
||||
isServerError,
|
||||
@@ -55,7 +43,6 @@
|
||||
|
||||
const emailInputRef = useRef<TextInput>(null)
|
||||
const passwordInputRef = useRef<TextInput>(null)
|
||||
- const birthdateInputRef = useRef<DateFieldRef>(null)
|
||||
|
||||
const [hasWarnedEmail, setHasWarnedEmail] = React.useState<boolean>(false)
|
||||
|
||||
@@ -76,10 +63,6 @@
|
||||
const emailChanged = prevEmailValueRef.current !== email
|
||||
const password = passwordValueRef.current
|
||||
|
||||
- if (!is13(state.dateOfBirth)) {
|
||||
- return
|
||||
- }
|
||||
-
|
||||
if (state.serviceDescription?.inviteCodeRequired && !inviteCode) {
|
||||
return dispatch({
|
||||
type: 'setError',
|
||||
@@ -246,44 +229,21 @@
|
||||
secureTextEntry
|
||||
autoComplete="new-password"
|
||||
autoCapitalize="none"
|
||||
- returnKeyType="next"
|
||||
- submitBehavior={native('blurAndSubmit')}
|
||||
- onSubmitEditing={native(() =>
|
||||
- birthdateInputRef.current?.focus(),
|
||||
- )}
|
||||
+ returnKeyType="done"
|
||||
passwordRules="minlength: 8;"
|
||||
/>
|
||||
</TextField.Root>
|
||||
</View>
|
||||
- <View>
|
||||
- <DateField.LabelText>
|
||||
- <Trans>Your birth date</Trans>
|
||||
- </DateField.LabelText>
|
||||
- <DateField.DateField
|
||||
- testID="date"
|
||||
- inputRef={birthdateInputRef}
|
||||
- value={state.dateOfBirth}
|
||||
- onChangeDate={date => {
|
||||
- dispatch({
|
||||
- type: 'setDateOfBirth',
|
||||
- value: sanitizeDate(new Date(date)),
|
||||
- })
|
||||
- }}
|
||||
- label={_(msg`Date of birth`)}
|
||||
- accessibilityHint={_(msg`Select your date of birth`)}
|
||||
- maximumDate={new Date()}
|
||||
- />
|
||||
- </View>
|
||||
<Policies
|
||||
serviceDescription={state.serviceDescription}
|
||||
- needsGuardian={!is18(state.dateOfBirth)}
|
||||
- under13={!is13(state.dateOfBirth)}
|
||||
+ needsGuardian={false}
|
||||
+ under13={false}
|
||||
/>
|
||||
</>
|
||||
) : undefined}
|
||||
</View>
|
||||
<BackNextButtons
|
||||
- hideNext={!is13(state.dateOfBirth)}
|
||||
+ hideNext={false}
|
||||
showRetry={isServerError}
|
||||
isLoading={state.isLoading}
|
||||
onBackPress={onPressBack}
|
||||
16
ios/patching/028-social-app-ios-remove-discover-feeds.patch
Normal file
16
ios/patching/028-social-app-ios-remove-discover-feeds.patch
Normal file
@@ -0,0 +1,16 @@
|
||||
diff --git a/src/screens/Search/Explore.tsx b/src/screens/Search/Explore.tsx
|
||||
--- a/src/screens/Search/Explore.tsx
|
||||
+++ b/src/screens/Search/Explore.tsx
|
||||
@@ -687,12 +687,7 @@ export function Explore({
|
||||
|
||||
if (useFullExperience) {
|
||||
i.push(trendingTopicsModule)
|
||||
- i.push(...suggestedFeedsModule)
|
||||
- i.push(...suggestedFollowsModule)
|
||||
- i.push(...suggestedStarterPacksModule)
|
||||
i.push(...feedPreviewsModule)
|
||||
- } else {
|
||||
- i.push(...suggestedFollowsModule)
|
||||
}
|
||||
|
||||
return i
|
||||
84
ios/patching/029-social-app-ios-remove-feeds-discover.patch
Normal file
84
ios/patching/029-social-app-ios-remove-feeds-discover.patch
Normal file
@@ -0,0 +1,84 @@
|
||||
diff --git a/src/view/screens/Feeds.tsx b/src/view/screens/Feeds.tsx
|
||||
--- a/src/view/screens/Feeds.tsx
|
||||
+++ b/src/view/screens/Feeds.tsx
|
||||
@@ -288,80 +288,7 @@ export function FeedsScreen(_props: Props) {
|
||||
}
|
||||
}
|
||||
|
||||
- if (!hasSession || (hasSession && canShowDiscoverSection)) {
|
||||
- slices.push({
|
||||
- key: 'popularFeedsHeader',
|
||||
- type: 'popularFeedsHeader',
|
||||
- })
|
||||
|
||||
- if (popularFeedsError || searchError) {
|
||||
- slices.push({
|
||||
- key: 'popularFeedsError',
|
||||
- type: 'error',
|
||||
- error: cleanError(
|
||||
- popularFeedsError?.toString() ?? searchError?.toString() ?? '',
|
||||
- ),
|
||||
- })
|
||||
- } else {
|
||||
- if (isUserSearching) {
|
||||
- if (isSearchPending || !searchResults) {
|
||||
- slices.push({
|
||||
- key: 'popularFeedsLoading',
|
||||
- type: 'popularFeedsLoading',
|
||||
- })
|
||||
- } else {
|
||||
- if (!searchResults || searchResults?.length === 0) {
|
||||
- slices.push({
|
||||
- key: 'popularFeedsNoResults',
|
||||
- type: 'popularFeedsNoResults',
|
||||
- })
|
||||
- } else {
|
||||
- slices = slices.concat(
|
||||
- searchResults.map(feed => ({
|
||||
- key: `popularFeed:${feed.uri}`,
|
||||
- type: 'popularFeed',
|
||||
- feedUri: feed.uri,
|
||||
- feed,
|
||||
- })),
|
||||
- )
|
||||
- }
|
||||
- }
|
||||
- } else {
|
||||
- if (isPopularFeedsFetching && !popularFeeds?.pages) {
|
||||
- slices.push({
|
||||
- key: 'popularFeedsLoading',
|
||||
- type: 'popularFeedsLoading',
|
||||
- })
|
||||
- } else {
|
||||
- if (!popularFeeds?.pages) {
|
||||
- slices.push({
|
||||
- key: 'popularFeedsNoResults',
|
||||
- type: 'popularFeedsNoResults',
|
||||
- })
|
||||
- } else {
|
||||
- for (const page of popularFeeds.pages || []) {
|
||||
- slices = slices.concat(
|
||||
- page.feeds.map(feed => ({
|
||||
- key: `popularFeed:${feed.uri}`,
|
||||
- type: 'popularFeed',
|
||||
- feedUri: feed.uri,
|
||||
- feed,
|
||||
- })),
|
||||
- )
|
||||
- }
|
||||
-
|
||||
- if (isPopularFeedsFetchingNextPage) {
|
||||
- slices.push({
|
||||
- key: 'popularFeedsLoadingMore',
|
||||
- type: 'popularFeedsLoadingMore',
|
||||
- })
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
return slices
|
||||
}, [
|
||||
hasSession,
|
||||
@@ -39,6 +39,9 @@ PATCH_FILES_IOS=(
|
||||
"024-social-app-ios-disable-external-services.patch"
|
||||
"025-social-app-ios-bskyweb-title.patch"
|
||||
"026-social-app-ios-serverinput-label.patch"
|
||||
"027-social-app-ios-remove-birthdate.patch"
|
||||
"028-social-app-ios-remove-discover-feeds.patch"
|
||||
"029-social-app-ios-remove-feeds-discover.patch"
|
||||
)
|
||||
|
||||
function ios-env() {
|
||||
|
||||
Reference in New Issue
Block a user