Giter Club home page Giter Club logo

sunshine-conversations-ios's Introduction

Pod Version Platform License Carthage compatible

Smooch is the best way to have personal, rich conversations with people on your website or customers on any device. Our features, integrations and developer-friendly APIs empower companies to connect with their customers in a whole new way.

The Smooch iOS SDK will add in-app messaging to your iOS app. Customers will be able to talk to you from your app, while you manage conversations using your favorite business apps.

  • Maximize development productivity with a single codebase across platforms and add more channels anytime.
  • Build better relationships with messaging that feels and looks native to your app.
  • Delight your customers with the most engaging conversational experience using rich messaging.
  • Sync conversations across every device and channel your customers use.
  • Bring every conversation into your existing business apps. No new tool to learn. See all integrations.

Sign up and get an app id: https://app.smooch.io/signup.

CocoaPods:

pod "Smooch"
pod update

Carthage:

github "zendesk/sunshine-conversations-ios" ~> VERSION_NUMBER
carthage update

Obj-C:

[Smooch initWithSettings:[SKTSettings settingsWithIntegrationId:@"YOUR_INTEGRATION_ID"] completionHandler:^(NSError * _Nullable error, NSDictionary * _Nullable userInfo) {
        // Your code after init is complete
    }];
[Smooch show];

Swift:

Smooch.initWith(SKTSettings(integrationId: "YOUR_INTEGRATION_ID")) { (error: Error?, userInfo: [AnyHashable : Any]?) in
            // Your code after init is complete
        }
Smooch.show()

Our Docs and full install guide.

Also, check out Smooch Help Kit for even more features!

sunshine-conversations-ios's People

Contributors

alavers avatar arestronaut avatar daidoujichen avatar dannytranlx avatar deehegarty avatar dids avatar ejeklint avatar emonster avatar esqarrouth avatar gaborvass-zendesk avatar iamconornolan avatar jpjoyal avatar jugarrit avatar matthewoleary avatar mspensieri avatar natanrolnik avatar natasha-cole-ios-developer avatar renaudjennymonese avatar solidgas avatar williamsjj avatar wmora avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sunshine-conversations-ios's Issues

Please add new line to end of SKTConversation.h & SKTUser.h

Our project uses the "Missing New Line At End Of File" warning available in XCode. In addition, some of our schemes treat warnings as errors. These two combined result in an inability to build some schemes when the SupportKit framework is included in our project due to the missing new line at the the end of the aforementioned headers.

Intermittent crash in SKTMonitoring.m line 185

We're seeing an intermittent crash in SKTMonitoring.m line 185:

Thread : Crashed: com.apple.main-thread
0  libsystem_kernel.dylib         0x3a3101fc __pthread_kill + 8
1  libsystem_pthread.dylib        0x3a377a53 pthread_kill + 58
2  libsystem_c.dylib              0x3a2c102d abort + 76
3  libsystem_malloc.dylib         0x3a33e75d purgeable_ptr_in_use_enumerator
4  libsystem_malloc.dylib         0x3a33e9d9 free_list_checksum_botch + 28
5  libsystem_malloc.dylib         0x3a336f05 tiny_malloc_from_free_list + 1048
6  libsystem_malloc.dylib         0x3a3359e9 szone_malloc_should_clear + 228
7  libsystem_malloc.dylib         0x3a3358d3 malloc_zone_malloc + 70
8  libsystem_malloc.dylib         0x3a338d17 malloc + 46
9  libsystem_blocks.dylib         0x3a2769a1 _Block_copy_internal + 376
10 CoreFoundation                 0x2f5f52c3 _CFXNotificationRegisterObserver + 726
11 Foundation                     0x2ffcf2af -[NSNotificationCenter addObserver:selector:name:object:] + 258
12 App_Client_for_iOS    0x0012cfad -[SKTMonitoring initWithToken:andFlushInterval:] (SKTMonitoring.m:185)
13 App_Client_for_iOS    0x0012ca7f __41+[SKTMonitoring sharedInstanceWithToken:]_block_invoke (SKTMonitoring.m:104)
14 libdispatch.dylib              0x3a2450af _dispatch_client_callout + 22
15 libdispatch.dylib              0x3a245cdb dispatch_once_f + 42
16 App_Client_for_iOS    0x0012ca2d +[SKTMonitoring sharedInstanceWithToken:] (once.h:68)
17 App_Client_for_iOS    0x00106ecf -[SKTAnalytics start] (SKTAnalytics.m:67)
18 App_Client_for_iOS    0x0010705f -[SKTAnalytics trackInternal:properties:shouldQueue:shouldForward:] (SKTAnalytics.m:90)
19 App_Client_for_iOS    0x00106fc7 -[SKTAnalytics track:properties:] (SKTAnalytics.m:80)
20 App_Client_for_iOS    0x00101a35 +[SupportKit applicationDidFinishLaunching:] (SupportKit.m:394)
21 CoreFoundation                 0x2f678e71 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
22 CoreFoundation                 0x2f5ecab1 _CFXNotificationPost + 1720
23 Foundation                     0x2ffd2ec5 -[NSNotificationCenter postNotificationName:object:userInfo:] + 72
24 UIKit                          0x31eab685 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1792
25 UIKit                          0x31ea5b41 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 720
26 UIKit                          0x31e40a07 -[UIApplication handleEvent:withNewEvent:] + 3142
27 UIKit                          0x31e3fcfd -[UIApplication sendEvent:] + 72
28 UIKit                          0x31ea5321 _UIApplicationHandleEvent + 664
29 GraphicsServices               0x342f276d _PurpleEventCallback + 608
30 GraphicsServices               0x342f2357 PurpleEventCallback + 34
31 CoreFoundation                 0x2f681777 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 34
32 CoreFoundation                 0x2f681713 __CFRunLoopDoSource1 + 346
33 CoreFoundation                 0x2f67fedf __CFRunLoopRun + 1406
34 CoreFoundation                 0x2f5ea471 CFRunLoopRunSpecific + 524
35 CoreFoundation                 0x2f5ea253 CFRunLoopRunInMode + 106
36 UIKit                          0x31ea45c3 -[UIApplication _run] + 762
37 UIKit                          0x31e9f845 UIApplicationMain + 1136
38 App_Client_for_iOS    0x0005d933 main (main.m:16)

Appending to ticket

I'm not sure if this is a bug, or expected behavior, but I just noticed something odd.

A user sent me three sentences, all as separate messages, but sent at roughly the same time.
Zendesk created 3 tickets, even though the sender is the same for each one of them.

Is this just because Zendesk didn't create the first ticket "in time" to append to it, or is this SupportKit related?

Provide option to push Support Kit VC on nav controller

The requirements I have been given includes push a zendesk 'help' vc onto a navigation view controller stack and the modal looking animation default animation doesn't work well for that. Might there be an option for that or a way I can configure support kit to do that?

Localization for customizing of base text isn't suitable.

Using Localization as the mechanism to customize UI text isn't really suitable. For example:

"Messages" = "Chat"

Is what we have to do to customize the Message button to say "Chat". However, if we upload this to our translation tool, all the French/German/Arabic/etc translators will see is "Messages" as the text to translate, when what we want is a translation of the word Chat.

It's even worse when you consider the conversation text:

"This is the start of your conversation with the %@ team. We'll stay in touch to help you get the most out of your app.\nFeel free to leave us a message about anything that’s on your mind. We’ll get back to your questions, suggestions or anything else as soon as we can."

Customizing the various text really need to be configurable via SKTSettings, rather than a hack using localization.

Provide option to suppress keyboard popup on 'show'.

When showing the view the keyboard always pops up obscuring "Message an Agent". Which means a customer may not see it. We would prefer the ability to suppress that behavior.

Also, I'd prefer the logs and events are attached directly to the Zendesk ticket.

Use of AdSupport.framework

When using with Cocoapods, it's unclear that the framework uses the AdSupport framework. This can cause a roadblock when submitting to the App Store if you don't select 'Yes' for the IDFA option in iTunesConnect.

The documentation should perhaps mention this as well as what type of IDFA use the framework has.

Scheduled auto-responders

It would be great if there was a way in the admin console to set up a schedule of auto-response messages.

Compilation issue using Cocoapod 2.10.2

Hey guys,

Receiving the following error when compiling using the latest Cocoapod - thought you'd like a heads up.

ld: framework not found ModelIO for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

Occurs when compiling against iOS 8 SDK, Xcode Version 6.4 (6E35b)

-G

Preload setDefaultRecommendations URLs

Would be really nice if SupportKit provided an option to preload the URLs when setDefaultRecommendations is run. That way the articles pop up with no lag when the help center is presented.

Programmatically send message

We allow users to report issues via this tool, and then have a conversation around them. They select the object they are having an issue with in our system (a guest card), and then start the conversation. Right now we set a custom user property each time, but that doesn't really fit the bill since there's no history on that property. Anyway to send a custom message so we could say "Reporting issue with guest card: Bob Spryn"?

Block offensive users

We've occasionally have an issue where a user is repeatedly inappropriate over the support chat. We'd like to be able to block that device. A "Block this device" link on the e-mail would be fantastic.

Bundle not loading when used with another Swift pod

Ok, so I have this app where I use on pod that's written in Swift. Doing so makes me add the use_frameworks! flag in my Podfile.

The app compiles and all but it then complains that the SupportKit.bundle is not present in the app binary.

I tried adding it manually (even though that defeats the purpose of using CocoaPods) and it seems to be fine. Until I tried submitting the app to the store. I then got this error:

screen_shot_2015-04-14_at_17 34 44-1

Could anyone help me with this please?

P.S: My Podfile looks like this:

pod 'SupportKit'
pod 'NKJSON'
use_frameworks!

Hide/modify "photo" button in chat view.

We'd like the ability to hide the "Take Photo" menu item, leaving only "Choose from Library" in the new "insert photo" feature. Since we only need the feature for attaching screenshots we'd really like to be able to disable "Take Photo".

Our app is frequently used by kids and we don't want it to be 1-tap for them to snap and attach an inappropriate photo.

Also, there should probably be a way in SKTSettings to disable the new "attach photo" button in the chat altogether.

Ability to send images and other files in the conversation

I think this is pretty important. A user should be able to send the supporter images and other files that might help resolving issues with the app. Same thing, a supporter should be able to send files in the conversation by replying with an email with attachments.

Using SupportKit (2.10.1) with Xcode 7 causes lots and lots of warnings

SupportKit added through CocoaPods.

Xcode 7 shows hundreds of warnings similar to the following two:

warning: Could not resolve external type c:objc(cs)NSDate
while processing /Users/ekurutepe/Development/myapp-ios/Pods/SupportKit/SupportKit.framework/SupportKit(SKTMessage.o):
warning: /var/folders/wx/0_hjrq2j6px2mwqb2yln07v00000gn/C/org.llvm.clang.Mike/ModuleCache/1FPYCAC9U2QBN/UIKit-2LM3EQU7VVY4O.pcm: No such file or directory
while processing /Users/ekurutepe/Development/myapp-ios/Pods/SupportKit/SupportKit.framework/SupportKit(SKTSwipeView.o):

Primary app view not loading when tapping on a new push notification message

I'm initializing SupportKit at the end of AppDelegate, right after I've initialized all my view controllers and the main window.

When I put the app in the background, then send a message (using the Messages functionality) to my iOS device, I receive a push notification, and upon tapping on it, my app opens from the background and SupportKit opens and shows the messages, just like it's supposed to.

This is where things get funky, if I close SupportKit, I can see that my app has not loaded and all that's left behind is a white background. I can still use the SupportKit gesture, but my main app is now left in an unusable state.

Any ideas on this, or if you've ran in to the same issue yourselves?

Note: This might only be happening on iOS 8, as all my test devices are unfortunately running it.

Option to load chat links in UIWebView

It would be really helpful if the chat/conversation view would present a modal UIWebView that loaded the page for a tapped link from the chat. Being taken all the way out the app when the user taps a link breaks continuity and is problematic for our users who have Safari disabled.

Doesn't handle HTML links.

If you insert HTML links into your case response like:

image

What the user sees is:

image

SupportKit should honor the <a href=""> tags in responses as links.

Support dev & prod push keys & SK tokens

It would be very helpful to be able to have a dev SupportKit token that can be mapped to the dev push certificate. That way our beta and internal builds can still use SupportKit, while not disrupting production users.

Keyobard Dismiss!

Hello,

Is there a way to dismiss the keyboard with the return key? I don't want to use the back button on the navigation bar as it uses too much space.

Thank You!

Ability to pull screenshot on demand

It would be REALLY helpful if we could request a screenshot from a customer during a help chat. It's really frustrating to the customer to try describe what they're looking at sometimes and we're losing folks in that process. Optimally it would work something like:

1.) We would include text like [request_screenshot] in our reply.
2.) When the user is in the Conversation screen, that text would put SupportKit into "screenshot" mode which would tell the user to go to the screen they wish to share and shake the phone to transmit the screenshot.
3.) Show the conversation window after the screenshot has been taken and show an upload progress.
4.) Screenshot should be attached to an email and sent just like a chat.

Bump major version due to Xcode 7 requirement / ModelIO linker error

(This comment is copied from my notes in #54)

I would really appreciate it if the SupportKit SDK versioning bump up the major number rather than a patch version.

This is because SemVer mandates that you should bump the major version number for anything that will break backwards compatibility. If I had seen that SK upgraded from 2.x to 3.x I would have saved a lot of time trying to figure out what caused ModelIO to appear even though it was not mentioned anywhere in my project!

Title of "Messages" view overrides barTintColor appearance proxy.

We customize the appearance of our view controllers using appearance proxies:

[UINavigationBar appearance].tintColor = [UIColor whiteColor];
[UINavigationBar appearance].barTintColor = [UIColor wpmNavSectionColor];
[UINavigationBar appearance].titleTextAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor],
                                                         NSFontAttributeName: [UIFont fontWithName:@"Avenir-Light"
                                                                                              size:20.0]};

However, SupportKit's Messages view controller overrides the barTintColor while allowing the others through. Which means we get a bad combination of white on a gray background (see below). Please make it honor the barTintColor proxy.

image

Pod broken

For some reason the Pod broken for me entirely, with Xcode not being able to find SupportKit.h.
This ended up being a directory issue, as Cocoapods was trying to look for the headers in "${PODS_ROOT}/Headers/Public/SupportKit" but couldn't find them.

Thing is, for some reason SupportKit is placing the headers in a subfolder called SupportKit, meaning the path becomes "${PODS_ROOT}/Headers/Public/SupportKit/SupportKit" instead, which breaks automatic pod install/update.

Search bar disappears when Messages and an article are tapped

Summary

This was originally raised by internal testers on my current project, but I've since been able to reproduce it with the SupportKit Demo App.

Please note that the issue is very difficult to reproduce on the Simulator, because it requires multiple taps; the app will need to be installed on device.


Frequency

Every Time

Action

  1. Install and open application
  2. Tap the top left Account icon
  3. Tap Help
  4. Search any term e.g. "Test"
  5. Tap the article and the Messages button at the same time
  6. Tap Done on the messages prompt

Expected Result

The user should land on the article page with no UI issues

Actual Result

The top search bar disappears and is replaced by a grey top banner

Additional Information

iPhone 6 iOS 8.3
AT&T LTE

Can be consistently reproduced.


img_1600

Mixpanel is tracking our users?

I've noticed since adding SupportKit that our app is now transmitting tracking data to Mixpanel. Since we aren't using MixPanel does this mean SupportKit is tracking our users?

If so, that's a show stopper.

iOS 8 Preview

Perhaps you guys could release an iOS8 branch that can be integrated by people now, so we can find bugs and more importantly so that it can be built into our builds that are waiting to be submitted for pre-approval.

Ability to get a previously set property from a user

To be honest, I'm not sure if this is possible or not right now.
Let's say I set a property for a user with

[[SKTUser currentUser] addProperties:@{@"Country" : self.CountryTextField.text}];

(Setting the "Country" property as defined in "CountryTextField".)

If the user leaves the app and comes back to the settings view, I'd like to have the country already in the TextField, as he already set it.
That's possible with the firstname, lastname and email properties,

(self.FirstNameTextField.text = [SKTUser currentUser].firstName;)

but I don't think it's possible with the custom properties like country, at least I haven't found that feature yet...

Please tell me if I'm wrong.

Way to delete or clear conversation.

Is there a way to delete a conversation or clear it entirely? For example if a user logs out and a new one logs in I don't want the second one to see the support messages from the first one.

I've found the messages property in SKTConversation but it is readonly.

Carriage returns in responses cause corrupted formatting and lost messages.

If you respond to a user in Zendesk with:

Here is your user list:
[email protected]
[email protected]

What the user sees is:

Here is your user list:[email protected]@example.com

Even worse if you respond with:

The steps to correct your issue are:

1.) Do something
2.) Do something else

What the user sees is:

The steps to correct your issue are:

It tosses everything after the empty line.

Multiline responses are critical especially since this is IM over e-mail and there's a lot of latency. You want to be able to give the user a full answer, rather than breaking it into multiple Zendesk comments, so they get the entire response in one message.

Bitcode support

Working on an iOS 9 app with watchOS component and bitcode support is required. Here's the current error message when I attempt to enable bitcode for my app:

..Pods/SupportKit/SupportKit.framework/SupportKit(SKTLegacyAjaxEndpoint.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64

Spam Protection / Ability to block users

I was thinking about what would happen if a user writes a lot of messages into the SupportKit conversation and figured that doing so would be quite easy.

So I suggest that you implement a spam protection (Like only 10 messages per minute would be enough) so that can't happen.

Additionally, you could add the ability to block user tokens or even emails or names to prevent them from writing bad stuff to the supporter.

I know this is not the most important thing right now though.

CocoaLumberjack support to allow attaching logs to a support chat.

It would be very helpful to be able to make SupportKit a log target in CocoaLumberjack...like https://github.com/TechSmith/CrashlyticsLumberjack does for Crashlytics. That way when a user starts/continues a chat, the logs are uploaded to SupportKit and a link to them is inserted into the support messages sent to us (it would be really awesome if the link took us to the SupportKit portal where there was a log interface with searching). It would allow us to see exactly what's going on behind the scenes of the app to help our users more quickly and effectively.

Fails to build with Xcode 7.0.1 ("built without full bitcode")

SupportKit 2.10.2 compiled fine under Xcode 7.0.0 but fails under 7.0.1. Message is:

ld: bit code bundle could not be generated because '[...]/SupportKit/SupportKit.framework/SupportKit(SKTLegacyAjaxEndpoint.o)' was built without full bitcode.

Can't check right now whether it's only during Archive or at every build (downgraded to Xcode 7.0.0 because of this). I'm using Cocoapods.

Build error with latest pod update (iOS)

Hi,

I am getting a below build error with the latest pod 'SupportKit', I am not getting the build error when I am removing it from list of pods or specifying lower versions i.e. pod 'SupportKit', '2.10.0'

Please look into it and let me know if you need any more details

Xcode 6.4
Build Error:
ld: framework not found ModelIO for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.