mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
Use StoreKit for reviews
This commit is contained in:
parent
289e3f7a98
commit
e5b3cbd00c
|
@ -42,7 +42,6 @@
|
||||||
340FC8CD20518C77007AEB0F /* OWSBackupJob.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8CC20518C76007AEB0F /* OWSBackupJob.m */; };
|
340FC8CD20518C77007AEB0F /* OWSBackupJob.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8CC20518C76007AEB0F /* OWSBackupJob.m */; };
|
||||||
340FC8D0205BF2FA007AEB0F /* OWSBackupIO.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8CE205BF2FA007AEB0F /* OWSBackupIO.m */; };
|
340FC8D0205BF2FA007AEB0F /* OWSBackupIO.m in Sources */ = {isa = PBXBuildFile; fileRef = 340FC8CE205BF2FA007AEB0F /* OWSBackupIO.m */; };
|
||||||
341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */ = {isa = PBXBuildFile; fileRef = 341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */; };
|
341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */ = {isa = PBXBuildFile; fileRef = 341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */; };
|
||||||
34219801210612F600C57195 /* iRate.m in Sources */ = {isa = PBXBuildFile; fileRef = 342197FF210612F600C57195 /* iRate.m */; };
|
|
||||||
3421980F21061A0700C57195 /* UIColor+JSQMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 3421980521061A0600C57195 /* UIColor+JSQMessages.m */; };
|
3421980F21061A0700C57195 /* UIColor+JSQMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 3421980521061A0600C57195 /* UIColor+JSQMessages.m */; };
|
||||||
3421981021061A0700C57195 /* JSQMessagesAvatarImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 3421980621061A0600C57195 /* JSQMessagesAvatarImage.m */; };
|
3421981021061A0700C57195 /* JSQMessagesAvatarImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 3421980621061A0600C57195 /* JSQMessagesAvatarImage.m */; };
|
||||||
3421981121061A0700C57195 /* JSQMessagesAvatarImageFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 3421980721061A0600C57195 /* JSQMessagesAvatarImageFactory.h */; };
|
3421981121061A0700C57195 /* JSQMessagesAvatarImageFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 3421980721061A0600C57195 /* JSQMessagesAvatarImageFactory.h */; };
|
||||||
|
@ -440,6 +439,7 @@
|
||||||
4CB5F26720F6E1E2004D1B42 /* MenuActionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CFF4C0920F55BBA005DA313 /* MenuActionsViewController.swift */; };
|
4CB5F26720F6E1E2004D1B42 /* MenuActionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CFF4C0920F55BBA005DA313 /* MenuActionsViewController.swift */; };
|
||||||
4CB5F26920F7D060004D1B42 /* MessageActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB5F26820F7D060004D1B42 /* MessageActions.swift */; };
|
4CB5F26920F7D060004D1B42 /* MessageActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CB5F26820F7D060004D1B42 /* MessageActions.swift */; };
|
||||||
4CC0B59C20EC5F2E00CF6EE0 /* ConversationConfigurationSyncOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0B59B20EC5F2E00CF6EE0 /* ConversationConfigurationSyncOperation.swift */; };
|
4CC0B59C20EC5F2E00CF6EE0 /* ConversationConfigurationSyncOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CC0B59B20EC5F2E00CF6EE0 /* ConversationConfigurationSyncOperation.swift */; };
|
||||||
|
4CC1ECF9211A47CE00CC13BE /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CC1ECF8211A47CD00CC13BE /* StoreKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||||
70377AAB1918450100CAF501 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70377AAA1918450100CAF501 /* MobileCoreServices.framework */; };
|
70377AAB1918450100CAF501 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70377AAA1918450100CAF501 /* MobileCoreServices.framework */; };
|
||||||
768A1A2B17FC9CD300E00ED8 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 768A1A2A17FC9CD300E00ED8 /* libz.dylib */; };
|
768A1A2B17FC9CD300E00ED8 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 768A1A2A17FC9CD300E00ED8 /* libz.dylib */; };
|
||||||
76C87F19181EFCE600C4ACAB /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76C87F18181EFCE600C4ACAB /* MediaPlayer.framework */; };
|
76C87F19181EFCE600C4ACAB /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76C87F18181EFCE600C4ACAB /* MediaPlayer.framework */; };
|
||||||
|
@ -484,13 +484,11 @@
|
||||||
B660F6DB1C29868000687D6E /* FunctionalUtilTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B660F6AD1C29868000687D6E /* FunctionalUtilTest.m */; };
|
B660F6DB1C29868000687D6E /* FunctionalUtilTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B660F6AD1C29868000687D6E /* FunctionalUtilTest.m */; };
|
||||||
B660F6E01C29868000687D6E /* UtilTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B660F6B41C29868000687D6E /* UtilTest.m */; };
|
B660F6E01C29868000687D6E /* UtilTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B660F6B41C29868000687D6E /* UtilTest.m */; };
|
||||||
B660F7561C29988E00687D6E /* PushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B9ECFB198B31BA00C620D3 /* PushManager.m */; };
|
B660F7561C29988E00687D6E /* PushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B9ECFB198B31BA00C620D3 /* PushManager.m */; };
|
||||||
B660F7721C29988E00687D6E /* AppStoreRating.m in Sources */ = {isa = PBXBuildFile; fileRef = B6DA6B061B8A2F9A00CA6F98 /* AppStoreRating.m */; };
|
|
||||||
B66DBF4A19D5BBC8006EA940 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B66DBF4919D5BBC8006EA940 /* Images.xcassets */; };
|
B66DBF4A19D5BBC8006EA940 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B66DBF4919D5BBC8006EA940 /* Images.xcassets */; };
|
||||||
B67EBF5D19194AC60084CCFD /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = B67EBF5C19194AC60084CCFD /* Settings.bundle */; };
|
B67EBF5D19194AC60084CCFD /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = B67EBF5C19194AC60084CCFD /* Settings.bundle */; };
|
||||||
B69CD25119773E79005CE69A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B69CD25019773E79005CE69A /* XCTest.framework */; };
|
B69CD25119773E79005CE69A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B69CD25019773E79005CE69A /* XCTest.framework */; };
|
||||||
B6B226971BE4B7D200860F4D /* ContactsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6B226961BE4B7D200860F4D /* ContactsUI.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
B6B226971BE4B7D200860F4D /* ContactsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6B226961BE4B7D200860F4D /* ContactsUI.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||||
B6B9ECFC198B31BA00C620D3 /* PushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B9ECFB198B31BA00C620D3 /* PushManager.m */; };
|
B6B9ECFC198B31BA00C620D3 /* PushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B9ECFB198B31BA00C620D3 /* PushManager.m */; };
|
||||||
B6DA6B071B8A2F9A00CA6F98 /* AppStoreRating.m in Sources */ = {isa = PBXBuildFile; fileRef = B6DA6B061B8A2F9A00CA6F98 /* AppStoreRating.m */; };
|
|
||||||
B6F509971AA53F760068F56A /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = B6F509951AA53F760068F56A /* Localizable.strings */; };
|
B6F509971AA53F760068F56A /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = B6F509951AA53F760068F56A /* Localizable.strings */; };
|
||||||
B6FE7EB71ADD62FA00A6D22F /* PushKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6FE7EB61ADD62FA00A6D22F /* PushKit.framework */; };
|
B6FE7EB71ADD62FA00A6D22F /* PushKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6FE7EB61ADD62FA00A6D22F /* PushKit.framework */; };
|
||||||
B90418E6183E9DD40038554A /* DateUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = B90418E5183E9DD40038554A /* DateUtil.m */; };
|
B90418E6183E9DD40038554A /* DateUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = B90418E5183E9DD40038554A /* DateUtil.m */; };
|
||||||
|
@ -661,8 +659,6 @@
|
||||||
341458471FBE11C4005ABCF9 /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = translations/fa.lproj/Localizable.strings; sourceTree = "<group>"; };
|
341458471FBE11C4005ABCF9 /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = translations/fa.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
341F2C0D1F2B8AE700D07D6B /* DebugUIMisc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugUIMisc.h; sourceTree = "<group>"; };
|
341F2C0D1F2B8AE700D07D6B /* DebugUIMisc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugUIMisc.h; sourceTree = "<group>"; };
|
||||||
341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DebugUIMisc.m; sourceTree = "<group>"; };
|
341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DebugUIMisc.m; sourceTree = "<group>"; };
|
||||||
342197FF210612F600C57195 /* iRate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iRate.m; sourceTree = "<group>"; };
|
|
||||||
34219800210612F600C57195 /* iRate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iRate.h; sourceTree = "<group>"; };
|
|
||||||
3421980521061A0600C57195 /* UIColor+JSQMessages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+JSQMessages.m"; sourceTree = "<group>"; };
|
3421980521061A0600C57195 /* UIColor+JSQMessages.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+JSQMessages.m"; sourceTree = "<group>"; };
|
||||||
3421980621061A0600C57195 /* JSQMessagesAvatarImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesAvatarImage.m; sourceTree = "<group>"; };
|
3421980621061A0600C57195 /* JSQMessagesAvatarImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSQMessagesAvatarImage.m; sourceTree = "<group>"; };
|
||||||
3421980721061A0600C57195 /* JSQMessagesAvatarImageFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesAvatarImageFactory.h; sourceTree = "<group>"; };
|
3421980721061A0600C57195 /* JSQMessagesAvatarImageFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSQMessagesAvatarImageFactory.h; sourceTree = "<group>"; };
|
||||||
|
@ -1121,6 +1117,7 @@
|
||||||
4C6F527B20FFE8400097DEEE /* SignalUBSan.supp */ = {isa = PBXFileReference; lastKnownFileType = text; path = SignalUBSan.supp; sourceTree = "<group>"; };
|
4C6F527B20FFE8400097DEEE /* SignalUBSan.supp */ = {isa = PBXFileReference; lastKnownFileType = text; path = SignalUBSan.supp; sourceTree = "<group>"; };
|
||||||
4CB5F26820F7D060004D1B42 /* MessageActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageActions.swift; sourceTree = "<group>"; };
|
4CB5F26820F7D060004D1B42 /* MessageActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageActions.swift; sourceTree = "<group>"; };
|
||||||
4CC0B59B20EC5F2E00CF6EE0 /* ConversationConfigurationSyncOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationConfigurationSyncOperation.swift; sourceTree = "<group>"; };
|
4CC0B59B20EC5F2E00CF6EE0 /* ConversationConfigurationSyncOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConversationConfigurationSyncOperation.swift; sourceTree = "<group>"; };
|
||||||
|
4CC1ECF8211A47CD00CC13BE /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
|
||||||
4CFF4C0920F55BBA005DA313 /* MenuActionsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuActionsViewController.swift; sourceTree = "<group>"; };
|
4CFF4C0920F55BBA005DA313 /* MenuActionsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuActionsViewController.swift; sourceTree = "<group>"; };
|
||||||
69349DE607F5BA6036C9AC60 /* Pods-SignalShareExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalShareExtension.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SignalShareExtension/Pods-SignalShareExtension.debug.xcconfig"; sourceTree = "<group>"; };
|
69349DE607F5BA6036C9AC60 /* Pods-SignalShareExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalShareExtension.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SignalShareExtension/Pods-SignalShareExtension.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
70377AAA1918450100CAF501 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
|
70377AAA1918450100CAF501 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
|
||||||
|
@ -1212,8 +1209,6 @@
|
||||||
B6B9ECFA198B31BA00C620D3 /* PushManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = PushManager.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
|
B6B9ECFA198B31BA00C620D3 /* PushManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = PushManager.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
|
||||||
B6B9ECFB198B31BA00C620D3 /* PushManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = PushManager.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
|
B6B9ECFB198B31BA00C620D3 /* PushManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = PushManager.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
|
||||||
B6BC3D0C1AA544B100C2907F /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = translations/da.lproj/Localizable.strings; sourceTree = "<group>"; };
|
B6BC3D0C1AA544B100C2907F /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = translations/da.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
B6DA6B051B8A2F9A00CA6F98 /* AppStoreRating.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppStoreRating.h; sourceTree = "<group>"; };
|
|
||||||
B6DA6B061B8A2F9A00CA6F98 /* AppStoreRating.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppStoreRating.m; sourceTree = "<group>"; };
|
|
||||||
B6F509961AA53F760068F56A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = translations/en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
B6F509961AA53F760068F56A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = translations/en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
B6FE7EB61ADD62FA00A6D22F /* PushKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PushKit.framework; path = System/Library/Frameworks/PushKit.framework; sourceTree = SDKROOT; };
|
B6FE7EB61ADD62FA00A6D22F /* PushKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PushKit.framework; path = System/Library/Frameworks/PushKit.framework; sourceTree = SDKROOT; };
|
||||||
B90418E4183E9DD40038554A /* DateUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateUtil.h; sourceTree = "<group>"; };
|
B90418E4183E9DD40038554A /* DateUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateUtil.h; sourceTree = "<group>"; };
|
||||||
|
@ -1272,6 +1267,7 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
4CC1ECF9211A47CE00CC13BE /* StoreKit.framework in Frameworks */,
|
||||||
455A16DD1F1FEA0000F86704 /* Metal.framework in Frameworks */,
|
455A16DD1F1FEA0000F86704 /* Metal.framework in Frameworks */,
|
||||||
455A16DE1F1FEA0000F86704 /* MetalKit.framework in Frameworks */,
|
455A16DE1F1FEA0000F86704 /* MetalKit.framework in Frameworks */,
|
||||||
45847E871E4283C30080EAB3 /* Intents.framework in Frameworks */,
|
45847E871E4283C30080EAB3 /* Intents.framework in Frameworks */,
|
||||||
|
@ -1446,20 +1442,9 @@
|
||||||
path = ThreadSettings;
|
path = ThreadSettings;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
342197FE210612F600C57195 /* iRate */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
342197FF210612F600C57195 /* iRate.m */,
|
|
||||||
34219800210612F600C57195 /* iRate.h */,
|
|
||||||
);
|
|
||||||
name = iRate;
|
|
||||||
path = Signal/Libraries/iRate;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
34219802210619C800C57195 /* Libraries */ = {
|
34219802210619C800C57195 /* Libraries */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
342197FE210612F600C57195 /* iRate */,
|
|
||||||
);
|
);
|
||||||
path = Libraries;
|
path = Libraries;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -2189,8 +2174,6 @@
|
||||||
76EB04C818170B33006006FC /* util */ = {
|
76EB04C818170B33006006FC /* util */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
B6DA6B051B8A2F9A00CA6F98 /* AppStoreRating.h */,
|
|
||||||
B6DA6B061B8A2F9A00CA6F98 /* AppStoreRating.m */,
|
|
||||||
34CCAF361F0C0599004084F4 /* AppUpdateNag.h */,
|
34CCAF361F0C0599004084F4 /* AppUpdateNag.h */,
|
||||||
34CCAF371F0C0599004084F4 /* AppUpdateNag.m */,
|
34CCAF371F0C0599004084F4 /* AppUpdateNag.m */,
|
||||||
B90418E4183E9DD40038554A /* DateUtil.h */,
|
B90418E4183E9DD40038554A /* DateUtil.h */,
|
||||||
|
@ -2413,6 +2396,7 @@
|
||||||
D221A08C169C9E5E00537ABF /* Frameworks */ = {
|
D221A08C169C9E5E00537ABF /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
4CC1ECF8211A47CD00CC13BE /* StoreKit.framework */,
|
||||||
455A16DB1F1FEA0000F86704 /* Metal.framework */,
|
455A16DB1F1FEA0000F86704 /* Metal.framework */,
|
||||||
455A16DC1F1FEA0000F86704 /* MetalKit.framework */,
|
455A16DC1F1FEA0000F86704 /* MetalKit.framework */,
|
||||||
45847E861E4283C30080EAB3 /* Intents.framework */,
|
45847E861E4283C30080EAB3 /* Intents.framework */,
|
||||||
|
@ -3295,7 +3279,6 @@
|
||||||
454A84042059C787008B8C75 /* MediaTileViewController.swift in Sources */,
|
454A84042059C787008B8C75 /* MediaTileViewController.swift in Sources */,
|
||||||
340FC8B4204DAC8D007AEB0F /* OWSBackupSettingsViewController.m in Sources */,
|
340FC8B4204DAC8D007AEB0F /* OWSBackupSettingsViewController.m in Sources */,
|
||||||
34D1F0871F8678AA0066283D /* ConversationViewItem.m in Sources */,
|
34D1F0871F8678AA0066283D /* ConversationViewItem.m in Sources */,
|
||||||
B6DA6B071B8A2F9A00CA6F98 /* AppStoreRating.m in Sources */,
|
|
||||||
451A13B11E13DED2000A50FD /* CallNotificationsAdapter.swift in Sources */,
|
451A13B11E13DED2000A50FD /* CallNotificationsAdapter.swift in Sources */,
|
||||||
348570A820F67575004FF32B /* OWSMessageHeaderView.m in Sources */,
|
348570A820F67575004FF32B /* OWSMessageHeaderView.m in Sources */,
|
||||||
450DF2091E0DD2C6003D14BE /* UserNotificationsAdaptee.swift in Sources */,
|
450DF2091E0DD2C6003D14BE /* UserNotificationsAdaptee.swift in Sources */,
|
||||||
|
@ -3380,7 +3363,6 @@
|
||||||
3496744D2076768700080B5F /* OWSMessageBubbleView.m in Sources */,
|
3496744D2076768700080B5F /* OWSMessageBubbleView.m in Sources */,
|
||||||
34B3F8751E8DF1700035BE1A /* CallViewController.swift in Sources */,
|
34B3F8751E8DF1700035BE1A /* CallViewController.swift in Sources */,
|
||||||
34D8C0281ED3673300188D7C /* DebugUITableViewController.m in Sources */,
|
34D8C0281ED3673300188D7C /* DebugUITableViewController.m in Sources */,
|
||||||
34219801210612F600C57195 /* iRate.m in Sources */,
|
|
||||||
45F32C222057297A00A300D5 /* MediaDetailViewController.m in Sources */,
|
45F32C222057297A00A300D5 /* MediaDetailViewController.m in Sources */,
|
||||||
34B3F8851E8DF1700035BE1A /* NewGroupViewController.m in Sources */,
|
34B3F8851E8DF1700035BE1A /* NewGroupViewController.m in Sources */,
|
||||||
34D8C0271ED3673300188D7C /* DebugUIMessages.m in Sources */,
|
34D8C0271ED3673300188D7C /* DebugUIMessages.m in Sources */,
|
||||||
|
@ -3469,7 +3451,6 @@
|
||||||
34DB0BED2011548B007B313F /* OWSDatabaseConverterTest.m in Sources */,
|
34DB0BED2011548B007B313F /* OWSDatabaseConverterTest.m in Sources */,
|
||||||
45360B911F952AA900FA666C /* MarqueeLabel.swift in Sources */,
|
45360B911F952AA900FA666C /* MarqueeLabel.swift in Sources */,
|
||||||
454EBAB41F2BE14C00ACE0BB /* OWSAnalytics.swift in Sources */,
|
454EBAB41F2BE14C00ACE0BB /* OWSAnalytics.swift in Sources */,
|
||||||
B660F7721C29988E00687D6E /* AppStoreRating.m in Sources */,
|
|
||||||
954AEE6A1DF33E01002E5410 /* ContactsPickerTest.swift in Sources */,
|
954AEE6A1DF33E01002E5410 /* ContactsPickerTest.swift in Sources */,
|
||||||
45666F581D9B2880008FE134 /* OWSScrubbingLogFormatterTest.m in Sources */,
|
45666F581D9B2880008FE134 /* OWSScrubbingLogFormatterTest.m in Sources */,
|
||||||
B660F6E01C29868000687D6E /* UtilTest.m in Sources */,
|
B660F6E01C29868000687D6E /* UtilTest.m in Sources */,
|
||||||
|
|
|
@ -1,173 +0,0 @@
|
||||||
//
|
|
||||||
// iRate.h
|
|
||||||
//
|
|
||||||
// Version 1.11.4
|
|
||||||
//
|
|
||||||
// Created by Nick Lockwood on 26/01/2011.
|
|
||||||
// Copyright 2011 Charcoal Design
|
|
||||||
//
|
|
||||||
// Distributed under the permissive zlib license
|
|
||||||
// Get the latest version from here:
|
|
||||||
//
|
|
||||||
// https://github.com/nicklockwood/iRate
|
|
||||||
//
|
|
||||||
// This software is provided 'as-is', without any express or implied
|
|
||||||
// warranty. In no event will the authors be held liable for any damages
|
|
||||||
// arising from the use of this software.
|
|
||||||
//
|
|
||||||
// Permission is granted to anyone to use this software for any purpose,
|
|
||||||
// including commercial applications, and to alter it and redistribute it
|
|
||||||
// freely, subject to the following restrictions:
|
|
||||||
//
|
|
||||||
// 1. The origin of this software must not be misrepresented; you must not
|
|
||||||
// claim that you wrote the original software. If you use this software
|
|
||||||
// in a product, an acknowledgment in the product documentation would be
|
|
||||||
// appreciated but is not required.
|
|
||||||
//
|
|
||||||
// 2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
// misrepresented as being the original software.
|
|
||||||
//
|
|
||||||
// 3. This notice may not be removed or altered from any source distribution.
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wobjc-missing-property-synthesis"
|
|
||||||
|
|
||||||
|
|
||||||
#import <Availability.h>
|
|
||||||
#undef weak_delegate
|
|
||||||
#if __has_feature(objc_arc_weak) && (TARGET_OS_IPHONE || __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_8)
|
|
||||||
#define weak_delegate weak
|
|
||||||
#else
|
|
||||||
#define weak_delegate unsafe_unretained
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#import <TargetConditionals.h>
|
|
||||||
#if TARGET_OS_IPHONE
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
#define IRATE_EXTERN UIKIT_EXTERN
|
|
||||||
#else
|
|
||||||
#import <Cocoa/Cocoa.h>
|
|
||||||
#define IRATE_EXTERN APPKIT_EXTERN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//! Project version number for iRate.
|
|
||||||
FOUNDATION_EXPORT double iRateVersionNumber;
|
|
||||||
|
|
||||||
//! Project version string for iRate.
|
|
||||||
FOUNDATION_EXPORT const unsigned char iRateVersionString[];
|
|
||||||
|
|
||||||
IRATE_EXTERN NSUInteger const iRateAppStoreGameGenreID;
|
|
||||||
IRATE_EXTERN NSString *const iRateErrorDomain;
|
|
||||||
|
|
||||||
// localisation string keys
|
|
||||||
IRATE_EXTERN NSString *const iRateMessageTitleKey; // iRateMessageTitle
|
|
||||||
IRATE_EXTERN NSString *const iRateAppMessageKey; // iRateAppMessage
|
|
||||||
IRATE_EXTERN NSString *const iRateGameMessageKey; // iRateGameMessage
|
|
||||||
IRATE_EXTERN NSString *const iRateUpdateMessageKey; // iRateUpdateMessage
|
|
||||||
IRATE_EXTERN NSString *const iRateCancelButtonKey; // iRateCancelButton
|
|
||||||
IRATE_EXTERN NSString *const iRateRemindButtonKey; // iRateRemindButton
|
|
||||||
IRATE_EXTERN NSString *const iRateRateButtonKey; // iRateRateButton
|
|
||||||
|
|
||||||
// notification keys
|
|
||||||
IRATE_EXTERN NSString *const iRateCouldNotConnectToAppStore;
|
|
||||||
IRATE_EXTERN NSString *const iRateDidDetectAppUpdate;
|
|
||||||
IRATE_EXTERN NSString *const iRateDidPromptForRating;
|
|
||||||
IRATE_EXTERN NSString *const iRateUserDidAttemptToRateApp;
|
|
||||||
IRATE_EXTERN NSString *const iRateUserDidDeclineToRateApp;
|
|
||||||
IRATE_EXTERN NSString *const iRateUserDidRequestReminderToRateApp;
|
|
||||||
IRATE_EXTERN NSString *const iRateDidOpenAppStore;
|
|
||||||
|
|
||||||
|
|
||||||
typedef NS_ENUM(NSUInteger, iRateErrorCode) {
|
|
||||||
iRateErrorBundleIdDoesNotMatchAppStore = 1,
|
|
||||||
iRateErrorApplicationNotFoundOnAppStore,
|
|
||||||
iRateErrorApplicationIsNotLatestVersion,
|
|
||||||
iRateErrorCouldNotOpenRatingPageURL
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
@protocol iRateDelegate <NSObject>
|
|
||||||
@optional
|
|
||||||
|
|
||||||
- (void)iRateCouldNotConnectToAppStore:(NSError *)error;
|
|
||||||
- (void)iRateDidDetectAppUpdate;
|
|
||||||
- (BOOL)iRateShouldPromptForRating;
|
|
||||||
- (void)iRateDidPromptForRating;
|
|
||||||
- (void)iRateUserDidAttemptToRateApp;
|
|
||||||
- (void)iRateUserDidDeclineToRateApp;
|
|
||||||
- (void)iRateUserDidRequestReminderToRateApp;
|
|
||||||
- (BOOL)iRateShouldOpenAppStore;
|
|
||||||
- (void)iRateDidOpenAppStore;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
|
|
||||||
@interface iRate : NSObject
|
|
||||||
|
|
||||||
+ (instancetype)sharedInstance;
|
|
||||||
|
|
||||||
// app store ID - this is only needed if your
|
|
||||||
// bundle ID is not unique between iOS and Mac app stores
|
|
||||||
@property (nonatomic, assign) NSUInteger appStoreID;
|
|
||||||
|
|
||||||
// application details - these are set automatically
|
|
||||||
@property (nonatomic, assign) NSUInteger appStoreGenreID;
|
|
||||||
@property (nonatomic, copy) NSString *appStoreCountry;
|
|
||||||
@property (nonatomic, copy) NSString *applicationName;
|
|
||||||
@property (nonatomic, copy) NSString *applicationVersion;
|
|
||||||
@property (nonatomic, copy) NSString *applicationBundleID;
|
|
||||||
|
|
||||||
// usage settings - these have sensible defaults
|
|
||||||
@property (nonatomic, assign) NSUInteger usesUntilPrompt;
|
|
||||||
@property (nonatomic, assign) NSUInteger eventsUntilPrompt;
|
|
||||||
@property (nonatomic, assign) float daysUntilPrompt;
|
|
||||||
@property (nonatomic, assign) float usesPerWeekForPrompt;
|
|
||||||
@property (nonatomic, assign) float remindPeriod;
|
|
||||||
|
|
||||||
// message text, you may wish to customise these
|
|
||||||
@property (nonatomic, copy) NSString *messageTitle;
|
|
||||||
@property (nonatomic, copy) NSString *message;
|
|
||||||
@property (nonatomic, copy) NSString *updateMessage;
|
|
||||||
@property (nonatomic, copy) NSString *cancelButtonLabel;
|
|
||||||
@property (nonatomic, copy) NSString *remindButtonLabel;
|
|
||||||
@property (nonatomic, copy) NSString *rateButtonLabel;
|
|
||||||
|
|
||||||
// debugging and prompt overrides
|
|
||||||
@property (nonatomic, assign) BOOL useUIAlertControllerIfAvailable;
|
|
||||||
@property (nonatomic, assign) BOOL useAllAvailableLanguages;
|
|
||||||
@property (nonatomic, assign) BOOL promptForNewVersionIfUserRated;
|
|
||||||
@property (nonatomic, assign) BOOL onlyPromptIfLatestVersion;
|
|
||||||
@property (nonatomic, assign) BOOL onlyPromptIfMainWindowIsAvailable;
|
|
||||||
@property (nonatomic, assign) BOOL promptAtLaunch;
|
|
||||||
@property (nonatomic, assign) BOOL verboseLogging;
|
|
||||||
@property (nonatomic, assign) BOOL previewMode;
|
|
||||||
|
|
||||||
// advanced properties for implementing custom behaviour
|
|
||||||
@property (nonatomic, strong) NSURL *ratingsURL;
|
|
||||||
@property (nonatomic, strong) NSDate *firstUsed;
|
|
||||||
@property (nonatomic, strong) NSDate *lastReminded;
|
|
||||||
@property (nonatomic, assign) NSUInteger usesCount;
|
|
||||||
@property (nonatomic, assign) NSUInteger eventCount;
|
|
||||||
@property (nonatomic, readonly) float usesPerWeek;
|
|
||||||
@property (nonatomic, assign) BOOL declinedThisVersion;
|
|
||||||
@property (nonatomic, readonly) BOOL declinedAnyVersion;
|
|
||||||
@property (nonatomic, assign) BOOL ratedThisVersion;
|
|
||||||
@property (nonatomic, readonly) BOOL ratedAnyVersion;
|
|
||||||
@property (nonatomic, weak_delegate) id<iRateDelegate> delegate;
|
|
||||||
|
|
||||||
// manually control behaviour
|
|
||||||
- (BOOL)shouldPromptForRating;
|
|
||||||
- (void)promptForRating;
|
|
||||||
- (void)promptIfNetworkAvailable;
|
|
||||||
- (BOOL)promptIfAllCriteriaMet;
|
|
||||||
- (void)openRatingsPageInAppStore;
|
|
||||||
- (void)logEvent:(BOOL)deferPrompt;
|
|
||||||
- (void)preventPromptAtNextTest;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
|
|
||||||
#pragma clang diagnostic pop
|
|
File diff suppressed because it is too large
Load diff
|
@ -3,7 +3,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "AppDelegate.h"
|
#import "AppDelegate.h"
|
||||||
#import "AppStoreRating.h"
|
|
||||||
#import "AppUpdateNag.h"
|
#import "AppUpdateNag.h"
|
||||||
#import "CodeVerificationViewController.h"
|
#import "CodeVerificationViewController.h"
|
||||||
#import "DebugLogger.h"
|
#import "DebugLogger.h"
|
||||||
|
@ -605,7 +604,6 @@ static NSTimeInterval launchStartedAt;
|
||||||
[[[OWSFailedAttachmentDownloadsJob alloc] initWithPrimaryStorage:[OWSPrimaryStorage sharedManager]]
|
[[[OWSFailedAttachmentDownloadsJob alloc] initWithPrimaryStorage:[OWSPrimaryStorage sharedManager]]
|
||||||
run];
|
run];
|
||||||
|
|
||||||
[AppStoreRating setupRatingLibrary];
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
DDLogInfo(@"%@ running post launch block for unregistered user.", self.logTag);
|
DDLogInfo(@"%@ running post launch block for unregistered user.", self.logTag);
|
||||||
|
@ -917,8 +915,6 @@ static NSTimeInterval launchStartedAt;
|
||||||
}
|
}
|
||||||
|
|
||||||
DDLogInfo(@"%@ %s %@", self.logTag, __PRETTY_FUNCTION__, notification);
|
DDLogInfo(@"%@ %s %@", self.logTag, __PRETTY_FUNCTION__, notification);
|
||||||
|
|
||||||
[AppStoreRating preventPromptAtNextTest];
|
|
||||||
[AppReadiness runNowOrWhenAppIsReady:^{
|
[AppReadiness runNowOrWhenAppIsReady:^{
|
||||||
[[PushManager sharedManager] application:application didReceiveLocalNotification:notification];
|
[[PushManager sharedManager] application:application didReceiveLocalNotification:notification];
|
||||||
}];
|
}];
|
||||||
|
|
|
@ -2821,6 +2821,9 @@ typedef enum : NSUInteger {
|
||||||
[self clearUnreadMessagesIndicator];
|
[self clearUnreadMessagesIndicator];
|
||||||
self.inputToolbar.quotedReply = nil;
|
self.inputToolbar.quotedReply = nil;
|
||||||
|
|
||||||
|
if (!Environment.preferences.getHasSentAMessage) {
|
||||||
|
[Environment.preferences setHasSentAMessage:YES];
|
||||||
|
}
|
||||||
if ([Environment.preferences soundInForeground]) {
|
if ([Environment.preferences soundInForeground]) {
|
||||||
SystemSoundID soundId = [OWSSounds systemSoundIDForSound:OWSSound_MessageSent quiet:YES];
|
SystemSoundID soundId = [OWSSounds systemSoundIDForSound:OWSSound_MessageSent quiet:YES];
|
||||||
AudioServicesPlaySystemSound(soundId);
|
AudioServicesPlaySystemSound(soundId);
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#import <SignalServiceKit/TSAccountManager.h>
|
#import <SignalServiceKit/TSAccountManager.h>
|
||||||
#import <SignalServiceKit/TSOutgoingMessage.h>
|
#import <SignalServiceKit/TSOutgoingMessage.h>
|
||||||
#import <SignalServiceKit/Threading.h>
|
#import <SignalServiceKit/Threading.h>
|
||||||
|
#import <StoreKit/StoreKit.h>
|
||||||
#import <YapDatabase/YapDatabase.h>
|
#import <YapDatabase/YapDatabase.h>
|
||||||
#import <YapDatabase/YapDatabaseViewChange.h>
|
#import <YapDatabase/YapDatabaseViewChange.h>
|
||||||
#import <YapDatabase/YapDatabaseViewConnection.h>
|
#import <YapDatabase/YapDatabaseViewConnection.h>
|
||||||
|
@ -77,7 +78,7 @@ NSString *const kArchivedConversationsReuseIdentifier = @"kArchivedConversations
|
||||||
@property (nonatomic, readonly) NSCache<NSString *, ThreadViewModel *> *threadViewModelCache;
|
@property (nonatomic, readonly) NSCache<NSString *, ThreadViewModel *> *threadViewModelCache;
|
||||||
@property (nonatomic) BOOL isViewVisible;
|
@property (nonatomic) BOOL isViewVisible;
|
||||||
@property (nonatomic) BOOL shouldObserveDBModifications;
|
@property (nonatomic) BOOL shouldObserveDBModifications;
|
||||||
@property (nonatomic) BOOL hasBeenPresented;
|
@property (nonatomic) BOOL hasEverAppeared;
|
||||||
|
|
||||||
// Mark: Search
|
// Mark: Search
|
||||||
|
|
||||||
|
@ -463,7 +464,11 @@ NSString *const kArchivedConversationsReuseIdentifier = @"kArchivedConversations
|
||||||
self.hasThemeChanged = NO;
|
self.hasThemeChanged = NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[self requestReviewIfAppropriate];
|
||||||
|
|
||||||
[self.searchResultsController viewDidAppear:animated];
|
[self.searchResultsController viewDidAppear:animated];
|
||||||
|
|
||||||
|
self.hasEverAppeared = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)viewDidDisappear:(BOOL)animated
|
- (void)viewDidDisappear:(BOOL)animated
|
||||||
|
@ -739,13 +744,11 @@ NSString *const kArchivedConversationsReuseIdentifier = @"kArchivedConversations
|
||||||
ExperienceUpgradesPageViewController *experienceUpgradeViewController =
|
ExperienceUpgradesPageViewController *experienceUpgradeViewController =
|
||||||
[[ExperienceUpgradesPageViewController alloc] initWithExperienceUpgrades:unseenUpgrades];
|
[[ExperienceUpgradesPageViewController alloc] initWithExperienceUpgrades:unseenUpgrades];
|
||||||
[self presentViewController:experienceUpgradeViewController animated:YES completion:nil];
|
[self presentViewController:experienceUpgradeViewController animated:YES completion:nil];
|
||||||
} else if (!self.hasBeenPresented && [ProfileViewController shouldDisplayProfileViewOnLaunch]) {
|
} else if (!self.hasEverAppeared && [ProfileViewController shouldDisplayProfileViewOnLaunch]) {
|
||||||
[ProfileViewController presentForUpgradeOrNag:self];
|
[ProfileViewController presentForUpgradeOrNag:self];
|
||||||
} else {
|
} else {
|
||||||
[OWSAlerts showIOSUpgradeNagIfNecessary];
|
[OWSAlerts showIOSUpgradeNagIfNecessary];
|
||||||
}
|
}
|
||||||
|
|
||||||
self.hasBeenPresented = YES;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)tableViewSetUp
|
- (void)tableViewSetUp
|
||||||
|
@ -1501,7 +1504,6 @@ NSString *const kArchivedConversationsReuseIdentifier = @"kArchivedConversations
|
||||||
|
|
||||||
if (self.homeViewMode == HomeViewMode_Inbox) {
|
if (self.homeViewMode == HomeViewMode_Inbox) {
|
||||||
if ([Environment.preferences getHasSentAMessage]) {
|
if ([Environment.preferences getHasSentAMessage]) {
|
||||||
// FIXME: This doesn't appear to ever show up as the defaults flag is never set (setHasSentAMessage: is never called).
|
|
||||||
firstLine = NSLocalizedString(@"EMPTY_INBOX_FIRST_TITLE", @"");
|
firstLine = NSLocalizedString(@"EMPTY_INBOX_FIRST_TITLE", @"");
|
||||||
secondLine = NSLocalizedString(@"EMPTY_INBOX_FIRST_TEXT", @"");
|
secondLine = NSLocalizedString(@"EMPTY_INBOX_FIRST_TEXT", @"");
|
||||||
} else {
|
} else {
|
||||||
|
@ -1538,6 +1540,25 @@ NSString *const kArchivedConversationsReuseIdentifier = @"kArchivedConversations
|
||||||
_emptyBoxLabel.attributedText = fullLabelString;
|
_emptyBoxLabel.attributedText = fullLabelString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We want to delay asking for a review until an opportune time.
|
||||||
|
// If the user has *just* launched Signal they intend to do something, we don't want to interrupt them.
|
||||||
|
// If the user hasn't sent a message, we don't want to ask them for a review yet.
|
||||||
|
- (void)requestReviewIfAppropriate
|
||||||
|
{
|
||||||
|
if (self.hasEverAppeared && Environment.preferences.getHasSentAMessage) {
|
||||||
|
DDLogDebug(@"%@ in %s requesting review", self.logTag, __PRETTY_FUNCTION__);
|
||||||
|
if (@available(iOS 10, *)) {
|
||||||
|
// In Debug this pops up *every* time, which is helpful, but annoying.
|
||||||
|
// In Production this will pop up at most 3 times per 365 days.
|
||||||
|
#ifndef DEBUG
|
||||||
|
[SKStoreReviewController requestReview];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
DDLogDebug(@"%@ in %s not requesting review", self.logTag, __PRETTY_FUNCTION__);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
//
|
|
||||||
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
@interface AppStoreRating : NSObject
|
|
||||||
|
|
||||||
+ (void)setupRatingLibrary;
|
|
||||||
+ (void)preventPromptAtNextTest;
|
|
||||||
|
|
||||||
@end
|
|
|
@ -1,32 +0,0 @@
|
||||||
//
|
|
||||||
// AppStoreRating.m
|
|
||||||
// Signal
|
|
||||||
//
|
|
||||||
// Created by Frederic Jacobs on 23/08/15.
|
|
||||||
// Copyright (c) 2015 Open Whisper Systems. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#import "AppStoreRating.h"
|
|
||||||
#import "iRate.h"
|
|
||||||
|
|
||||||
@implementation AppStoreRating
|
|
||||||
|
|
||||||
+ (void)setupRatingLibrary {
|
|
||||||
iRate *rate = [iRate sharedInstance];
|
|
||||||
rate.appStoreID = 874139669;
|
|
||||||
rate.appStoreGenreID = 6005;
|
|
||||||
rate.daysUntilPrompt = 15;
|
|
||||||
rate.usesUntilPrompt = 10;
|
|
||||||
rate.remindPeriod = 20;
|
|
||||||
rate.onlyPromptIfLatestVersion = YES;
|
|
||||||
rate.promptForNewVersionIfUserRated = NO;
|
|
||||||
rate.messageTitle = NSLocalizedString(@"RATING_TITLE", nil);
|
|
||||||
rate.message = NSLocalizedString(@"RATING_MSG", nil);
|
|
||||||
rate.rateButtonLabel = NSLocalizedString(@"RATING_RATE", nil);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ (void)preventPromptAtNextTest {
|
|
||||||
iRate *rate = [iRate sharedInstance];
|
|
||||||
[rate preventPromptAtNextTest];
|
|
||||||
}
|
|
||||||
@end
|
|
|
@ -1625,15 +1625,6 @@
|
||||||
/* Indicates this message is a quoted reply to a video file. */
|
/* Indicates this message is a quoted reply to a video file. */
|
||||||
"QUOTED_REPLY_TYPE_VIDEO" = "Video";
|
"QUOTED_REPLY_TYPE_VIDEO" = "Video";
|
||||||
|
|
||||||
/* No comment provided by engineer. */
|
|
||||||
"RATING_MSG" = "If you enjoy using Signal to have private conversations, you can support our project by rating it. It won't take more than a minute, and will help others find some privacy.";
|
|
||||||
|
|
||||||
/* No comment provided by engineer. */
|
|
||||||
"RATING_RATE" = "Rate Signal";
|
|
||||||
|
|
||||||
/* No comment provided by engineer. */
|
|
||||||
"RATING_TITLE" = "Support Signal!";
|
|
||||||
|
|
||||||
/* Label for 'I forgot my PIN' link in the 2FA registration view. */
|
/* Label for 'I forgot my PIN' link in the 2FA registration view. */
|
||||||
"REGISTER_2FA_FORGOT_PIN" = "I forgot my PIN.";
|
"REGISTER_2FA_FORGOT_PIN" = "I forgot my PIN.";
|
||||||
|
|
||||||
|
|
|
@ -53,4 +53,4 @@
|
||||||
*/
|
*/
|
||||||
- (UIColor *)jsq_colorByDarkeningColorWithValue:(CGFloat)value;
|
- (UIColor *)jsq_colorByDarkeningColorWithValue:(CGFloat)value;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
Loading…
Reference in a new issue