self-hosted version
|
@ -53,9 +53,9 @@ MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
|||
|
||||
GO_PUSH_ADDRESS=127.0.0.1
|
||||
GO_PUSH_IOS_PORT=8888
|
||||
GO_PUSH_IOS_TOPIC=com.pushdeer.app.ios
|
||||
GO_PUSH_IOS_TOPIC=com.pushdeer.self.ios
|
||||
GO_PUSH_IOS_CLIP_PORT=8889
|
||||
GO_PUSH_IOS_CLIP_TOPIC=com.pushdeer.app.ios.Clip
|
||||
GO_PUSH_IOS_CLIP_TOPIC=com.pushdeer.self.ios.Clip
|
||||
|
||||
ANDROID_PACKAGE=com.pushdeer.app.os
|
||||
MIPUSH_SECRET=NONE
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
40FAEC0827A93A5E00AB4653 /* EndpointView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40FAEC0727A93A5E00AB4653 /* EndpointView.swift */; };
|
||||
40FAEC0927A93A5E00AB4653 /* EndpointView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40FAEC0727A93A5E00AB4653 /* EndpointView.swift */; };
|
||||
4812F19BB0BFEFE089BC253E /* Pods_PushDeerClip.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E03C2088F4CD9F4C0848E1A5 /* Pods_PushDeerClip.framework */; };
|
||||
52163EB327773F8400594190 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52163EB227773F8400594190 /* MainView.swift */; };
|
||||
52163EB52777413B00594190 /* MessageListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52163EB42777413B00594190 /* MessageListView.swift */; };
|
||||
|
@ -101,6 +103,7 @@
|
|||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
40FAEC0727A93A5E00AB4653 /* EndpointView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EndpointView.swift; sourceTree = "<group>"; };
|
||||
52163EB227773F8400594190 /* MainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = "<group>"; };
|
||||
52163EB42777413B00594190 /* MessageListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageListView.swift; sourceTree = "<group>"; };
|
||||
52163EB62777415F00594190 /* DeviceListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceListView.swift; sourceTree = "<group>"; };
|
||||
|
@ -299,6 +302,7 @@
|
|||
children = (
|
||||
52EB90B12778D9F90048E0ED /* Common */,
|
||||
52F0243E277737470071D861 /* LoginView.swift */,
|
||||
40FAEC0727A93A5E00AB4653 /* EndpointView.swift */,
|
||||
52163EB227773F8400594190 /* MainView.swift */,
|
||||
52163EB62777415F00594190 /* DeviceListView.swift */,
|
||||
52163EB82777417900594190 /* KeyListView.swift */,
|
||||
|
@ -531,6 +535,7 @@
|
|||
52EB90B32778DA4E0048E0ED /* Line.swift in Sources */,
|
||||
526A1E732791E03900BA2177 /* Persistence.swift in Sources */,
|
||||
52F2C223277961D7006F08DC /* SettingsItemView.swift in Sources */,
|
||||
40FAEC0827A93A5E00AB4653 /* EndpointView.swift in Sources */,
|
||||
52163EB72777415F00594190 /* DeviceListView.swift in Sources */,
|
||||
52B8CF5F277DE660004CB680 /* AppleSignInButton.swift in Sources */,
|
||||
52163EB92777417900594190 /* KeyListView.swift in Sources */,
|
||||
|
@ -565,6 +570,7 @@
|
|||
52B8CF7C277E0BFB004CB680 /* KeyListView.swift in Sources */,
|
||||
526A1E742791E03900BA2177 /* Persistence.swift in Sources */,
|
||||
52B8CF7A277E0BFB004CB680 /* MessageListView.swift in Sources */,
|
||||
40FAEC0927A93A5E00AB4653 /* EndpointView.swift in Sources */,
|
||||
52B8CF83277E0C12004CB680 /* DeletableView.swift in Sources */,
|
||||
52B8CF81277E0BFB004CB680 /* LoginView.swift in Sources */,
|
||||
52B8CF7F277E0BFB004CB680 /* SettingsItemView.swift in Sources */,
|
||||
|
@ -754,13 +760,17 @@
|
|||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_ENTITLEMENTS = PushDeer/PushDeer.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
CURRENT_PROJECT_VERSION = 2;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"PushDeer/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = Y47WTLML2S;
|
||||
DEVELOPMENT_TEAM = HUJ6HAE4VU;
|
||||
"ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = YES;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = PushDeer/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "PushDeer·自架版";
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
|
||||
INFOPLIST_KEY_NSLocalNetworkUsageDescription = "APP需要访问本地网络以供调试(仅在开发时)";
|
||||
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "APP为您提供保存图片到相册的功能";
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
|
@ -770,8 +780,8 @@
|
|||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.wskfz.pushdeer.ios;
|
||||
MARKETING_VERSION = 1.0.1;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.pushdeer.self.ios;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTS_MACCATALYST = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
|
@ -788,13 +798,17 @@
|
|||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_ENTITLEMENTS = PushDeer/PushDeer.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
CURRENT_PROJECT_VERSION = 2;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"PushDeer/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = Y47WTLML2S;
|
||||
DEVELOPMENT_TEAM = HUJ6HAE4VU;
|
||||
"ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = YES;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = PushDeer/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "PushDeer·自架版";
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
|
||||
INFOPLIST_KEY_NSLocalNetworkUsageDescription = "APP需要访问本地网络以供调试(仅在开发时)";
|
||||
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "APP为您提供保存图片到相册的功能";
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
|
@ -804,8 +818,8 @@
|
|||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.wskfz.pushdeer.ios;
|
||||
MARKETING_VERSION = 1.0.1;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.pushdeer.self.ios;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTS_MACCATALYST = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
|
@ -822,9 +836,9 @@
|
|||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_ENTITLEMENTS = PushDeerClip/PushDeerClip.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
CURRENT_PROJECT_VERSION = 2;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"PushDeerClip/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = Y47WTLML2S;
|
||||
DEVELOPMENT_TEAM = HUJ6HAE4VU;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"$(inherited)",
|
||||
|
@ -832,7 +846,9 @@
|
|||
);
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = PushDeerClip/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = PushDeer;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "PushDeer·自架版";
|
||||
INFOPLIST_KEY_NSLocalNetworkUsageDescription = "APP需要访问本地网络以供调试(仅在开发时)";
|
||||
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "APP为您提供保存图片到相册的功能";
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
|
@ -843,9 +859,9 @@
|
|||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
MARKETING_VERSION = 1.0.1;
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) -D APPCLIP";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.wskfz.pushdeer.ios.Clip;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.pushdeer.self.ios.Clip;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
|
@ -861,9 +877,9 @@
|
|||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_ENTITLEMENTS = PushDeerClip/PushDeerClip.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
CURRENT_PROJECT_VERSION = 2;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"PushDeerClip/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = Y47WTLML2S;
|
||||
DEVELOPMENT_TEAM = HUJ6HAE4VU;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"$(inherited)",
|
||||
|
@ -871,7 +887,9 @@
|
|||
);
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = PushDeerClip/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = PushDeer;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "PushDeer·自架版";
|
||||
INFOPLIST_KEY_NSLocalNetworkUsageDescription = "APP需要访问本地网络以供调试(仅在开发时)";
|
||||
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "APP为您提供保存图片到相册的功能";
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
|
@ -882,9 +900,9 @@
|
|||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
MARKETING_VERSION = 1.0.1;
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) -D APPCLIP";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.wskfz.pushdeer.ios.Clip;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.pushdeer.self.ios.Clip;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
<?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>PreviewsEnabled</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 102 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 766 B |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 1021 B |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 7.1 KiB |
|
@ -1,122 +1,330 @@
|
|||
{
|
||||
"images": [
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "iphone",
|
||||
"filename": "icon-20@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "iphone",
|
||||
"filename": "icon-20@3x.png",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "iphone",
|
||||
"filename": "icon-29.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "iphone",
|
||||
"filename": "icon-29@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "iphone",
|
||||
"filename": "icon-29@3x.png",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"idiom": "iphone",
|
||||
"filename": "icon-40@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"idiom": "iphone",
|
||||
"filename": "icon-40@3x.png",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"size": "60x60",
|
||||
"idiom": "iphone",
|
||||
"filename": "icon-60@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "60x60",
|
||||
"idiom": "iphone",
|
||||
"filename": "icon-60@3x.png",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-20-ipad.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-20@2x-ipad.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-29-ipad.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-29@2x-ipad.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-40.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-40@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "76x76",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-76.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "76x76",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-76@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "83.5x83.5",
|
||||
"idiom": "ipad",
|
||||
"filename": "icon-83.5@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "1024x1024",
|
||||
"idiom": "ios-marketing",
|
||||
"filename": "icon-1024.png",
|
||||
"scale": "1x"
|
||||
}
|
||||
],
|
||||
"info": {
|
||||
"version": 1,
|
||||
"author": "icon.wuruihong.com"
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "40.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "60.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "29.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "58.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "87.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "80.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "120.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "57.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "1x",
|
||||
"size" : "57x57"
|
||||
},
|
||||
{
|
||||
"filename" : "114.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "57x57"
|
||||
},
|
||||
{
|
||||
"filename" : "120.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "180.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "20.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "40.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "29.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "58.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "40.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "80.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "50.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "50x50"
|
||||
},
|
||||
{
|
||||
"filename" : "100.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "50x50"
|
||||
},
|
||||
{
|
||||
"filename" : "72.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "72x72"
|
||||
},
|
||||
{
|
||||
"filename" : "144.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "72x72"
|
||||
},
|
||||
{
|
||||
"filename" : "76.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "152.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "167.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"filename" : "1024.png",
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
},
|
||||
{
|
||||
"filename" : "48.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "notificationCenter",
|
||||
"scale" : "2x",
|
||||
"size" : "24x24",
|
||||
"subtype" : "38mm"
|
||||
},
|
||||
{
|
||||
"filename" : "55.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "notificationCenter",
|
||||
"scale" : "2x",
|
||||
"size" : "27.5x27.5",
|
||||
"subtype" : "42mm"
|
||||
},
|
||||
{
|
||||
"filename" : "58.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "companionSettings",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "87.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "companionSettings",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "notificationCenter",
|
||||
"scale" : "2x",
|
||||
"size" : "33x33",
|
||||
"subtype" : "45mm"
|
||||
},
|
||||
{
|
||||
"filename" : "80.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40",
|
||||
"subtype" : "38mm"
|
||||
},
|
||||
{
|
||||
"filename" : "88.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "44x44",
|
||||
"subtype" : "40mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "46x46",
|
||||
"subtype" : "41mm"
|
||||
},
|
||||
{
|
||||
"filename" : "100.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "50x50",
|
||||
"subtype" : "44mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "appLauncher",
|
||||
"scale" : "2x",
|
||||
"size" : "51x51",
|
||||
"subtype" : "45mm"
|
||||
},
|
||||
{
|
||||
"filename" : "172.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "quickLook",
|
||||
"scale" : "2x",
|
||||
"size" : "86x86",
|
||||
"subtype" : "38mm"
|
||||
},
|
||||
{
|
||||
"filename" : "196.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "quickLook",
|
||||
"scale" : "2x",
|
||||
"size" : "98x98",
|
||||
"subtype" : "42mm"
|
||||
},
|
||||
{
|
||||
"filename" : "216.png",
|
||||
"idiom" : "watch",
|
||||
"role" : "quickLook",
|
||||
"scale" : "2x",
|
||||
"size" : "108x108",
|
||||
"subtype" : "44mm"
|
||||
},
|
||||
{
|
||||
"idiom" : "watch",
|
||||
"role" : "quickLook",
|
||||
"scale" : "2x",
|
||||
"size" : "117x117",
|
||||
"subtype" : "45mm"
|
||||
},
|
||||
{
|
||||
"filename" : "1024.png",
|
||||
"idiom" : "watch-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
},
|
||||
{
|
||||
"filename" : "16.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "16x16"
|
||||
},
|
||||
{
|
||||
"filename" : "32.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "16x16"
|
||||
},
|
||||
{
|
||||
"filename" : "32.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "32x32"
|
||||
},
|
||||
{
|
||||
"filename" : "64.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "32x32"
|
||||
},
|
||||
{
|
||||
"filename" : "128.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "128x128"
|
||||
},
|
||||
{
|
||||
"filename" : "256.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "128x128"
|
||||
},
|
||||
{
|
||||
"filename" : "256.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "256x256"
|
||||
},
|
||||
{
|
||||
"filename" : "512.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "256x256"
|
||||
},
|
||||
{
|
||||
"filename" : "512.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "512x512"
|
||||
},
|
||||
{
|
||||
"filename" : "1024.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "512x512"
|
||||
}
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 641 B |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 947 B |
Before Width: | Height: | Size: 947 B |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 9.6 KiB |
21
ios/PushDeer-iOS/PushDeer/Assets.xcassets/Images/logo2.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "logo2.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 108 KiB |
|
@ -12,11 +12,18 @@ struct ContentView: View {
|
|||
@EnvironmentObject private var store: AppState
|
||||
|
||||
var body: some View {
|
||||
if store.token.isEmpty {
|
||||
LoginView()
|
||||
} else {
|
||||
MainView()
|
||||
|
||||
if store.api_endpoint.isEmpty || store.api_endpoint=="https://api2.pushdeer.com"
|
||||
{
|
||||
EndpointView()
|
||||
}else{
|
||||
if store.token.isEmpty {
|
||||
LoginView()
|
||||
} else {
|
||||
MainView()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSPhotoLibraryAddUsageDescription</key>
|
||||
<string>APP为您提供保存图片到相册的功能</string>
|
||||
<key>CFBundleAllowMixedLocalizations</key>
|
||||
<true/>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
|
@ -19,7 +17,5 @@
|
|||
<array>
|
||||
<string>remote-notification</string>
|
||||
</array>
|
||||
<key>NSLocalNetworkUsageDescription</key>
|
||||
<string>APP需要访问本地网络以供调试(仅在开发时)</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -8,6 +8,10 @@
|
|||
<array>
|
||||
<string>Default</string>
|
||||
</array>
|
||||
<key>com.apple.developer.associated-domains</key>
|
||||
<array>
|
||||
<string>appclips:self.pushdeer.com</string>
|
||||
</array>
|
||||
<key>com.apple.security.app-sandbox</key>
|
||||
<true/>
|
||||
<key>com.apple.security.network.client</key>
|
||||
|
|
|
@ -15,6 +15,14 @@ class AppState: ObservableObject {
|
|||
UserDefaults.standard.set(token, forKey: "PushDeer_token")
|
||||
}
|
||||
}
|
||||
|
||||
/// API endpoint
|
||||
@Published var api_endpoint : String {
|
||||
didSet {
|
||||
UserDefaults.standard.set(api_endpoint, forKey: "PushDeer_api_endpoint")
|
||||
}
|
||||
}
|
||||
|
||||
/// 设备列表
|
||||
@Published var devices: [DeviceItem] = []
|
||||
/// key 列表
|
||||
|
@ -50,9 +58,12 @@ class AppState: ObservableObject {
|
|||
static let shared = AppState()
|
||||
private init() {
|
||||
let _token = UserDefaults.standard.string(forKey: "PushDeer_token")
|
||||
let _api_endpoint = UserDefaults.standard.string(forKey: "PushDeer_api_endpoint")
|
||||
|
||||
let _tabSelectedIndex = UserDefaults.standard.integer(forKey: "PushDeer_tabSelectedIndex")
|
||||
let _isShowTestPush = UserDefaults.standard.object(forKey: "PushDeer_isShowTestPush")
|
||||
token = _token ?? ""
|
||||
api_endpoint = _api_endpoint ?? "https://api2.pushdeer.com"
|
||||
tabSelectedIndex = _tabSelectedIndex
|
||||
isShowTestPush = _isShowTestPush as? Bool ?? true
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ enum PushDeerApi {
|
|||
}
|
||||
|
||||
extension PushDeerApi: TargetType {
|
||||
var baseURL: URL { URL( string: "http://pushdeer.wskfz.com:8800" )! }
|
||||
var baseURL: URL { URL( string: AppState.shared.api_endpoint )! }
|
||||
var path: String {
|
||||
switch self {
|
||||
case .fake:
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
//
|
||||
// EndpointView.swift
|
||||
// PushDeer
|
||||
//
|
||||
// Created by Easy on 2022/2/1.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct EndpointView: View {
|
||||
@EnvironmentObject private var store: AppState
|
||||
@State private var endpoint = ""
|
||||
var body: some View {
|
||||
VStack{
|
||||
Spacer()
|
||||
|
||||
Image("logo2").resizable()
|
||||
.scaledToFit()
|
||||
.frame(height: 200)
|
||||
|
||||
Spacer()
|
||||
|
||||
TextField(
|
||||
"请输入API服务的 endpoint url",
|
||||
text:$endpoint
|
||||
).frame(width: 400, height: 48)
|
||||
.padding(EdgeInsets(top: 0, leading: 6, bottom: 0, trailing: 6))
|
||||
.cornerRadius(5)
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 5)
|
||||
.stroke(lineWidth: 1.0)
|
||||
)
|
||||
|
||||
Text("您在此应用中的数据都将发送到 endpoint 指向的服务器")
|
||||
|
||||
Button("保存") {
|
||||
//
|
||||
if endpoint.isEmpty {
|
||||
HToast.showError(NSLocalizedString("Endpoint 不能为空", comment: ""))
|
||||
return
|
||||
}
|
||||
|
||||
if endpoint.last == "/" {
|
||||
endpoint = String(endpoint.dropLast())
|
||||
}
|
||||
|
||||
if endpoint == "https://api2.pushdeer.com" {
|
||||
HToast.showError(NSLocalizedString("请输入自架服务器的 Endpoint 或者使用非自架版PushDeer", comment: ""))
|
||||
return
|
||||
}
|
||||
|
||||
store.api_endpoint = endpoint
|
||||
}
|
||||
.font(.system(size: 20))
|
||||
.frame(width: 104, height: 42)
|
||||
.foregroundColor(Color.white)
|
||||
.background(Color("BtnBgColor"))
|
||||
.cornerRadius(8)
|
||||
.padding(EdgeInsets(top: 12, leading: 26, bottom: 0, trailing: 24))
|
||||
|
||||
Spacer()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
struct EndpointView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
EndpointView().environmentObject(AppState.shared)
|
||||
}
|
||||
}
|
|
@ -20,6 +20,13 @@ struct LoginView: View {
|
|||
Image("logo.with.space")
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
// .onLongPressGesture(minimumDuration: 0.3) {
|
||||
// store.api_endpoint = ""
|
||||
// }
|
||||
Button("重置API endpoint")
|
||||
{
|
||||
store.api_endpoint = ""
|
||||
}
|
||||
Spacer()
|
||||
if showLoading {
|
||||
ProgressView()
|
||||
|
|
|
@ -20,9 +20,10 @@ struct SettingsView: View {
|
|||
}
|
||||
.padding(EdgeInsets(top: 18, leading: 20, bottom: 0, trailing: 20))
|
||||
|
||||
SettingsItemView(title: NSLocalizedString("自定义服务器", comment: ""), button: NSLocalizedString("扫码", comment: "")) {
|
||||
SettingsItemView(title: NSLocalizedString("API endpoint", comment: ""), button: NSLocalizedString("重置", comment: "")) {
|
||||
store.api_endpoint = "https://api2.pushdeer.com"
|
||||
store.token = ""
|
||||
}
|
||||
.disabled(true)
|
||||
.padding(EdgeInsets(top: 18, leading: 20, bottom: 0, trailing: 20))
|
||||
|
||||
SettingsItemView(title: NSLocalizedString("喜欢PushDeer?", comment: ""), button: NSLocalizedString("评分", comment: "")) {
|
||||
|
|
|
@ -2,6 +2,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>CFBundleAllowMixedLocalizations</key>
|
||||
<true/>
|
||||
<key>NSAppClip</key>
|
||||
<dict>
|
||||
<key>NSAppClipRequestEphemeralUserNotification</key>
|
||||
|
@ -18,11 +20,5 @@
|
|||
<array>
|
||||
<string>_adhp._tcp</string>
|
||||
</array>
|
||||
<key>NSLocalNetworkUsageDescription</key>
|
||||
<string>APP需要访问本地网络以供调试(仅在开发时)</string>
|
||||
<key>CFBundleAllowMixedLocalizations</key>
|
||||
<true/>
|
||||
<key>NSPhotoLibraryAddUsageDescription</key>
|
||||
<string>APP为您提供保存图片到相册的功能</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -8,9 +8,13 @@
|
|||
<array>
|
||||
<string>Default</string>
|
||||
</array>
|
||||
<key>com.apple.developer.associated-domains</key>
|
||||
<array>
|
||||
<string>appclips:self.pushdeer.com</string>
|
||||
</array>
|
||||
<key>com.apple.developer.parent-application-identifiers</key>
|
||||
<array>
|
||||
<string>$(AppIdentifierPrefix)com.wskfz.pushdeer.ios</string>
|
||||
<string>$(AppIdentifierPrefix)com.pushdeer.self.ios</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
*.yml
|
||||
*.p12
|
||||
*.p8
|
||||
ios.p12
|
||||
clip.p12
|
||||
ios.p8
|
||||
clip.p8
|
|
@ -0,0 +1,48 @@
|
|||
core:
|
||||
enabled: true # enable httpd server
|
||||
address: "127.0.0.1" # ip address to bind (default: any)
|
||||
shutdown_timeout: 30 # default is 30 second
|
||||
port: "8889" # ignore this port number if auto_tls is enabled (listen 443).
|
||||
sync: false
|
||||
max_notification: 1
|
||||
cert_path: "cc.p12"
|
||||
key_path: ""
|
||||
cert_base64: ""
|
||||
key_base64: ""
|
||||
http_proxy: ""
|
||||
pid:
|
||||
enabled: false
|
||||
path: "gorush.pid"
|
||||
override: true
|
||||
|
||||
api:
|
||||
push_uri: "/api/push"
|
||||
stat_go_uri: "/api/stat/go"
|
||||
stat_app_uri: "/api/stat/app"
|
||||
config_uri: "/api/config"
|
||||
sys_stat_uri: "/sys/stats"
|
||||
metric_uri: "/metrics"
|
||||
health_uri: "/healthz"
|
||||
|
||||
ios:
|
||||
enabled: true
|
||||
key_path: "cc.p12"
|
||||
key_base64: "" # load iOS key from base64 input
|
||||
key_type: "p12" # could be pem, p12 or p8 type
|
||||
password: "64wtMhU4mULj" # certificate password, default as empty string.
|
||||
production: false
|
||||
max_concurrent_pushes: 100 # just for push ios notification
|
||||
max_retry: 0 # resend fail notification, default value zero is disabled
|
||||
key_id: "66M7BD2GCV" # KeyID from developer account (Certificates, Identifiers & Profiles -> Keys)
|
||||
team_id: "HUJ6HAE4VU" # TeamID from developer account (View Account -> Membership)
|
||||
|
||||
log:
|
||||
format: "string" # string or json
|
||||
access_log: "stdout" # stdout: output to console, or define log path like "log/access_log"
|
||||
access_level: "debug"
|
||||
error_log: "stderr" # stderr: output to console, or define log path like "log/error_log"
|
||||
error_level: "error"
|
||||
hide_token: true
|
||||
|
||||
stat:
|
||||
engine: "memory" # support memory, redis, boltdb, buntdb or leveldb
|
|
@ -0,0 +1,48 @@
|
|||
core:
|
||||
enabled: true # enable httpd server
|
||||
address: "127.0.0.1" # ip address to bind (default: any)
|
||||
shutdown_timeout: 30 # default is 30 second
|
||||
port: "8888" # ignore this port number if auto_tls is enabled (listen 443).
|
||||
sync: false
|
||||
max_notification: 1
|
||||
cert_path: "c.p12"
|
||||
key_path: ""
|
||||
cert_base64: ""
|
||||
key_base64: ""
|
||||
http_proxy: ""
|
||||
pid:
|
||||
enabled: false
|
||||
path: "gorush.pid"
|
||||
override: true
|
||||
|
||||
api:
|
||||
push_uri: "/api/push"
|
||||
stat_go_uri: "/api/stat/go"
|
||||
stat_app_uri: "/api/stat/app"
|
||||
config_uri: "/api/config"
|
||||
sys_stat_uri: "/sys/stats"
|
||||
metric_uri: "/metrics"
|
||||
health_uri: "/healthz"
|
||||
|
||||
ios:
|
||||
enabled: true
|
||||
key_path: "c.p12"
|
||||
key_base64: "" # load iOS key from base64 input
|
||||
key_type: "p12" # could be pem, p12 or p8 type
|
||||
password: "64wtMhU4mULj" # certificate password, default as empty string.
|
||||
production: false
|
||||
max_concurrent_pushes: 100 # just for push ios notification
|
||||
max_retry: 0 # resend fail notification, default value zero is disabled
|
||||
key_id: "66M7BD2GCV" # KeyID from developer account (Certificates, Identifiers & Profiles -> Keys)
|
||||
team_id: "HUJ6HAE4VU" # TeamID from developer account (View Account -> Membership)
|
||||
|
||||
log:
|
||||
format: "string" # string or json
|
||||
access_log: "stdout" # stdout: output to console, or define log path like "log/access_log"
|
||||
access_level: "debug"
|
||||
error_log: "stderr" # stderr: output to console, or define log path like "log/error_log"
|
||||
error_level: "error"
|
||||
hide_token: true
|
||||
|
||||
stat:
|
||||
engine: "memory" # support memory, redis, boltdb, buntdb or leveldb
|