Use of unresolved identifier GGLContext and GAI - xcode

I am having a bit of trouble. I am attempting to install Google Analytics into an app and am consistently getting the use of unresolved identifier GGLContext and GAI error. I receive the same error whether I am using CocoaPods or not. The location of the error is in the AppDelegate.swift here:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
var configureError:NSError?
GGLContext.sharedInstance().configureWithError(&configureError)
assert(configureError == nil, "Error configuring Google services: \(configureError)")
// Optional: configure GAI options.
let gai = GAI.sharedInstance()
gai.trackUncaughtExceptions = true // report uncaught exceptions
return true
}
Nothing additional is able to be imported into the AppDelegate.swift(such as Google), just the standard UIKit.
I have been through many tutorials and other SO questions, all to no avail. I figure that there is some small thing I am missing, but cannot find it.
What I've done:
I have the .h files in my project, along with libGoogleAnalyticsServices.a, libsqlite3.0.tbd, libz.tbd, libsqlite3.tbd (all of which have been linked to library as well as CoreData and SystemConfiguration).
You can see the layout of all these files here:
and here:
I have created the -Bridging-Header.h and included these .h imports in it.
#import "GAI.h"
#import "GAIDictionaryBuilder.h"
#import "GAIEcommerceFields.h"
#import "GAIEcommerceProduct.h"
#import "GAIEcommerceProductAction.h"
#import "GAIEcommercePromotion.h"
#import "GAIFields.h"
#import "GAILogger.h"
#import "GAITrackedViewController.h"
#import "GAITracker.h"
The -Bridging-Header.h is linked in the Build Settings and I receive no errors with that. That is the main solution that I have found during my research, which hasn't helped me in this situation.
I have tried to start over from scratch twice with CocoaPods and without (I made a copy of my project before starting) and I received the same error each time.
Any help would certainly be appreciated. Thanks in advance.

Well, it looks like I was able to get it squared away.
There were several problems with all attempts on this.
Cocoapods had not installed correctly. I reinstalled and then had better success importing the correct files.
Doing it manually, as I posted above is not the best option.
After the Cocoapods re-install and starting over from a fresh copy of my project, I was able to import Google into my AppDelegate.swift.
Key points for those who may end up in the same boat I was in:
Be sure to add the correct directory for your -Bridging-Header.h. You can find this under Project - Build Settings - Swift Compiler Code Generation. Use this to easily target your header file $(SWIFT_MODULE_NAME)-Bridging-Header.h
In your -Bridging-Header.h, do not #import <Google/Analytics.h>, instead import the files individually. Here is an image of the files available to be imported.
When in doubt, reinstall Cocoapods
Do not trust Google tutorials to provide the most effective instruction and utilize the many SO posts on the topic.
I really hope this helps someone not spend 10 hours on the problem as I have.

Swift 4.0 and xcode 9.0.1 finally I resolved.
For me after 2 days I resolved.. Don't follow Google's old documentation says #import <Google/Analytics.h>
Go to Terminal type pod init
Reopen project as workspace obvious after pod workspace is created, open podfile. write pod 'GoogleAnalytics' in your pod file before target 'GoogleAnalytics' do
Go back to Terminal pod install you will find frameworks GAI.h and other files will be there under pods folder
Create Header.h file to your root. Don't add #import <Google/Analytics.h> instead import following individually in bridging header file
e.g. in bridging header file remove #import <Google/Analytics.h>
#import GAI.h
#import "GAITracker.h"
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"
Point your bridge under Build Settings for target Swift Compiler - General -> Objective-C Bridging Header. write Header.h of your bridging file name
Add code from google for swift to didFinishLaunchingWithOptions Don't forget to replace your tracking id from Google Analytics page
guard let gai = GAI.sharedInstance() else {
assert(false, "Google Analytics not configured correctly")
}
gai.tracker(withTrackingId: "YOUR_TRACKING_ID")
// Optional: automatically report uncaught exceptions.
gai.trackUncaughtExceptions = true
// Optional: set Logger to VERBOSE for debug information.
// Remove before app release.
gai.logger.logLevel = .verbose;
Tada.... Run your project...

My error was use of unresolved identifier when i was using the singleton GAI.sharedInstance().
My steps to bring this to work were:
add pod 'Google/Analytics'
pod install
restart xcode
create a objc class in my project to get a bridging header
added #import "GAI.h" in to the bridging header file
everything works perfectly.

This works for swift 2.3, swift 3.0 and swift 4:
add the GoogleService-Info.plist file to the root of your project
add this to the podfile:
pod 'Google/Analytics'
quit Xcode, run "pod install" in terminal and open Xcode again
create a header file in the project root, named Bridging-Header.h, under build settings make sure the bridging header is defined like in the picture
make sure your Bridging-Header.h looks like this:
#ifndef Bridging_Header_h
#define Bridging_Header_h
#import <Google/Analytics.h>
#endif /* Bridging_Header_h */
add to AppDelegate:
import Google
add this code to AppDelegate in the didFinishLaunchingWithOptions method:
// Configure tracker from GoogleService-Info.plist.
var configureError: NSError?
GGLContext.sharedInstance().configureWithError(&configureError)
assert(configureError == nil, "Error configuring Google services:\(configureError)")
// Optional: configure GAI options.
guard let gai = GAI.sharedInstance() else {
assert(false, "Google Analytics not configured correctly")
}
gai.trackUncaughtExceptions = true // report uncaught exceptions
gai.logger.logLevel = GAILogLevel.Verbose // remove before app release
If there are errors, deleting DerivedData and cleaning the project can help.

The only way to make it work for me was downgrade Google Analytics pod version to 2.0.4.
pod 'Google/Analytics', '~> 2.0.4'

Related

Use SCSS style files within AngularDart 5 and Dart 2

I’m working with Dart 2 and AngularDart 5.
⚠ I searched online about my question, but I didn’t find a satisfactory answer.
❔ Can somebody explain all the steps I need to include and to work with SCSS style files within my AngularDart application?
I started with quickstart application that you can find here.
Thank you!
Add a dev dependency to your pubspec.yaml for sass_builder:
^2.0.0.
Run pub get to download the new dependencies.
Create a sass file ex: lib/app_component.scss and add some styles to it.
Add a the compiled css stylesheet to your the #Component annotation in lib/app_component.dart:
styleUrls: const ['app_component.css'],
The css file will be generated by sass_builder during the build process.
If you are using angluar_components. One could simply turn it on:
Create a build.yaml file with the following content :
targets:
$default:
builders:
angular_components|scss_builder:
enabled: True
Use the following convention for the styleUrl annotations:
styleUrls: const ['app_component.scss.css']
Write your sass in the *.scss files.
With newest versions:
Surprise: In styleUrls are in a different CSS filename (not with the .scss.css extension, just .css; e.g. app_component.css, but the styles are in app_component.scss).
Surprise: In app_component.scss, import without lib in the path:
#import 'package:angular_components/app_layout/mixins';
I am using this command:
pub run build_runner serve --verbose
See with package info:
https://github.com/dart-lang/angular_components/issues/374#issuecomment-636344237

failed to import bridging header swift 2

I was trying to use SocketIO and Alamofire using cocoapods and started facing this issue. Earlier I added these libraries manually which was working fine.
goto Project->Bulid Setting->Objective-C Bridging Header set "Header.h"... but full path insert
your header file into project group the full path... Like project group name is "XYZ",header file name "Header.h"..set "XYZ/Hrader.h" to Objective-C Bridging Header
There are 3 simple steps to follow,
Add a new Header file into project, using File - > New -> File -> iOS -> Source -> Header File.
Name the class 'your-project-name-Bridging-Header.h'
and press continue to save the file.
Go to Build Settings -> Objective-C Bridging Header and set as ‘your-project-name-Bridging-Header.h’.
If you are using the use_frameworks flag of Cocoapods (which you probably are, since you are using Swift), you have to import like this #import <Reachability/Reachability.h>.
A more general statement would be #import <MODULE/FILE>.

CocoaLumberjack Not Logging

I'm trying to integrate CocoaLumberjack into an existing project (so that I can get better logging on a customer's machine who is reporting a bug I can't duplicate). I've successfully built a sample project and got it to work in that, but it seems to do nothing in my own app.
I've copied the Lumberjack directory to my project directory and added that to the project. I've added the following to my 'Prefix.pch' file:
#import "DDLog.h"
#import "DDASLLogger.h"
#import "DDTTYLogger.h"
#import "DDFileLogger.h"
static const int ddLogLevel = LOG_LEVEL_VERBOSE;
I've placed the following in -applicationDidFinishLaunching:
[DDLog addLogger:[DDASLLogger sharedInstance]];
[DDLog addLogger:[DDTTYLogger sharedInstance]];
Finally I have the following in -awakeFromNib
NSLog(#"%#", #(ddLogLevel));
NSLog(#"%#", #(LOG_LEVEL_VERBOSE));
NSLog(#"%#", #"About to DDLog");
DDLogError(#"This is an error.");
DDLogWarn(#"This is a warning.");
DDLogInfo(#"This is just a message.");
DDLogVerbose(#"This is a verbose message.");
NSLog(#"%#", #"Done with DDLog");
The console shows:
2014-05-26 14:57:13.530 [21943:303] 31
2014-05-26 14:57:13.530 [21943:303] 31
2014-05-26 14:57:13.530 [21943:303] About to DDLog
2014-05-26 14:57:13.531 [21943:303] Done with DDLog
I've tried stepping through the library's source code, but it's honestly above my head. Any assistance in figuring out what I'm doing wrong would be greatly appreciated.

"FAILED pluginJSON" Error while Calling EmailComposerwithattachments PlugIn in Phonegap-2.3.0

Hi I am using EmailcomposerWithAttachments Plugin from phonegap plugins. I am using Phonegap-2.3.0 and ios6 Simulator and latest Xcode.
I have placed the .m, .h files in Plugins folder of project and Js file in WWW folder and calling the plugin using
window.plugins.emailComposer.showEmailComposer("Look at this photo","Take a look at <b>this<b/>:",["the.das#gmail.com", "dasthe#gmail.com"],[],[],true,[]);
js code as given in readme.md file. https://github.com/phonegap/phonegap-plugins/tree/master/iOS/EmailComposerWithAttachments
when i run it i am getting below error in Log.
-[CDVCommandQueue executePending] [Line 103] FAILED pluginJSON = ["INVALID","EmailComposer","showEmailComposer",[{"subject":"Look at this photo","bIsHTML":true,"ccRecipients":[],"attachments":[],"bccRecipients":[],"toRecipients":["the.das#gmail.com","dasthe#gmail.com"],"body":"Take a look at <b>this<b/>:"}]]
Please Let me know where I am doing Wrong.
In config.xml File <plugin name="EmailComposer" value="EmailComposer" /> I add this in plugIn
Thanks.
It seems that your plugin has been added correctly,but some error occur in plugin file. I think you may create another project in xcode and compile to check if bugs exist in the plugin.
Try to use "" instead of [] like this
window.plugins.emailComposer.showEmailComposer(
"Look at this photo", // subject
"Take a look at <b>this<b/>:", // body
"the.das#gmail.com,dasthe#gmail.com", // toRecipients
"", // toRecipients
"", // bccRecipients
true, // bIsHTML
);
in code, we expect string for separate then by #","
...
[picker setToRecipients:[ toRecipientsString componentsSeparatedByString:#","]];
...
I hope this helps

converter-sample.c contains duplicate main

I'm trying to deploy an application on the mac app store.
I'm working through the process of adding the code to validate the recipts
In accordance to the documentation I've compleated the follwing steps
Installed asn1c using sudo port install asn1c
Created a file modlule.asn1 in a directory asn1c_dir from listing 1-1.
cd asn1c_dir
asn1c -fnative-types module.asn1
Then in Xcode "add existing files" and add the asn1c_dir directory
Try building, but I get ~900 errors
In the target build settings, I check the box next to "Always Search User Paths"
I now get a single error saying "Duplicate symbol _main in /foo/bar/ppc/converter-sample.o and /foo/bar/ppc/main.o
I've tracked this to the fact that it looks like the file converter-sample.c declares it's own int main() function which is bad right?
any help would be appreciated.
So for metric reasons, I'll answer this question.
converter-sample.c is an unnecessary file. Delete it. Go about your life a happy person.

Resources