Skip to content

Instantly share code, notes, and snippets.

@domadev812
Forked from ToeJamson/1.bash
Last active November 15, 2017 21:05
Show Gist options
  • Select an option

  • Save domadev812/f26ec5b751593caa06808ba268a4805e to your computer and use it in GitHub Desktop.

Select an option

Save domadev812/f26ec5b751593caa06808ba268a4805e to your computer and use it in GitHub Desktop.
Build an Android mobile Chat App with PhoneGap & Cordova
$ npm install -g cordova
$rootScope.$on(Pubnub.getPresenceEventNameFor($scope.selectedChannel), function (ngEvent, pnEvent) {
// apply presence event (join|leave) on users list
handlePresenceEvent(pnEvent);
});
pubnub.hereNow(
{
channels: [$scope.channel],
channelGroups : ["cg1"],
includeUUIDs: true,
includeState: true
},
function (status, response) {
// handle status, response
}
);
pubnub.history(
{
channel: $scope.channel,
reverse: true, // Setting to true will traverse the time line in reverse starting with the oldest message first.
count: 500, // how many items to fetch
stringifiedTimeToken: true, // false is the default
start: '123123123123', // start time token to fetch
end: '123123123133' // end timetoken to fetch
},
function (status, response) {
// handle status, response
}
);
$scope.publish = function() {
pubnub.publish(
{
message: {
such: "[" + $scope.userId + "] " + $scope.newMessage
},
channel: $scope.channel,
sendByPost: false, // true to send via post
storeInHistory: false, //override default storage options
meta: {
"cool": "meta"
} // publish extra meta with the request
},
function (status, response) {
// handle status, response
});
};
$ cordova platform add android
$ cordova build android
$ cordova emulate android
$ adb install {project_root}/platforms/android/ant-build/CordovaApp_debug.apk
$ brew update
$ brew install ant
export ANDROID_HOME={path/to/android/sdk}/
export ANDROID_TOOLS={path/to/android/sdk}/tools/
export ANDROID_PLATFORM_TOOLS={path/to/android/sdk}/platform-tools/
PATH=$PATH:$ANDROID_HOME:$ANDROID_TOOLS:$ANDROID_PLATFORM_TOOLS:.
$ cordova create [folder name] [com.example.appname] [application name]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection"
content="telephone=no" />
<meta name="msapplication-tap-highlight"
content="no" />
<meta name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
<!-- Required libraries for the chat -->
<script src="https://cdn.pubnub.com/sdk/javascript/pubnub.4.17.0.js"></script>
<script src="https://cdn.pubnub.com/pubnub-crypto.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
<script src="<location-of-PubNub-SDK>/pubnub-angular-4.0.2.min.js"></script>
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css">
<title>PubNub Angular Mobile Chat</title>
</head>
<body>
<div class="container" ng-app="PubNubAngularApp" ng-controller="ChatCtrl">
<br />
<h4>Online Users</h4>
<ul>
<li ng-repeat="user in users">{{user}}</li>
</ul>
<br />
<h4>Chat History ({{messages.length}})</h4>
<form ng-submit='publish()'>
<input type="text" ng-model='newMessage' />
<input type="submit" value="Send" />
</form>
<br />
<div class="well">
<ul>
<li ng-repeat="message in messages">{{message}}</li>
</ul>
</div>
</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/pubnubAngularApp.js"></script>
</body>
</html>
Pubnub.init({
publishKey: 'your pub key',
subscribeKey: 'your sub key'
});
pubnub.subscribe({
channel: 'hello_world'
});
$rootScope.$on(Pubnub.getMessageEventNameFor($scope.selectedChannel), function (ngEvent, envelope) {
$scope.$apply(function () {
// add message to the messages list
$scope.chatMessages.unshift(envelope.message);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment