testfairy integration on iOS, update testfairy key for Android version
This commit is contained in:
parent
23399c63e1
commit
670f873d2e
|
@ -27,7 +27,7 @@ public class MainActivity extends ReactActivity {
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
SplashScreen.show(this);
|
SplashScreen.show(this);
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
TestFairy.begin(this, "33e4bd97daaaacf3b1b6425096fb65186248fe44");
|
TestFairy.begin(this, "969f6c921cb435cea1d41d1ea3f5b247d6026d55");
|
||||||
|
|
||||||
if (!RootUtil.isDeviceRooted()) {
|
if (!RootUtil.isDeviceRooted()) {
|
||||||
configureStatus();
|
configureStatus();
|
||||||
|
|
|
@ -7,24 +7,24 @@
|
||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
00C302E51ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
|
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
|
||||||
00C302E71ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
|
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
|
||||||
00C302E81ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; };
|
00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; };
|
||||||
00C302E91ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; };
|
00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; };
|
||||||
00C302EA1ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; };
|
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; };
|
||||||
00E356F31AD99517003FC87E /* StatusImTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* StatusImTests.m */; };
|
00E356F31AD99517003FC87E /* StatusImTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* StatusImTests.m */; };
|
||||||
0F942CF509F74CCDB5CB35B0 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 54E2B86FB12D4CC49DA05C69 /* MaterialIcons.ttf */; };
|
0F942CF509F74CCDB5CB35B0 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 54E2B86FB12D4CC49DA05C69 /* MaterialIcons.ttf */; };
|
||||||
133E29F31AD74F7200F7D852 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; };
|
133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; };
|
||||||
139105C61AF99C1200B5F7CC /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; };
|
139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; };
|
||||||
139FDEF61B0652A700C62182 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; };
|
139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; };
|
||||||
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
|
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
|
||||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||||
146834051AC3E58100842450 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
|
146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
|
||||||
2028DFF91D4275B600227DCD /* SF-UI-Display-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2028DFF51D4275B600227DCD /* SF-UI-Display-Medium.otf */; };
|
2028DFF91D4275B600227DCD /* SF-UI-Display-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2028DFF51D4275B600227DCD /* SF-UI-Display-Medium.otf */; };
|
||||||
2028DFFA1D4275B600227DCD /* SF-UI-Display-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2028DFF61D4275B600227DCD /* SF-UI-Display-Regular.otf */; };
|
2028DFFA1D4275B600227DCD /* SF-UI-Display-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2028DFF61D4275B600227DCD /* SF-UI-Display-Regular.otf */; };
|
||||||
2028DFFB1D4275B600227DCD /* SF-UI-Display-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2028DFF71D4275B600227DCD /* SF-UI-Display-Semibold.otf */; };
|
2028DFFB1D4275B600227DCD /* SF-UI-Display-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2028DFF71D4275B600227DCD /* SF-UI-Display-Semibold.otf */; };
|
||||||
2028DFFC1D4275B600227DCD /* SF-UI-Display-Thin.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2028DFF81D4275B600227DCD /* SF-UI-Display-Thin.otf */; };
|
2028DFFC1D4275B600227DCD /* SF-UI-Display-Thin.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2028DFF81D4275B600227DCD /* SF-UI-Display-Thin.otf */; };
|
||||||
20AB9EC61D47CC0300E7FD9C /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 201067C41D4789F700FA83B6 /* libRCTStatus.a */; };
|
20AB9EC61D47CC0300E7FD9C /* libRCTStatus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 201067C41D4789F700FA83B6 /* libRCTStatus.a */; };
|
||||||
20B6B6841D92C42600CC5C6A /* RSKImageCropper.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20B6B6831D92C42600CC5C6A /* RSKImageCropper.framework */; };
|
20B6B6841D92C42600CC5C6A /* RSKImageCropper.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20B6B6831D92C42600CC5C6A /* RSKImageCropper.framework */; };
|
||||||
20B6B6851D92C42600CC5C6A /* RSKImageCropper.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 20B6B6831D92C42600CC5C6A /* RSKImageCropper.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
20B6B6851D92C42600CC5C6A /* RSKImageCropper.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 20B6B6831D92C42600CC5C6A /* RSKImageCropper.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
20B6B6871D92C42600CC5C6A /* QBImagePicker.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20B6B6861D92C42600CC5C6A /* QBImagePicker.framework */; };
|
20B6B6871D92C42600CC5C6A /* QBImagePicker.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20B6B6861D92C42600CC5C6A /* QBImagePicker.framework */; };
|
||||||
|
@ -41,27 +41,29 @@
|
||||||
74242ACAF37A48D0BFACDE82 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2756305FAFF144C4A6B0A039 /* Zocial.ttf */; };
|
74242ACAF37A48D0BFACDE82 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2756305FAFF144C4A6B0A039 /* Zocial.ttf */; };
|
||||||
81C6E6AE0AA739BE9D87C1D0 /* libPods-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FC1CBCFE6C906043D6CCEEE1 /* libPods-StatusImTests.a */; };
|
81C6E6AE0AA739BE9D87C1D0 /* libPods-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FC1CBCFE6C906043D6CCEEE1 /* libPods-StatusImTests.a */; };
|
||||||
82E689BAF9FB43C8AC6FF1CA /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CEB0E2659D1A4F5FA842057A /* EvilIcons.ttf */; };
|
82E689BAF9FB43C8AC6FF1CA /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CEB0E2659D1A4F5FA842057A /* EvilIcons.ttf */; };
|
||||||
832341BD1AAA6AB300B99B32 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
|
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
|
||||||
8E55E6877F950B81C8D711C5 /* libPods-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 101A4045637A2ADF57D28EF5 /* libPods-StatusIm.a */; };
|
8E55E6877F950B81C8D711C5 /* libPods-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 101A4045637A2ADF57D28EF5 /* libPods-StatusIm.a */; };
|
||||||
9E0B01A11DDC5DA7002B0359 /* SF-UI-Text-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9E0B01A01DDC5DA7002B0359 /* SF-UI-Text-Light.otf */; };
|
9E0B01A11DDC5DA7002B0359 /* SF-UI-Text-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9E0B01A01DDC5DA7002B0359 /* SF-UI-Text-Light.otf */; };
|
||||||
9E3AB6D01D87DB2B008846B4 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E3AB6C61D87DA2B008846B4 /* libReact-Native-Webview-Bridge.a */; };
|
9E3AB6D01D87DB2B008846B4 /* libReact-Native-Webview-Bridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E3AB6C61D87DA2B008846B4 /* libReact-Native-Webview-Bridge.a */; };
|
||||||
9E7C64731E03FDDE004C7042 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 20B7D1151D3F74CD00B70F14 /* libRCTCamera.a */; };
|
9E54D6001F17A5DB009F0C16 /* libTestFairy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E54D5FD1F17A5DB009F0C16 /* libTestFairy.a */; };
|
||||||
9E7C64991E03FDE5004C7042 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 20B7D10A1D3F74CD00B70F14 /* libRCTContacts.a */; };
|
9E54D6011F17A5DB009F0C16 /* upload-dsym.sh in Resources */ = {isa = PBXBuildFile; fileRef = 9E54D5FF1F17A5DB009F0C16 /* upload-dsym.sh */; };
|
||||||
|
9E7C64731E03FDDE004C7042 /* libRCTCamera.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 20B7D1151D3F74CD00B70F14 /* libRCTCamera.a */; };
|
||||||
|
9E7C64991E03FDE5004C7042 /* libRCTContacts.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 20B7D10A1D3F74CD00B70F14 /* libRCTContacts.a */; };
|
||||||
9ED2F45E1D9D535A00B36508 /* SF-UI-Text-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9ED2F45D1D9D52DD00B36508 /* SF-UI-Text-Regular.otf */; };
|
9ED2F45E1D9D535A00B36508 /* SF-UI-Text-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9ED2F45D1D9D52DD00B36508 /* SF-UI-Text-Regular.otf */; };
|
||||||
9ED2F45F1D9D535A00B36508 /* SF-UI-Text-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9ED2F45C1D9D52C100B36508 /* SF-UI-Text-Medium.otf */; };
|
9ED2F45F1D9D535A00B36508 /* SF-UI-Text-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9ED2F45C1D9D52C100B36508 /* SF-UI-Text-Medium.otf */; };
|
||||||
9ED2F4611D9D579900B36508 /* SF-UI-Text-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9ED2F4601D9D577B00B36508 /* SF-UI-Text-Bold.otf */; };
|
9ED2F4611D9D579900B36508 /* SF-UI-Text-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9ED2F4601D9D577B00B36508 /* SF-UI-Text-Bold.otf */; };
|
||||||
9EE470511ED0079E0048FD10 /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EE470501ED0079E0048FD10 /* Mapbox.framework */; };
|
9EE470511ED0079E0048FD10 /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EE470501ED0079E0048FD10 /* Mapbox.framework */; };
|
||||||
9EE470521ED0079E0048FD10 /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9EE470501ED0079E0048FD10 /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
9EE470521ED0079E0048FD10 /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9EE470501ED0079E0048FD10 /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
9EE470541ED007E10048FD10 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EE4702F1ED0071A0048FD10 /* libRCTMapboxGL.a */; };
|
9EE470541ED007E10048FD10 /* libRCTMapboxGL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EE4702F1ED0071A0048FD10 /* libRCTMapboxGL.a */; };
|
||||||
9EE89E271E03FCB7007D3C25 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7F21DE718EF00D694FF /* libSplashScreen.a */; };
|
9EE89E271E03FCB7007D3C25 /* libSplashScreen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7F21DE718EF00D694FF /* libSplashScreen.a */; };
|
||||||
9EE89E2D1E03FD9F007D3C25 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = 20A5C9531D927137002C4965 /* libimageCropPicker.a */; };
|
9EE89E2D1E03FD9F007D3C25 /* libimageCropPicker.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 20A5C9531D927137002C4965 /* libimageCropPicker.a */; };
|
||||||
A6AF670051B842249D520C7B /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7ED174A34D7D42358313368B /* Foundation.ttf */; };
|
A6AF670051B842249D520C7B /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7ED174A34D7D42358313368B /* Foundation.ttf */; };
|
||||||
AE97D4B08C9F4821B8E9C50B /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 359B076A658B4FBAB5128B03 /* Ionicons.ttf */; };
|
AE97D4B08C9F4821B8E9C50B /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 359B076A658B4FBAB5128B03 /* Ionicons.ttf */; };
|
||||||
B23B48FF1E76917B006D4535 /* RobotoMono-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B23B48FE1E76917B006D4535 /* RobotoMono-Medium.ttf */; };
|
B23B48FF1E76917B006D4535 /* RobotoMono-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B23B48FE1E76917B006D4535 /* RobotoMono-Medium.ttf */; };
|
||||||
B24FC7FD1DE7195700D694FF /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FC1DE7195700D694FF /* Social.framework */; };
|
B24FC7FD1DE7195700D694FF /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FC1DE7195700D694FF /* Social.framework */; };
|
||||||
B24FC7FF1DE7195F00D694FF /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FE1DE7195F00D694FF /* MessageUI.framework */; };
|
B24FC7FF1DE7195F00D694FF /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FE1DE7195F00D694FF /* MessageUI.framework */; };
|
||||||
B2A5F45C1DEC36BB00174F4D /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = B2A5F4381DEC36B200174F4D /* libRCTAnimation.a */; };
|
B2A5F45C1DEC36BB00174F4D /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B2A5F4381DEC36B200174F4D /* libRCTAnimation.a */; };
|
||||||
B2DEA0D01E49E33300FA28D6 /* ReferenceProxy in Frameworks */ = {isa = PBXBuildFile; fileRef = B2DEA0B11E49E32000FA28D6 /* libRCTHttpServer.a */; };
|
B2DEA0D01E49E33300FA28D6 /* libRCTHttpServer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B2DEA0B11E49E32000FA28D6 /* libRCTHttpServer.a */; };
|
||||||
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */; };
|
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */; };
|
||||||
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */; };
|
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */; };
|
||||||
C3EE9AEA6F77464588FBAA64 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7B5870D9ED504F32B6A09C35 /* FontAwesome.ttf */; };
|
C3EE9AEA6F77464588FBAA64 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7B5870D9ED504F32B6A09C35 /* FontAwesome.ttf */; };
|
||||||
|
@ -481,6 +483,9 @@
|
||||||
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
||||||
9E0B01A01DDC5DA7002B0359 /* SF-UI-Text-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Light.otf"; sourceTree = "<group>"; };
|
9E0B01A01DDC5DA7002B0359 /* SF-UI-Text-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Light.otf"; sourceTree = "<group>"; };
|
||||||
9E3AB6B21D87DA2A008846B4 /* React-Native-Webview-Bridge.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "React-Native-Webview-Bridge.xcodeproj"; path = "../node_modules/react-native-webview-bridge/ios/React-Native-Webview-Bridge.xcodeproj"; sourceTree = "<group>"; };
|
9E3AB6B21D87DA2A008846B4 /* React-Native-Webview-Bridge.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "React-Native-Webview-Bridge.xcodeproj"; path = "../node_modules/react-native-webview-bridge/ios/React-Native-Webview-Bridge.xcodeproj"; sourceTree = "<group>"; };
|
||||||
|
9E54D5FD1F17A5DB009F0C16 /* libTestFairy.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libTestFairy.a; sourceTree = "<group>"; };
|
||||||
|
9E54D5FE1F17A5DB009F0C16 /* TestFairy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFairy.h; sourceTree = "<group>"; };
|
||||||
|
9E54D5FF1F17A5DB009F0C16 /* upload-dsym.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "upload-dsym.sh"; sourceTree = "<group>"; };
|
||||||
9EC0135C1E06FB1900155B5C /* RCTWKWebView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWKWebView.xcodeproj; path = "../node_modules/react-native-wkwebview-reborn/ios/RCTWKWebView.xcodeproj"; sourceTree = "<group>"; };
|
9EC0135C1E06FB1900155B5C /* RCTWKWebView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWKWebView.xcodeproj; path = "../node_modules/react-native-wkwebview-reborn/ios/RCTWKWebView.xcodeproj"; sourceTree = "<group>"; };
|
||||||
9ED2F45C1D9D52C100B36508 /* SF-UI-Text-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Medium.otf"; sourceTree = "<group>"; };
|
9ED2F45C1D9D52C100B36508 /* SF-UI-Text-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Medium.otf"; sourceTree = "<group>"; };
|
||||||
9ED2F45D1D9D52DD00B36508 /* SF-UI-Text-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Regular.otf"; sourceTree = "<group>"; };
|
9ED2F45D1D9D52DD00B36508 /* SF-UI-Text-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Regular.otf"; sourceTree = "<group>"; };
|
||||||
|
@ -521,29 +526,29 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
B2DEA0D01E49E33300FA28D6 /* ReferenceProxy in Frameworks */,
|
B2DEA0D01E49E33300FA28D6 /* libRCTHttpServer.a in Frameworks */,
|
||||||
9EE89E271E03FCB7007D3C25 /* ReferenceProxy in Frameworks */,
|
9EE89E271E03FCB7007D3C25 /* libSplashScreen.a in Frameworks */,
|
||||||
B2A5F45C1DEC36BB00174F4D /* ReferenceProxy in Frameworks */,
|
B2A5F45C1DEC36BB00174F4D /* libRCTAnimation.a in Frameworks */,
|
||||||
B24FC7FF1DE7195F00D694FF /* MessageUI.framework in Frameworks */,
|
B24FC7FF1DE7195F00D694FF /* MessageUI.framework in Frameworks */,
|
||||||
B24FC7FD1DE7195700D694FF /* Social.framework in Frameworks */,
|
B24FC7FD1DE7195700D694FF /* Social.framework in Frameworks */,
|
||||||
9EE89E2D1E03FD9F007D3C25 /* ReferenceProxy in Frameworks */,
|
9EE89E2D1E03FD9F007D3C25 /* libimageCropPicker.a in Frameworks */,
|
||||||
9E3AB6D01D87DB2B008846B4 /* ReferenceProxy in Frameworks */,
|
9E3AB6D01D87DB2B008846B4 /* libReact-Native-Webview-Bridge.a in Frameworks */,
|
||||||
20B6B6841D92C42600CC5C6A /* RSKImageCropper.framework in Frameworks */,
|
20B6B6841D92C42600CC5C6A /* RSKImageCropper.framework in Frameworks */,
|
||||||
CE4E31B31D8695250033ED64 /* Statusgo.framework in Frameworks */,
|
CE4E31B31D8695250033ED64 /* Statusgo.framework in Frameworks */,
|
||||||
20AB9EC61D47CC0300E7FD9C /* ReferenceProxy in Frameworks */,
|
20AB9EC61D47CC0300E7FD9C /* libRCTStatus.a in Frameworks */,
|
||||||
20B6B6871D92C42600CC5C6A /* QBImagePicker.framework in Frameworks */,
|
20B6B6871D92C42600CC5C6A /* QBImagePicker.framework in Frameworks */,
|
||||||
146834051AC3E58100842450 /* ReferenceProxy in Frameworks */,
|
146834051AC3E58100842450 /* libReact.a in Frameworks */,
|
||||||
00C302E51ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */,
|
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
|
||||||
00C302E71ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */,
|
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */,
|
||||||
00C302E81ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */,
|
00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */,
|
||||||
133E29F31AD74F7200F7D852 /* ReferenceProxy in Frameworks */,
|
133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */,
|
||||||
00C302E91ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */,
|
00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */,
|
||||||
139105C61AF99C1200B5F7CC /* ReferenceProxy in Frameworks */,
|
139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */,
|
||||||
832341BD1AAA6AB300B99B32 /* ReferenceProxy in Frameworks */,
|
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
|
||||||
00C302EA1ABCBA2D00DB3ED1 /* ReferenceProxy in Frameworks */,
|
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
|
||||||
139FDEF61B0652A700C62182 /* ReferenceProxy in Frameworks */,
|
139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
|
||||||
9E7C64731E03FDDE004C7042 /* ReferenceProxy in Frameworks */,
|
9E7C64731E03FDDE004C7042 /* libRCTCamera.a in Frameworks */,
|
||||||
9E7C64991E03FDE5004C7042 /* ReferenceProxy in Frameworks */,
|
9E7C64991E03FDE5004C7042 /* libRCTContacts.a in Frameworks */,
|
||||||
FD4F213C3873473CB703B1D2 /* libRNFS.a in Frameworks */,
|
FD4F213C3873473CB703B1D2 /* libRNFS.a in Frameworks */,
|
||||||
213311F38CA74CE280FD09AD /* libRNI18n.a in Frameworks */,
|
213311F38CA74CE280FD09AD /* libRNI18n.a in Frameworks */,
|
||||||
4D3D740D5EFA4F8592B048D7 /* libBVLinearGradient.a in Frameworks */,
|
4D3D740D5EFA4F8592B048D7 /* libBVLinearGradient.a in Frameworks */,
|
||||||
|
@ -555,11 +560,11 @@
|
||||||
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */,
|
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */,
|
||||||
3E15DFEC1F6F4D7CAE088F49 /* libTcpSockets.a in Frameworks */,
|
3E15DFEC1F6F4D7CAE088F49 /* libTcpSockets.a in Frameworks */,
|
||||||
E0AD9E8F495A4907B65104BF /* libRCTImageResizer.a in Frameworks */,
|
E0AD9E8F495A4907B65104BF /* libRCTImageResizer.a in Frameworks */,
|
||||||
|
9E54D6001F17A5DB009F0C16 /* libTestFairy.a in Frameworks */,
|
||||||
5F8585D411844E5981B94F40 /* libRNInstabug.a in Frameworks */,
|
5F8585D411844E5981B94F40 /* libRNInstabug.a in Frameworks */,
|
||||||
8E55E6877F950B81C8D711C5 /* libPods-StatusIm.a in Frameworks */,
|
8E55E6877F950B81C8D711C5 /* libPods-StatusIm.a in Frameworks */,
|
||||||
EC8998BFE2C04023A860C065 /* libRNNetworkInfo.a in Frameworks */,
|
|
||||||
9EE470511ED0079E0048FD10 /* Mapbox.framework in Frameworks */,
|
9EE470511ED0079E0048FD10 /* Mapbox.framework in Frameworks */,
|
||||||
9EE470541ED007E10048FD10 /* ReferenceProxy in Frameworks */,
|
9EE470541ED007E10048FD10 /* libRCTMapboxGL.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -646,6 +651,9 @@
|
||||||
13B07FAE1A68108700A75B9A /* StatusIm */ = {
|
13B07FAE1A68108700A75B9A /* StatusIm */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
9E54D5FD1F17A5DB009F0C16 /* libTestFairy.a */,
|
||||||
|
9E54D5FE1F17A5DB009F0C16 /* TestFairy.h */,
|
||||||
|
9E54D5FF1F17A5DB009F0C16 /* upload-dsym.sh */,
|
||||||
B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */,
|
B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */,
|
||||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
|
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
|
||||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
||||||
|
@ -1536,6 +1544,7 @@
|
||||||
82E689BAF9FB43C8AC6FF1CA /* EvilIcons.ttf in Resources */,
|
82E689BAF9FB43C8AC6FF1CA /* EvilIcons.ttf in Resources */,
|
||||||
C3EE9AEA6F77464588FBAA64 /* FontAwesome.ttf in Resources */,
|
C3EE9AEA6F77464588FBAA64 /* FontAwesome.ttf in Resources */,
|
||||||
A6AF670051B842249D520C7B /* Foundation.ttf in Resources */,
|
A6AF670051B842249D520C7B /* Foundation.ttf in Resources */,
|
||||||
|
9E54D6011F17A5DB009F0C16 /* upload-dsym.sh in Resources */,
|
||||||
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */,
|
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */,
|
||||||
AE97D4B08C9F4821B8E9C50B /* Ionicons.ttf in Resources */,
|
AE97D4B08C9F4821B8E9C50B /* Ionicons.ttf in Resources */,
|
||||||
0F942CF509F74CCDB5CB35B0 /* MaterialIcons.ttf in Resources */,
|
0F942CF509F74CCDB5CB35B0 /* MaterialIcons.ttf in Resources */,
|
||||||
|
@ -1826,6 +1835,10 @@
|
||||||
INFOPLIST_FILE = StatusIm/Info.plist;
|
INFOPLIST_FILE = StatusIm/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"$(PROJECT_DIR)",
|
||||||
|
);
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"-lc++",
|
"-lc++",
|
||||||
|
@ -1875,6 +1888,10 @@
|
||||||
INFOPLIST_FILE = StatusIm/Info.plist;
|
INFOPLIST_FILE = StatusIm/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"$(PROJECT_DIR)",
|
||||||
|
);
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"-lc++",
|
"-lc++",
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
#import "RCTBundleURLProvider.h"
|
#import "RCTBundleURLProvider.h"
|
||||||
#import "RCTRootView.h"
|
#import "RCTRootView.h"
|
||||||
#import "SplashScreen.h"
|
#import "SplashScreen.h"
|
||||||
|
#import "TestFairy.h"
|
||||||
|
#define NSLog(s, ...) do { NSLog(s, ##__VA_ARGS__); TFLog(s, ##__VA_ARGS__); } while (0)
|
||||||
@import Instabug;
|
@import Instabug;
|
||||||
|
|
||||||
@implementation AppDelegate
|
@implementation AppDelegate
|
||||||
|
@ -36,7 +38,8 @@
|
||||||
[self.window makeKeyAndVisible];
|
[self.window makeKeyAndVisible];
|
||||||
[SplashScreen show];
|
[SplashScreen show];
|
||||||
#ifndef DEBUG
|
#ifndef DEBUG
|
||||||
[Instabug startWithToken:@"5534212f4a44f477c9ab270ab5cd2062" invocationEvent:IBGInvocationEventShake];
|
[TestFairy begin:@"969f6c921cb435cea1d41d1ea3f5b247d6026d55"];
|
||||||
|
//[Instabug startWithToken:@"5534212f4a44f477c9ab270ab5cd2062" invocationEvent:IBGInvocationEventShake];
|
||||||
#endif
|
#endif
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,228 @@
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
#define TF_DEPRECATED(x) __attribute__ ((deprecated(x)))
|
||||||
|
|
||||||
|
@interface TestFairy: NSObject
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize a TestFairy session.
|
||||||
|
*
|
||||||
|
* @param appToken Your key as given to you in your TestFairy account
|
||||||
|
*/
|
||||||
|
+ (void)begin:(NSString *)appToken;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize a TestFairy session with options.
|
||||||
|
*
|
||||||
|
* @param appToken Your key as given to you in your TestFairy account
|
||||||
|
* @param options A dictionary of options controlling the current session
|
||||||
|
*/
|
||||||
|
+ (void)begin:(NSString *)appToken withOptions:(NSDictionary *)options;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change the server endpoint for use with on-premise hosting. Please
|
||||||
|
* contact support or sales for more information. Must be called before begin
|
||||||
|
*
|
||||||
|
* @param serverOverride server address for use with TestFairy
|
||||||
|
*/
|
||||||
|
+ (void)setServerEndpoint:(NSString *)serverOverride;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns SDK version (x.x.x) string
|
||||||
|
*
|
||||||
|
* @return version
|
||||||
|
*/
|
||||||
|
+ (NSString *)version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hides a specific view from appearing in the video generated.
|
||||||
|
*
|
||||||
|
* @param view The specific view you wish to hide from screenshots
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
+ (void)hideView:(UIView *)view;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hides a specific html element from appearing in your UIWebView
|
||||||
|
*
|
||||||
|
* @param selector The specific selector you wish to hide from screenshots. Multiple selectors can be comma separated
|
||||||
|
*/
|
||||||
|
+ (void)hideWebViewElements:(NSString *)selector;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pushes the feedback view controller. Hook a button
|
||||||
|
* to this method to allow users to provide feedback about the current
|
||||||
|
* session. All feedback will appear in your build report page, and in
|
||||||
|
* the recorded session page.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
+ (void)pushFeedbackController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send a feedback on behalf of the user. Call when using a in-house
|
||||||
|
* feedback view controller with a custom design and feel. Feedback will
|
||||||
|
* be associated with the current session.
|
||||||
|
*
|
||||||
|
* @param feedbackString Feedback text
|
||||||
|
*/
|
||||||
|
+ (void)sendUserFeedback:(NSString *)feedbackString;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Proxy didUpdateLocation delegate values and these
|
||||||
|
* locations will appear in the recorded sessions. Useful for debugging
|
||||||
|
* actual long/lat values against what the user sees on screen.
|
||||||
|
*
|
||||||
|
* @param locations Array of CLLocation. The first object of the array will determine the user location
|
||||||
|
*/
|
||||||
|
+ (void)updateLocation:(NSArray *)locations;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks a checkpoint in session. Use this text to tag a session
|
||||||
|
* with a checkpoint name. Later you can filter sessions where your
|
||||||
|
* user passed through this checkpoint, for bettering understanding
|
||||||
|
* user experience and behavior.
|
||||||
|
*
|
||||||
|
* @param name The checkpoint name
|
||||||
|
*/
|
||||||
|
+ (void)checkpoint:(NSString *)name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a correlation identifier for this session. This value can
|
||||||
|
* be looked up via web dashboard. For example, setting correlation
|
||||||
|
* to the value of the user-id after they logged in. Can be called
|
||||||
|
* only once per session (subsequent calls will be ignored.)
|
||||||
|
*
|
||||||
|
* @param correlationId Id for the current session
|
||||||
|
*/
|
||||||
|
+ (void)setCorrelationId:(NSString *)correlationId TF_DEPRECATED("Please refer to setUser:");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a correlation identifier for this session. This value can
|
||||||
|
* be looked up via web dashboard. For example, setting correlation
|
||||||
|
* to the value of the user-id after they logged in. Can be called
|
||||||
|
* only once per session (subsequent calls will be ignored.)
|
||||||
|
*
|
||||||
|
* @param correlationId Id for the current session
|
||||||
|
*/
|
||||||
|
+ (void)identify:(NSString *)correlationId TF_DEPRECATED("Please refer to setAttribute: and setUser:");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a correlation identifier for this session. This value can
|
||||||
|
* be looked up via web dashboard. For example, setting correlation
|
||||||
|
* to the value of the user-id after they logged in. Can be called
|
||||||
|
* only once per session (subsequent calls will be ignored.)
|
||||||
|
*
|
||||||
|
* @param correlationId Id for the current session
|
||||||
|
* @param traits Attributes and custom attributes to be associated with this session
|
||||||
|
*/
|
||||||
|
+ (void)identify:(NSString *)correlationId traits:(NSDictionary *)traits TF_DEPRECATED("Please refer to setAttribute:");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pauses the current session. This method stops recoding of
|
||||||
|
* the current session until resume has been called.
|
||||||
|
*
|
||||||
|
* @see resume
|
||||||
|
*/
|
||||||
|
+ (void)pause;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resumes the recording of the current session. This method
|
||||||
|
* resumes a session after it was paused.
|
||||||
|
*
|
||||||
|
* @see pause
|
||||||
|
*/
|
||||||
|
+ (void)resume;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the address of the recorded session on testfairy's
|
||||||
|
* developer portal. Will return nil if recording not yet started.
|
||||||
|
*
|
||||||
|
* @return session URL
|
||||||
|
*/
|
||||||
|
+ (NSString *)sessionUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Takes a screenshot.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
+ (void)takeScreenshot;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the name of the current screen. Useful for single page
|
||||||
|
* applications which use a single UIViewController.
|
||||||
|
*
|
||||||
|
* @param name logic name of current screen
|
||||||
|
*/
|
||||||
|
+ (void)setScreenName:(NSString *)name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stops the current session recording. Unlike 'pause', when
|
||||||
|
* calling 'resume', a new session will be created and will be
|
||||||
|
* linked to the previous recording. Useful if you want short
|
||||||
|
* session recordings of specific use-cases of the app. Hidden
|
||||||
|
* views and user identity will be applied to the new session
|
||||||
|
* as well, if started.
|
||||||
|
*/
|
||||||
|
+ (void)stop;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Records a session level attribute which can be looked up via web dashboard.
|
||||||
|
*
|
||||||
|
* @param name The name of the attribute. Cannot be nil.
|
||||||
|
* @param value The value associated with the attribute. Cannot be nil.
|
||||||
|
* @return YES if successfully set attribute value, NO if failed with error in log.
|
||||||
|
*
|
||||||
|
* @note The SDK limits you to storing 64 named attributes. Adding more than 64 will fail and return NO.
|
||||||
|
*/
|
||||||
|
+ (BOOL)setAttribute:(NSString *)key withValue:(NSString *)value;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Records a user identified as an attribute. We recommend passing values such as
|
||||||
|
* email, phone number, or user id that your app may use.
|
||||||
|
*
|
||||||
|
* @param userId The identifying user. Cannot be nil.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
+ (void)setUserId:(NSString *)userId;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
#if __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remote logging, use TFLog as you would use printf. These logs will be sent to the server,
|
||||||
|
* but will not appear in the console.
|
||||||
|
*
|
||||||
|
* @param format sprintf-like format for the arguments that follow
|
||||||
|
*/
|
||||||
|
void TFLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remote logging, use TFLogv as you would use printfv. These logs will be sent to the server,
|
||||||
|
* but will not appear in the console.
|
||||||
|
*
|
||||||
|
* @param format sprintf-like format for the arguments that follow
|
||||||
|
* @param arg_list list of arguments
|
||||||
|
*/
|
||||||
|
void TFLogv(NSString *format, va_list arg_list);
|
||||||
|
|
||||||
|
#if __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern NSString *const TFSDKIdentityTraitNameKey;
|
||||||
|
extern NSString *const TFSDKIdentityTraitEmailAddressKey;
|
||||||
|
extern NSString *const TFSDKIdentityTraitBirthdayKey;
|
||||||
|
extern NSString *const TFSDKIdentityTraitGenderKey;
|
||||||
|
extern NSString *const TFSDKIdentityTraitPhoneNumberKey;
|
||||||
|
extern NSString *const TFSDKIdentityTraitWebsiteAddressKey;
|
||||||
|
extern NSString *const TFSDKIdentityTraitAgeKey;
|
||||||
|
extern NSString *const TFSDKIdentityTraitSignupDateKey;
|
||||||
|
extern NSString *const TFSDKEnableCrashReporterKey;
|
||||||
|
extern NSString *const TestFairyDidShakeDevice;
|
||||||
|
extern NSString *const TestFairyWillProvideFeedback;
|
||||||
|
extern NSString *const TestFairyDidCancelFeedback;
|
||||||
|
extern NSString *const TestFairyDidSendFeedback;
|
Binary file not shown.
|
@ -0,0 +1,101 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
TESTFAIRY_ENDPOINT="https://app.testfairy.com/upload/dsym/"
|
||||||
|
|
||||||
|
ZIP=zip
|
||||||
|
CURL=curl
|
||||||
|
STAT=stat
|
||||||
|
DATE=date
|
||||||
|
|
||||||
|
log() {
|
||||||
|
NOW=$($DATE +"%Y-%m-%d %H:%M:%S")
|
||||||
|
echo "${NOW} ${1}"
|
||||||
|
}
|
||||||
|
|
||||||
|
help() {
|
||||||
|
echo "Usage: ${0} [-f] TESTFAIRY_API_KEY [-p DSYM_PATH] [-u TESTFAIRY_ENDPOINT]"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
DAEMON=1
|
||||||
|
if [ "${1}" == "-f" ]; then
|
||||||
|
DAEMON=0
|
||||||
|
shift
|
||||||
|
elif [ "${1}" == "-d" ]; then
|
||||||
|
# backward compatible when -f was the default
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
API_KEY="${1}"
|
||||||
|
if [ ! "${API_KEY}" ]; then
|
||||||
|
echo "Fatal: No Upload API key provided."
|
||||||
|
help
|
||||||
|
fi
|
||||||
|
|
||||||
|
DSYM_PATH=${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
|
||||||
|
|
||||||
|
shift
|
||||||
|
while [[ $# -gt 1 ]]
|
||||||
|
do
|
||||||
|
key="$1"
|
||||||
|
case $key in
|
||||||
|
-u)
|
||||||
|
TESTFAIRY_ENDPOINT="${2}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-p)
|
||||||
|
DSYM_PATH="${2}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
help
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "${DSYM_PATH}" == "" ] || [ "${DSYM_PATH}" == "/" ] || [ ! -d "${DSYM_PATH}" ]; then
|
||||||
|
echo "Fatal: No .dSYM folder found at path [${DSYM_PATH}]."
|
||||||
|
help
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${TESTFAIRY_ENDPOINT} == "" ]]; then
|
||||||
|
echo "Fatal: No upload endpoint given."
|
||||||
|
help
|
||||||
|
fi
|
||||||
|
|
||||||
|
NOW=$($DATE +%s)
|
||||||
|
TMP_FILENAME="/tmp/${NOW}-${DWARF_DSYM_FILE_NAME}.zip"
|
||||||
|
|
||||||
|
# Compress the .dSYM folder into a zip file
|
||||||
|
log "Compressing .dSYM folder ${DSYM_PATH}"
|
||||||
|
$ZIP -qrp9 "${TMP_FILENAME}" "${DSYM_PATH}"
|
||||||
|
FILE_SIZE=$($STAT -f "%z" "${TMP_FILENAME}")
|
||||||
|
|
||||||
|
foreground_upload() {
|
||||||
|
# Upload zipped .dSYM file to TestFairy's servers
|
||||||
|
STARTED=$($DATE +"%s")
|
||||||
|
$CURL -s -F api_key="${API_KEY}" -F dsym=@"${1}" -o /dev/null "${TESTFAIRY_ENDPOINT}"
|
||||||
|
ENDED=$($DATE +"%s")
|
||||||
|
DIFF=$(expr ${ENDED} - ${STARTED})
|
||||||
|
log "Symbols uploaded in ${DIFF} seconds"
|
||||||
|
|
||||||
|
# Clean up behind
|
||||||
|
rm -f ${TMP_FILENAME}
|
||||||
|
}
|
||||||
|
|
||||||
|
background_upload() {
|
||||||
|
sh -c "$CURL -F api_key=\"${API_KEY}\" -F dsym=@\"${1}\" -s -o /dev/null \"${TESTFAIRY_ENDPOINT}\"; rm -f ${TMP_FILENAME};" /dev/null 2>&1 &
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$DAEMON" == "0" ]; then
|
||||||
|
log "Uploading ${FILE_SIZE} bytes to dsym server in foreground"
|
||||||
|
foreground_upload "${TMP_FILENAME}"
|
||||||
|
else
|
||||||
|
log "Uploading ${FILE_SIZE} bytes to dsym server in background"
|
||||||
|
background_upload "${TMP_FILENAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "TestFairy .dSYM upload script ends"
|
||||||
|
|
Loading…
Reference in New Issue