app_permission_statistics 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6cf028216ad0a5eb9e5db38cc608dfa4c52ff7df9cd4a3edbbb9e34a1c56af96
4
- data.tar.gz: 0c2556087ea1bae27ddb2f0f175f34f503fff720c9bae41c6810f23cf24f9cb2
3
+ metadata.gz: 1538115d6801db30b90990fe76cceaee1c4c0c83c8577aca52385802d8ba2ae7
4
+ data.tar.gz: 024e5fd5050a2b2be833531f679b30859f637d3868da9c93acdc5de8b3fbc81b
5
5
  SHA512:
6
- metadata.gz: 624c434805872eeb40a78bdea1e743b5c62e71dc30f21577736efa06b2ab7af17c446c664aae43a6c6e8dbf41224fcaba60a9a39229b3e633f1596a56be33e1f
7
- data.tar.gz: 6846d46f81aa9ce88667948dd379c19b3562356811898028fb9f1906fe5d9309caa72468067faba8f6d9dcbcb7352383ca336483a8a3f9a652199fbd41dbf3c2
6
+ metadata.gz: 2aeb917766edc4b1576e226d04bdade076bcc6df271dbb7bb5a97b5c541b35e636fac50b9542365d08e95231b03099644f887741bbac1c2f0a20c56192998ee8
7
+ data.tar.gz: 1647ad46fed27b7565e6a634d0a6b0037870f1449cfe38f6312a5591f251e95ae99986937a5e9f11ce0f3a5ed31a9067eb50e970c796b49a98493f24944fa110
data/Gemfile CHANGED
@@ -7,4 +7,5 @@ gemspec
7
7
 
8
8
  gem "rake", "~> 13.0"
9
9
  gem 'crimp'
10
- gem 'zip'
10
+ gem 'zip-zip'
11
+ gem 'terminal-table'
data/Gemfile.lock CHANGED
@@ -1,23 +1,30 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- app_permission_statistics (0.1.0)
4
+ app_permission_statistics (0.1.1)
5
5
  CFPropertyList (>= 2.3.4, < 3.1.0)
6
6
  crimp
7
+ rubyzip (>= 1.2, < 3.0)
8
+ terminal-table
7
9
  yaml
8
10
 
9
11
  GEM
10
12
  remote: https://rubygems.org/
11
13
  specs:
12
- CFPropertyList (3.0.5)
14
+ CFPropertyList (3.0.6)
13
15
  rexml
14
16
  crimp (1.0.0)
15
17
  deepsort
16
18
  deepsort (0.4.5)
17
19
  rake (13.0.6)
18
- rexml (3.2.4)
19
- yaml (0.1.1)
20
- zip (2.0.2)
20
+ rexml (3.2.5)
21
+ rubyzip (2.3.2)
22
+ terminal-table (3.0.2)
23
+ unicode-display_width (>= 1.1.1, < 3)
24
+ unicode-display_width (2.4.2)
25
+ yaml (0.2.1)
26
+ zip-zip (0.3)
27
+ rubyzip (>= 1.0.0)
21
28
 
22
29
  PLATFORMS
23
30
  x86_64-darwin-21
@@ -27,7 +34,8 @@ DEPENDENCIES
27
34
  bundler (>= 1.12)
28
35
  crimp
29
36
  rake (~> 13.0)
30
- zip
37
+ terminal-table
38
+ zip-zip
31
39
 
32
40
  BUNDLED WITH
33
41
  2.2.3
data/README.md CHANGED
@@ -89,13 +89,19 @@ remove capabilitys :
89
89
  #### 涉及的文件
90
90
 
91
91
  * info.plist
92
- * Runner.entitlements
92
+ * Runner.entitlements
93
+
94
+ Capability被添加后的,保存一些权利( entitlement ) 声明、设置清单
95
+
93
96
  * {embedded/xxx-xx-xx}.mobileprovision
94
- embedded.mobileprovision 存在于IPA包中,被发送到Appstore,真正安装的app 却没有这个文件
95
- xxx-xx-xx.mobileprovision 在打包成IPA前用于工程签名的描述文件
97
+
98
+ embedded.mobileprovision 存在于IPA包中,被发送到Appstore,真正安装的app 却没有这个文件
99
+
100
+ xxx-xx-xx.mobileprovision 在打包成IPA前用于工程签名的描述文件
96
101
  两者基本一致,包括里面的Entitlements字段, 保存一些 Capabilitys被添加后的 声明、设置
97
102
  * Runner.xcodeproj
98
- 工程文件SystemCapabilities字段包含了一些Capabilitys声明
103
+
104
+ 工程文件SystemCapabilities字段包含了一些Capabilitys 的开关字段
99
105
 
100
106
 
101
107
  #### 文件说明:
@@ -30,6 +30,8 @@ Gem::Specification.new do |spec|
30
30
  spec.add_runtime_dependency "crimp"
31
31
  spec.add_dependency 'CFPropertyList', '< 3.1.0', '>= 2.3.4'
32
32
  spec.add_development_dependency 'bundler', '>= 1.12'
33
+ spec.add_dependency 'rubyzip', '>= 1.2', '< 3.0'
34
+ spec.add_dependency 'terminal-table'
33
35
 
34
36
  # Uncomment to register a new dependency of your gem
35
37
  # spec.add_dependency "example-gem", "~> 1.0"
@@ -3,6 +3,7 @@
3
3
  require_relative "helper"
4
4
  require 'fileutils'
5
5
  require 'yaml'
6
+ require 'terminal-table'
6
7
 
7
8
  module AppPermissionStatistics
8
9
 
@@ -19,19 +20,21 @@ module AppPermissionStatistics
19
20
  @store_path = store_path
20
21
  end
21
22
 
22
- def analyze
23
- load_version
24
- return singleGenerate unless @versions.length > 1
25
- pre_version = @versions[1]
26
- cur_version = @versions[0]
27
- pre_entitlements = load_entitlements_yaml(pre_version)
28
- cur_entitlements = load_entitlements_yaml(cur_version)
23
+ def analyze(versions=[])
24
+ versions.sort{|x,y| y<=>x } unless versions.size < 2
25
+ if versions.length < 2
26
+ load_version
27
+ return singleGenerate unless @versions.length > 1
28
+ else
29
+ @versions = versions
30
+ end
31
+ pre_entitlements = load_entitlements_yaml(@versions[1])
32
+ cur_entitlements = load_entitlements_yaml(@versions[0])
29
33
  return "" unless pre_entitlements.any?
30
34
  return "" unless cur_entitlements.any?
31
35
 
32
- capabilities_diff = analyze_capabilities_diff(pre_entitlements,cur_entitlements)
33
- usage_descs_diff = analyze_usage_descs_diff(pre_entitlements,cur_entitlements);
34
- report_path = generate(capabilities_diff,usage_descs_diff)
36
+ capabilities_diff = analyze_diff(pre_entitlements,cur_entitlements)
37
+ report_path = generate(capabilities_diff)
35
38
  report_path
36
39
  end
37
40
 
@@ -49,23 +52,19 @@ module AppPermissionStatistics
49
52
  end
50
53
 
51
54
 
52
- def generate(capabilities_diff,usage_descs_diff)
55
+ def generate(capabilities_diff)
53
56
  return unless @versions.length > 1
54
57
  cur_version = @versions[0]
55
58
  pre_version = @versions[1]
56
-
57
- output = "\n" + "compared #{cur_version} #{pre_version}"
59
+ output = ""
58
60
  output += "\n" + capabilities_diff unless capabilities_diff.empty?
59
- output += "\n" + usage_descs_diff unless usage_descs_diff.empty?
60
- output += "\n\nThere is no difference between the two versions \n\n" unless (!capabilities_diff.empty? || !usage_descs_diff.empty?)
61
+ output += "\n\nThere is no difference between the two versions 【 #{@versions[0]} vs #{@versions[1]}】\n\n" unless !capabilities_diff.empty?
61
62
  puts output
62
- puts "----------------------------------------"
63
63
  output += "\n\n\n#{cur_version} entitlements list: "
64
64
  output += "\n" + read_each_line(cur_version)
65
65
  output += "\n" + "----------------------------------------"
66
66
  output += "\n\n#{pre_version} entitlements list: "
67
67
  output += "\n" + read_each_line(pre_version)
68
- output += "\n" + "----------------------------------------"
69
68
 
70
69
  report_path = report_file_name(path: @report_path)
71
70
  File.open(report_path, 'w') { |file|
@@ -101,120 +100,98 @@ module AppPermissionStatistics
101
100
  yaml_content
102
101
  end
103
102
 
104
- def analyze_capabilities_diff(pre,cur)
103
+ def analyze_diff(pre,cur)
105
104
  output = ""
106
105
  cur_capabilities_summary = cur['Capabilities_Summary']
107
106
  pre_capabilities_summary = pre['Capabilities_Summary']
108
- cur_capabilities = cur['Capabilities']
109
- pre_capabilities = pre['Capabilities']
110
- output = ""
107
+
108
+ cur_usage_descs_summary = cur['PermissionsUsageDescription_Summary']
109
+ pre_usage_descs_summary = pre['PermissionsUsageDescription_Summary']
110
+
111
+ # cur_capabilities = cur['Capabilities']
112
+ # pre_capabilities = pre['Capabilities']
113
+
114
+ # cur_usage_descs = cur['PermissionsUsageDescription']
115
+ # pre_usage_descs = pre['PermissionsUsageDescription']
116
+
111
117
  # 修改
112
118
  comm_capabilities = cur_capabilities_summary.keys & pre_capabilities_summary.keys
113
- modifys = modifys_cur = modifys_pre = ""
119
+ modifyed_rows = []
114
120
  comm_capabilities.each do |key|
115
121
  if cur_capabilities_summary[key] != pre_capabilities_summary[key]
116
- modifys_cur += "\n" + '- ' + key + ': ' + cur_capabilities[key].to_s
117
- modifys_pre += "\n" + '- ' + key + ': ' + pre_capabilities[key].to_s
122
+ modifyed_rows << [ '- ' + key ]
118
123
  end
119
124
  end
120
125
 
121
- modifys += "\n" + @versions[0] unless modifys_cur.empty?
122
- modifys += modifys_cur unless modifys_cur.empty?
123
- modifys += "\n" + @versions[1] unless modifys_pre.empty?
124
- modifys += modifys_pre unless modifys_pre.empty?
125
-
126
- #新增
127
- add_capabilities = cur_capabilities_summary.keys - pre_capabilities_summary.keys
128
- adds = ""
129
- add_capabilities.each do |key|
130
- adds += "\n" + '- ' + key + ': ' + cur_capabilities[key].to_s
131
- end
132
-
133
- #移除
134
- remove_capabilities = pre_capabilities_summary.keys - cur_capabilities_summary.keys
135
- removes = ""
136
- remove_capabilities.each do |key|
137
- removes += "\n" + '- ' + key + ': ' + pre_capabilities[key].to_s
138
- end
139
-
140
- if !modifys.empty?
141
- output += "\n" + "modify capabilitys : "
142
- output += modifys
143
- output += "\n------------------------------"
144
- end
145
-
146
- if !adds.empty?
147
- output += "\n" + "add capabilitys : "
148
- output += adds
149
- output += "\n------------------------------"
150
- end
151
-
152
- if !removes.empty?
153
- output += "\n" + "remove capabilitys : "
154
- output += removes
155
- output += "\n------------------------------"
156
- end
157
-
158
- output
159
- end
160
-
161
- def analyze_usage_descs_diff(pre,cur)
162
- output = ""
163
- cur_usage_descs_summary = cur['PermissionsUsageDescription_Summary']
164
- pre_usage_descs_summary = pre['PermissionsUsageDescription_Summary']
165
-
166
- cur_usage_descs = cur['PermissionsUsageDescription']
167
- pre_usage_descs = pre['PermissionsUsageDescription']
168
-
169
- # 修改
170
126
  comm_usage_descs = cur_usage_descs_summary.keys & pre_usage_descs_summary.keys
171
- modifys = modifys_cur = modifys_pre = ""
172
127
  comm_usage_descs.each do |key|
173
128
  if cur_usage_descs_summary[key] != pre_usage_descs_summary[key]
174
- modifys_cur += "\n" + '- ' + key + ': ' + cur_usage_descs[key].to_s
175
- modifys_pre += "\n" + '- ' + key + ': ' + pre_usage_descs[key].to_s
129
+ modifyed_rows << [ '- ' + key ]
176
130
  end
177
131
  end
178
132
 
179
- modifys += "\n" + @versions[0] unless modifys_cur.empty?
180
- modifys += modifys_cur unless modifys_cur.empty?
181
- modifys += "\n" + @versions[1] unless modifys_pre.empty?
182
- modifys += modifys_pre unless modifys_pre.empty?
183
133
 
184
134
  #新增
135
+ add_capabilities = cur_capabilities_summary.keys - pre_capabilities_summary.keys
136
+ added_rows = []
137
+ add_capabilities.each do |key|
138
+ added_rows << ['- ' + key ] #+ ': ' + cur_capabilities[key].to_s
139
+ end
140
+
185
141
  add_usage_descs = cur_usage_descs_summary.keys - pre_usage_descs_summary.keys
186
- adds = ""
187
142
  add_usage_descs.each do |key|
188
- adds += "\n" + '- ' + key + ': ' + cur_usage_descs[key].to_s
143
+ added_rows << [ '- ' + key ] #+ ': ' + cur_usage_descs[key].to_s
189
144
  end
190
145
 
191
146
  #移除
147
+ remove_capabilities = pre_capabilities_summary.keys - cur_capabilities_summary.keys
148
+ removed_rows = []
149
+ remove_capabilities.each do |key|
150
+ removed_rows << ['- ' + key ] #+ ': ' + pre_capabilities[key].to_s
151
+ end
152
+
192
153
  remove_usage_descs = pre_usage_descs_summary.keys - cur_usage_descs_summary.keys
193
- removes = ""
194
154
  remove_usage_descs.each do |key|
195
- removes += "\n" + '- ' + key + ': ' + pre_usage_descs[key].to_s
155
+ removed_rows << [ '- ' + key ] #+ ': ' + pre_usage_descs[key].to_s
196
156
  end
197
157
 
198
- if !modifys.empty?
199
- output += "\n" + "modify permissions usage description : "
200
- output += modifys
201
- output += "\n------------------------------"
158
+ # Summary
159
+ max_count = [modifyed_rows.size,added_rows.size,removed_rows.size].max
160
+ if max_count == 0
161
+ return output
202
162
  end
203
163
 
204
- if !adds.empty?
205
- output += "\n" + "add permissions usage description : "
206
- output += adds
207
- output += "\n------------------------------"
164
+ table = Terminal::Table.new do |t|
165
+ t.title = "Compared #{@versions[0]} to #{@versions[1]} Summary"
166
+ t.add_row ["Modifyed", modifyed_rows.size ]
167
+ t.add_row ["New", added_rows.size ]
168
+ t.add_row ["Remove", removed_rows.size ]
208
169
  end
170
+ output += table.to_s + "\n\n"
209
171
 
210
- if !removes.empty?
211
- output += "\n" + "remove permissions usage description : "
212
- output += removes
213
- output += "\n------------------------------"
172
+ def get_value(arr,n)
173
+ return "" unless arr.length > n
174
+ return arr[n].first unless arr.length == 0
175
+ return ""
214
176
  end
215
177
 
178
+ detail_table = Terminal::Table.new do |t|
179
+ t.headings = ['Modifyed', 'New', 'Remove']
180
+ (0..max_count-1).each do |n|
181
+ t.add_row [
182
+ get_value(modifyed_rows,n),
183
+ get_value(added_rows,n),
184
+ get_value(removed_rows,n),
185
+ ]
186
+ end
187
+ end
188
+ output += detail_table.to_s + "\n\n"
216
189
  output
217
- end
190
+ end
191
+
218
192
  end
219
193
 
220
- end
194
+ end
195
+
196
+ # obj = AppPermissionStatistics::Analyzer.new('com.ola.chat')
197
+ # obj.analyze(["5.3.0","5.1.0"])
@@ -58,7 +58,8 @@ module AppPermissionStatistics
58
58
  end
59
59
  version = plistInfo.version
60
60
  if !yaml_content.include?(version)
61
- yaml_content.unshift(version)
61
+ yaml_content.push(version)
62
+ yaml_content.sort{|x,y| y<=>x } unless yaml_content.size < 2
62
63
  File.open(yaml_name, "w") { |file| file.write(yaml_content.to_yaml) }
63
64
  end
64
65
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppPermissionStatistics
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
@@ -30,7 +30,7 @@ module AppPermissionStatistics
30
30
  end
31
31
  compare_extracter.extract_update
32
32
  extracter.extract_update
33
- analyzer.analyze
33
+ analyzer.analyze([extracter.plistInfo.version,compare_extracter.plistInfo.version])
34
34
  extracter.clear!
35
35
  compare_extracter.clear!
36
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app_permission_statistics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - bin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-03 00:00:00.000000000 Z
11
+ date: 2023-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yaml
@@ -72,6 +72,40 @@ dependencies:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '1.12'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rubyzip
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '1.2'
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: '3.0'
85
+ type: :runtime
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '1.2'
92
+ - - "<"
93
+ - !ruby/object:Gem::Version
94
+ version: '3.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: terminal-table
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
75
109
  description: app permission statistics from ipas
76
110
  email:
77
111
  - tang.bin@olaola.chat
@@ -86,7 +120,6 @@ files:
86
120
  - Gemfile.lock
87
121
  - README.md
88
122
  - Rakefile
89
- - analyze_report
90
123
  - app_permission_statistics.gemspec
91
124
  - bin/app_permission_statistics
92
125
  - bin/setup
data/analyze_report DELETED
@@ -1,481 +0,0 @@
1
-
2
- compared 5.3.0 5.2.0
3
-
4
- add capabilitys :
5
- - ClassKit: {"com.apple.developer.ClassKit-environment"=>"development"}
6
- - MDM Managed Associated Domains: {"com.apple.developer.associated-domains.mdm-managed"=>true}
7
- - AutoFill Credential Provider: {"com.apple.developer.authentication-services.autofill-credential-provider"=>true}
8
- - Data Protection: {"com.apple.developer.default-data-protection"=>"NSFileProtectionComplete"}
9
- - App Attest: {"com.apple.developer.devicecheck.appattest-environment"=>"development"}
10
- - Game Center: {"com.apple.developer.game-center"=>true}
11
- - HealthKit: {"com.apple.developer.healthkit"=>true, "com.apple.developer.healthkit.access"=>["health-records"]}
12
- - HomeKit: {"com.apple.developer.homekit"=>true}
13
- - iCloud: {"com.apple.developer.icloud-services"=>["CloudKit"], "com.apple.developer.icloud-container-identifiers"=>[]}
14
- - Apple Pay: {"com.apple.developer.in-app-payments"=>["merchant.xxxx"]}
15
- - Extended Virtual Address Space: {"com.apple.developer.kernel.extended-virtual-addressing"=>true}
16
- - Hotspot: {"com.apple.developer.networking.HotspotConfiguration"=>true}
17
- - Multipath: {"com.apple.developer.networking.multipath"=>true}
18
- - Network Extensions: {"com.apple.developer.networking.networkextension"=>["app-proxy-provider"]}
19
- - Personal VPN: {"com.apple.developer.networking.vpn.api"=>["allow-vpn"]}
20
- - Access WiFi Information: {"com.apple.developer.networking.wifi-info"=>true}
21
- - NFC Tag Reading: {"com.apple.developer.nfc.readersession.formats"=>["TAG"]}
22
- - Wallet: {"com.apple.developer.pass-type-identifiers"=>["$(TeamIdentifierPrefix)*"]}
23
- - SiriKit: {"com.apple.developer.siri"=>true}
24
- - Fonts: {"com.apple.developer.user-fonts"=>["system-installation"]}
25
- - Wireless Accessory Configuration: {"com.apple.external-accessory.wireless-configuration"=>true}
26
- - Inter-App Audio: {"inter-app-audio"=>true}
27
- - Keychain sharing: {"keychain-access-groups"=>["$(AppIdentifierPrefix)com.ola.chat"]}
28
- ------------------------------
29
-
30
-
31
- 5.3.0 entitlements list:
32
-
33
- ---
34
-
35
- Capabilities_Summary:
36
-
37
- In-App Purchase: 6413cfeb7a89f7e0a8872f82b919c0d9
38
-
39
- Push Notifications: 3250c7ff60c20cfc4aaf7f6791f621df
40
-
41
- ClassKit: 0ab2c8bb2a021beda00a0d4e6a65093a
42
-
43
- Sign In with Apple: 6642376617933be4ae31b129fe403e45
44
-
45
- Associated Domains: fa57cad0e93096199dfdefff0b6e8b92
46
-
47
- MDM Managed Associated Domains: d479f7996a4c3f82893b79d2361311f1
48
-
49
- AutoFill Credential Provider: 316f5abc6e0273338046ebb32ed076db
50
-
51
- Data Protection: b94eb6e40823b5c674de4ad4dd1c9734
52
-
53
- App Attest: 3e66df09c974344e2c16c3e875ade176
54
-
55
- Game Center: dd324a9aec2a55ca5573f5cb810b58e8
56
-
57
- HealthKit: 94ab8d6e039b1c6b135cf70e0fa9240d
58
-
59
- HomeKit: 68dfbc37633b4583a3c2ec50dc1c59c6
60
-
61
- iCloud: 2f650c9ade273e460d54789666112ae8
62
-
63
- Apple Pay: 2187796935490abf56a2ba4b93da459c
64
-
65
- Extended Virtual Address Space: f88e975f4f6b323f956df612ca056eec
66
-
67
- Hotspot: ee58dbfd5c0acc611961dc56f8219ddf
68
-
69
- Multipath: 659f7b23b5dcbb1044502b01eac16dbd
70
-
71
- Network Extensions: ce506e239bec78bd2ba9b26550fd4c4d
72
-
73
- Personal VPN: ee79bdeedc8217160a331bc326034774
74
-
75
- Access WiFi Information: e98b72e88cbd24b0639b7f9e684e0d8c
76
-
77
- NFC Tag Reading: 60016cce4b8845b0f777a731f06c2ef1
78
-
79
- Wallet: fefc7cf9c4f7b017d060ca5561215c9c
80
-
81
- SiriKit: ce40d86d84b2e46b4158ba77c3170f12
82
-
83
- Fonts: bfcebec5a589a962d019ef3a2755f1c8
84
-
85
- Wireless Accessory Configuration: d9ce63e447005bf4a4c936e718597637
86
-
87
- App Groups: 0b5c02cd472237b540efda80297cbe79
88
-
89
- Inter-App Audio: 7abecaa3b35ccaf065573d44a34fc67c
90
-
91
- Keychain sharing: e86942b735901fee337fc5f4a57401e3
92
-
93
- BackgroundModes: d741c9bb5ce83f8ac40d365ae4a92c5b
94
-
95
- DisableMinimumFrameDurationOnPhone: 00c4662d62ca111b7a420649beaf5bf7
96
-
97
- RequiredDeviceCapabilities: ce80d3d730b0bea7ffd2bfc2f2d8f4a4
98
-
99
- AppTransportSecurity: 931810d61eb28fc7e1b358fb592e7ecc
100
-
101
- Capabilities:
102
-
103
- In-App Purchase: true
104
-
105
- Push Notifications:
106
-
107
- aps-environment: development
108
-
109
- ClassKit:
110
-
111
- com.apple.developer.ClassKit-environment: development
112
-
113
- Sign In with Apple:
114
-
115
- com.apple.developer.applesignin:
116
-
117
- - Default
118
-
119
- Associated Domains:
120
-
121
- com.apple.developer.associated-domains:
122
-
123
- - applinks:partyhub.onelink.me
124
-
125
- - applinks:partying-ios-alternate.app.link
126
-
127
- - applinks:partying-ios.app.link
128
-
129
- MDM Managed Associated Domains:
130
-
131
- com.apple.developer.associated-domains.mdm-managed: true
132
-
133
- AutoFill Credential Provider:
134
-
135
- com.apple.developer.authentication-services.autofill-credential-provider: true
136
-
137
- Data Protection:
138
-
139
- com.apple.developer.default-data-protection: NSFileProtectionComplete
140
-
141
- App Attest:
142
-
143
- com.apple.developer.devicecheck.appattest-environment: development
144
-
145
- Game Center:
146
-
147
- com.apple.developer.game-center: true
148
-
149
- HealthKit:
150
-
151
- com.apple.developer.healthkit: true
152
-
153
- com.apple.developer.healthkit.access:
154
-
155
- - health-records
156
-
157
- HomeKit:
158
-
159
- com.apple.developer.homekit: true
160
-
161
- iCloud:
162
-
163
- com.apple.developer.icloud-services:
164
-
165
- - CloudKit
166
-
167
- com.apple.developer.icloud-container-identifiers: []
168
-
169
- Apple Pay:
170
-
171
- com.apple.developer.in-app-payments:
172
-
173
- - merchant.xxxx
174
-
175
- Extended Virtual Address Space:
176
-
177
- com.apple.developer.kernel.extended-virtual-addressing: true
178
-
179
- Hotspot:
180
-
181
- com.apple.developer.networking.HotspotConfiguration: true
182
-
183
- Multipath:
184
-
185
- com.apple.developer.networking.multipath: true
186
-
187
- Network Extensions:
188
-
189
- com.apple.developer.networking.networkextension:
190
-
191
- - app-proxy-provider
192
-
193
- Personal VPN:
194
-
195
- com.apple.developer.networking.vpn.api:
196
-
197
- - allow-vpn
198
-
199
- Access WiFi Information:
200
-
201
- com.apple.developer.networking.wifi-info: true
202
-
203
- NFC Tag Reading:
204
-
205
- com.apple.developer.nfc.readersession.formats:
206
-
207
- - TAG
208
-
209
- Wallet:
210
-
211
- com.apple.developer.pass-type-identifiers:
212
-
213
- - "$(TeamIdentifierPrefix)*"
214
-
215
- SiriKit:
216
-
217
- com.apple.developer.siri: true
218
-
219
- Fonts:
220
-
221
- com.apple.developer.user-fonts:
222
-
223
- - system-installation
224
-
225
- Wireless Accessory Configuration:
226
-
227
- com.apple.external-accessory.wireless-configuration: true
228
-
229
- App Groups:
230
-
231
- com.apple.security.application-groups:
232
-
233
- - group.com.ola.chat.app
234
-
235
- - group.com.ola.chat
236
-
237
- Inter-App Audio:
238
-
239
- inter-app-audio: true
240
-
241
- Keychain sharing:
242
-
243
- keychain-access-groups:
244
-
245
- - "$(AppIdentifierPrefix)com.ola.chat"
246
-
247
- BackgroundModes:
248
-
249
- UIBackgroundModes:
250
-
251
- - audio
252
-
253
- - remote-notification
254
-
255
- DisableMinimumFrameDurationOnPhone:
256
-
257
- CADisableMinimumFrameDurationOnPhone: true
258
-
259
- RequiredDeviceCapabilities:
260
-
261
- UIRequiredDeviceCapabilities:
262
-
263
- - arm64
264
-
265
- AppTransportSecurity:
266
-
267
- NSAppTransportSecurity:
268
-
269
- NSAllowsArbitraryLoads: true
270
-
271
- PermissionsUsageDescription_Summary:
272
-
273
- NSLocationAlwaysUsageDescription: 4277cee74bdb7e834578f98269d61c83
274
-
275
- NSCameraUsageDescription: bbeb85d0f3fd621d9714ffa815e13c3b
276
-
277
- NSUserTrackingUsageDescription: 12cb2c4dff6b2542557e4c63788abe32
278
-
279
- NSLocalNetworkUsageDescription: 25e593f988484c58666bc7e433939d15
280
-
281
- NSAppleMusicUsageDescription: 374bb55b8c4d5af37fca0d78ccdbd01c
282
-
283
- NSLocationUsageDescription: 4277cee74bdb7e834578f98269d61c83
284
-
285
- NSMicrophoneUsageDescription: f872cbada940e9081aeb4119d2b33cda
286
-
287
- NSLocationWhenInUseUsageDescription: 4277cee74bdb7e834578f98269d61c83
288
-
289
- NSFaceIDUsageDescription: ac6a6855c7284a2abf6c2c2c443eb9b8
290
-
291
- NSContactsUsageDescription: 134bc1e1ab2794bbe4211aa8e01df7ed
292
-
293
- NSPhotoLibraryUsageDescription: adb704f39c8b7b5f80946ac67b238274
294
-
295
- PermissionsUsageDescription:
296
-
297
- NSLocationAlwaysUsageDescription: Access to your location is required to provide
298
-
299
- results near your area and find friends around you
300
-
301
- NSCameraUsageDescription: Access to your camera is required to take photos or videos
302
-
303
- in Partying.
304
-
305
- NSUserTrackingUsageDescription: 拒绝Partying将无法精准推送您喜欢的内容。
306
-
307
- NSLocalNetworkUsageDescription: Allow Flutter tools on your computer to connect
308
-
309
- and debug your application. This prompt will not appear on release builds.
310
-
311
- NSAppleMusicUsageDescription: Access to your Apple Music is required to share music
312
-
313
- files in Partying.
314
-
315
- NSLocationUsageDescription: Access to your location is required to provide results
316
-
317
- near your area and find friends around you
318
-
319
- NSMicrophoneUsageDescription: Access to your microphone is required to join voice
320
-
321
- chatroom, send voice message or make voice calls.
322
-
323
- NSLocationWhenInUseUsageDescription: Access to your location is required to provide
324
-
325
- results near your area and find friends around you
326
-
327
- NSFaceIDUsageDescription: Turn on FaceID service to use FaceID to log in.
328
-
329
- NSContactsUsageDescription: 若不允许,你将无法在伴伴中发现手机通讯录好友
330
-
331
- NSPhotoLibraryUsageDescription: Access to your photo library is required to share
332
-
333
- photos and save ones in Partying.
334
-
335
- ----------------------------------------
336
-
337
- 5.2.0 entitlements list:
338
-
339
- ---
340
-
341
- Capabilities_Summary:
342
-
343
- In-App Purchase: 6413cfeb7a89f7e0a8872f82b919c0d9
344
-
345
- Push Notifications: 3250c7ff60c20cfc4aaf7f6791f621df
346
-
347
- Sign In with Apple: 6642376617933be4ae31b129fe403e45
348
-
349
- Associated Domains: fa57cad0e93096199dfdefff0b6e8b92
350
-
351
- App Groups: 0b5c02cd472237b540efda80297cbe79
352
-
353
- BackgroundModes: d741c9bb5ce83f8ac40d365ae4a92c5b
354
-
355
- DisableMinimumFrameDurationOnPhone: 00c4662d62ca111b7a420649beaf5bf7
356
-
357
- RequiredDeviceCapabilities: ce80d3d730b0bea7ffd2bfc2f2d8f4a4
358
-
359
- AppTransportSecurity: 931810d61eb28fc7e1b358fb592e7ecc
360
-
361
- Capabilities:
362
-
363
- In-App Purchase: true
364
-
365
- Push Notifications:
366
-
367
- aps-environment: development
368
-
369
- Sign In with Apple:
370
-
371
- com.apple.developer.applesignin:
372
-
373
- - Default
374
-
375
- Associated Domains:
376
-
377
- com.apple.developer.associated-domains:
378
-
379
- - applinks:partyhub.onelink.me
380
-
381
- - applinks:partying-ios-alternate.app.link
382
-
383
- - applinks:partying-ios.app.link
384
-
385
- App Groups:
386
-
387
- com.apple.security.application-groups:
388
-
389
- - group.com.ola.chat.app
390
-
391
- - group.com.ola.chat
392
-
393
- BackgroundModes:
394
-
395
- UIBackgroundModes:
396
-
397
- - audio
398
-
399
- - remote-notification
400
-
401
- DisableMinimumFrameDurationOnPhone:
402
-
403
- CADisableMinimumFrameDurationOnPhone: true
404
-
405
- RequiredDeviceCapabilities:
406
-
407
- UIRequiredDeviceCapabilities:
408
-
409
- - arm64
410
-
411
- AppTransportSecurity:
412
-
413
- NSAppTransportSecurity:
414
-
415
- NSAllowsArbitraryLoads: true
416
-
417
- PermissionsUsageDescription_Summary:
418
-
419
- NSLocationAlwaysUsageDescription: 4277cee74bdb7e834578f98269d61c83
420
-
421
- NSCameraUsageDescription: bbeb85d0f3fd621d9714ffa815e13c3b
422
-
423
- NSUserTrackingUsageDescription: 12cb2c4dff6b2542557e4c63788abe32
424
-
425
- NSLocalNetworkUsageDescription: 25e593f988484c58666bc7e433939d15
426
-
427
- NSAppleMusicUsageDescription: 374bb55b8c4d5af37fca0d78ccdbd01c
428
-
429
- NSLocationUsageDescription: 4277cee74bdb7e834578f98269d61c83
430
-
431
- NSMicrophoneUsageDescription: f872cbada940e9081aeb4119d2b33cda
432
-
433
- NSLocationWhenInUseUsageDescription: 4277cee74bdb7e834578f98269d61c83
434
-
435
- NSFaceIDUsageDescription: ac6a6855c7284a2abf6c2c2c443eb9b8
436
-
437
- NSContactsUsageDescription: 134bc1e1ab2794bbe4211aa8e01df7ed
438
-
439
- NSPhotoLibraryUsageDescription: adb704f39c8b7b5f80946ac67b238274
440
-
441
- PermissionsUsageDescription:
442
-
443
- NSLocationAlwaysUsageDescription: Access to your location is required to provide
444
-
445
- results near your area and find friends around you
446
-
447
- NSCameraUsageDescription: Access to your camera is required to take photos or videos
448
-
449
- in Partying.
450
-
451
- NSUserTrackingUsageDescription: 拒绝Partying将无法精准推送您喜欢的内容。
452
-
453
- NSLocalNetworkUsageDescription: Allow Flutter tools on your computer to connect
454
-
455
- and debug your application. This prompt will not appear on release builds.
456
-
457
- NSAppleMusicUsageDescription: Access to your Apple Music is required to share music
458
-
459
- files in Partying.
460
-
461
- NSLocationUsageDescription: Access to your location is required to provide results
462
-
463
- near your area and find friends around you
464
-
465
- NSMicrophoneUsageDescription: Access to your microphone is required to join voice
466
-
467
- chatroom, send voice message or make voice calls.
468
-
469
- NSLocationWhenInUseUsageDescription: Access to your location is required to provide
470
-
471
- results near your area and find friends around you
472
-
473
- NSFaceIDUsageDescription: Turn on FaceID service to use FaceID to log in.
474
-
475
- NSContactsUsageDescription: 若不允许,你将无法在伴伴中发现手机通讯录好友
476
-
477
- NSPhotoLibraryUsageDescription: Access to your photo library is required to share
478
-
479
- photos and save ones in Partying.
480
-
481
- ----------------------------------------